Skip to main content

Enable HTTPS LibreNMS Ubuntu 24.04

Create self-signed SSL certificate

sudo mkdir -p /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 \
  -keyout /etc/nginx/ssl/librenms.key \
  -out /etc/nginx/ssl/librenms.crt

Edit you exiting NGINX configuration

nano /etc/nginx/conf.d/librenms.conf
# Redirect all HTTP → HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name librenms.domain.com;
    return 301 https://librenms.domain.com$request_uri;
}

# Main HTTPS server
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name librenms.domain.com;

    ssl_certificate     /etc/nginx/ssl/librenms.crt;
    ssl_certificate_key /etc/nginx/ssl/librenms.key;

    root /opt/librenms/html;
    index index.php;

    access_log /opt/librenms/logs/access_log;
    error_log  /opt/librenms/logs/error_log;

    charset utf-8;
    gzip on;
    gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;

    # Main app
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # API v0
    location /api/v0 {
        try_files $uri $uri/ /api_v0.php?$query_string;
    }

    # PHP-FPM
    location ~ \.php$ {
        include fastcgi.conf;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php-fpm-librenms.sock;

        # Force HTTPS inside PHP
        fastcgi_param HTTPS on;
        fastcgi_param HTTP_X_FORWARDED_PROTO https;
        fastcgi_param HTTP_X_FORWARDED_PORT 443;
    }

    # Security
    location ~ /\.ht {
        deny all;
    }
}

Test & reload NGINX

sudo nginx -t
sudo systemctl reload nginx

Set LibreNMS to use HTTPS

sudo nano /opt/librenms/.env

Set APP_URL with your domain name

  APP_URL=https://librenms.domain.com

Clear cache, but login as librenms user

su - librenms
php artisan config:clear
php artisan cache:clear

Done, Visit LibreNMS over HTTPS