Uptime Kuma *********** To install for user `monitor`, use these instructions modified from the non-docker installation from https://github.com/louislam/uptime-kuma. Change to the monitor user:: sudo -u monitor -i Install the prebuild binaries of node.js https://nodejs.org/en/download/prebuilt-binaries :: wget https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-x64.tar.xz tar -xf node-v22.11.0-linux-x64.tar.xz Add /home/monitor/node-v22.11.0-linux-x64/bin to the path for user monitor add the following line to .bashrc:: export $HOME/node-v22.11.0-linux-x64/bin:$PATH Reread the .bashrc source ~/.bashrc Install uptime kuna:: git clone https://github.com/louislam/uptime-kuma.git cd uptime-kuma npm run setup npm install pm2 -g && pm2 install pm2-logrotate pm2 start server/server.js --name uptime-kuma pm2 save && pm2 startup Exit from the monitor user back to your user and run the command output by pm2 startup:: sudo env PATH=$PATH:/home/monitor/node-v22.11.0-linux-x64/bin /home/monitor/node-v22.11.0-linux-x64/lib/node_modules/pm2/bin/pm2 startup systemd -u monitor --hp /home/monitor Nginx should be added to the salt states and applied. At present include configuration file is not setup (Note: when using nginx as reverse proxy for uptime kuna it cannot be in a sub directory). This is the first attempt at a salt template:: server { {%- if interface_ips %} {%- for interface_ip in interface_ips %} listen {{ interface_ip }}:80; {%- endfor %} {%- else %} listen 80; {%- endif %} server_name {{ domain }} {{ redirect }}; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; return 301 https://{{ domain }}$request_uri; access_log /var/log/nginx/{{ domain }}-access.log timed; error_log /var/log/nginx/{{ domain }}-error.log; } server { client_max_body_size 149m; server_name {{ domain }}; {% if ssl -%} {%- if interface_ips %} {%- for interface_ip in interface_ips %} listen {{ interface_ip }}:443 ssl http2; {%- endfor %} {%- else %} listen 443 ssl http2; {%- endif %} {%- include 'nginx/_ssl.conf' -%} {% else -%} {%- if interface_ips %} {%- for interface_ip in interface_ips %} listen {{ interface_ip }}:80; {%- endfor %} {%- else %} listen 80; {%- endif %} {% endif %} {% include 'nginx/_headers.conf' %} location / { proxy_pass http://localhost:3001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } access_log /var/log/nginx/{{ domain }}-access.log timed; error_log /var/log/nginx/{{ domain }}-error.log; } With the DO API key installed, run:: init-letsencrypt --do-dns [] Reload the nginx configuration using:: sudo nginx -t sudo systemctl reload nginx If not using a public ip, to access add the fqdn to your `/etc/hosts` table and browse to the server address. On first login the you will be prompted to create a user name and password - there is no user management so this is the only user that can be created.