Looking Glass is a powerful network-related utility written in PHP and Bootstrap 5. It can run network commands directly in the browser. The setup is pretty straightforward if you follow the documentation. However, in this guide, we will install it manually using Apache as the web server and obtain an SSL certificate from Let’s Encrypt. So, read on to learn how to install Looking Glass on AlmaLinux 9.
Without further ado, let’s get started.
Install the required tools
We will install all the required tools and libraries needed for this setup, including PHP and Apache.
dnf install mtr traceroute httpd mod_ssl php-fpm php-posix
Start and enable PHP-FPM and Apache at boot time.
systemctl start httpd
systemctl start php-fpm
systemctl enable httpd
systemctl enable php-fpm
Add firewall rules for HTTP and HTTPS:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
As suggested disable SELINUX.
vim /etc/selinux/config
And set SELINUX=disabled
.
Create symlinks for MTR and it’s helpers:
ln -s /usr/sbin/mtr /usr/bin/mtr
ln -s /usr/sbin/mtr-packet /usr/bin/mtr-packet
Download Looking Glass
We will now download the latest version of Looking Glass as an archive and unzip it.
cd /var/www/
wget https://github.com/hybula/lookingglass/archive/refs/heads/main.zip
unzip main.zip
mv lookingglass-main/* /var/www/html
It is advisable to create some dummy files for download and set up the configuration according to our needs.
mv /var/www/html/config.dist.php /var/www/html/config.php
mkdir /var/www/html/files
truncate -s 100M /var/www/html/files/dummy-100M.bin
truncate -s 1G /var/www/html/files/dummy-1G.bin
truncate -s 10G /var/www/html/files/dummy-10G.bin
chown -R apache:apache /var/www/html
iperf3 (optional)
This is not required, but if you want to install it, here you go.
dnf install iperf3 -y
iperf3 -sD -p 5201
To automatically start iperf3 when the system boots up, create a systemd unit file.
vim /etc/systemd/system/iperf3.service
Add the following in it:
[Unit]
Description=iperf3 server
After=syslog.target network.target auditd.service
[Service]
ExecStart=/usr/bin/iperf3 -s
[Install]
WantedBy=multi-user.target
Start and enable it:
systemctl start iperf3
systemctl enable iperf3
SSL and Apache virtual host
Add the EPEL repository to the system for the Certbot package.
dnf install epel-release
dnf install certbot
Create a virtual host file based on your domain.
vim /etc/httpd/conf.d/DOMAIN.COM.conf
Add the following in it:
<VirtualHost *:80>
ServerName DOMAIN.COM
ServerAlias DOMAIN.COM
DocumentRoot /var/www/html
ErrorLog /var/log/httpd/DOMAIN.COM_error.log
CustomLog /var/log/httpd/DOMAIN.COM_access.log combined
</VirtualHost>
Check the configuration and restart Apache.
apachectl configtest
systemctl restart httpd
Once the host is set up, it’s time to get an SSL certificate from Let’s Encrypt.
certbot certonly --webroot -w /var/www/html -d DOMAIN.COM
Note down the paths to the certificate files and open the virtual host file to add the port 443 block.
<VirtualHost *:443>
ServerName DOMAIN.COM
DocumentRoot /var/www/html
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "0"
Header always set X-Permitted-Cross-Domain-Policies "none"
Header always set Referrer-Policy "no-referrer-when-downgrade"
Header always set Permissions-Policy "camera=(self), geolocation=(self), microphone=(self)"
Protocols h2 http/1.1
<Directory "/var/www/html">
AllowOverride All
Options -Indexes +FollowSymLinks
</Directory>
ErrorLog /var/log/httpd/DOMAIN.COM_ssl_error.log
SSLEngine on
SSLCertificateKeyFile /etc/letsencrypt/live/DOMAIN.COM/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/DOMAIN.COM/fullchain.pem
</VirtualHost>
apachectl configtest
systemctl restart httpd
You can test the URL with HTTPS. If it works, we can now add redirection from HTTP to HTTPS in the port 80 block.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
apachectl configtest
systemctl restart httpd
To auto-renew the SSL certificate, add a crontab entry by running crontab -e
.
30 04 * * * certbot renew
At this point, reboot the server to test all configurations and settings, such as the iperf3 daemon.
The main configuration file is located at /var/www/html/config.php
.