Requirements
Resource use depends on monitor type, check frequency, retained heartbeats, and notification integrations. Start conservatively and watch memory and disk use after importing your monitors.
Install Uptime Kuma
1
Deploy Ubuntu 24.04
Deploy a server, select an appropriately sized plan, and choose Ubuntu 24.04.
2
Connect over SSH
Find the server IP address in the Arct Cloud console, then connect:See Connect via SSH if you need help with keys or usernames.
3
Point a dedicated domain to the server
Uptime Kuma does not support being served from a subdirectory. Create an
A record such as status.example.com pointing to the server’s public IPv4 address. Add an AAAA record only when IPv6 is configured. Confirm the record resolves:4
Install Docker Engine
Install Docker and the Compose plugin from Docker’s official Ubuntu repository:
5
Create the Compose project
The official
2 image tag stays on the current stable v2 release line. The local data directory persists the SQLite database, uploaded assets, and application settings. Port 3001 is bound only to loopback.6
Start Uptime Kuma and create the administrator privately
Start Uptime Kuma while it is still reachable only on server loopback:From a second terminal on your local computer, open an SSH tunnel and leave it running:Open
http://localhost:3001, create the administrator with a unique password, and enable two-factor authentication in Settings → Security. Leave authentication enabled unless a tested external access-control layer will protect the entire dashboard. Close the tunnel with Ctrl+C after the administrator and two-factor authentication are configured.7
Configure the public reverse proxy and HTTPS
Replace If UFW is enabled, allow SSH and the reverse proxy:After
status.example.com with your domain. The WebSocket headers are required by Uptime Kuma.https://status.example.com works, sign in with the secured administrator account. Open Settings → Reverse Proxy → HTTP Headers and enable Trust Proxy so forwarded client addresses are handled correctly.8
Verify the deployment
Ports, Probes, and Secrets
Only ports80 and 443 need inbound public access. Port 3001 remains on 127.0.0.1. Uptime Kuma normally initiates outbound checks, so a monitor’s destination port must be allowed outbound; you do not need to open that port inbound on the Uptime Kuma server.
Monitor URLs, credentials, notification tokens, two-factor settings, and history are stored under /opt/uptime-kuma/data. Protect backups as secrets. Do not mount the Docker socket merely to monitor public endpoints; access to that socket is effectively root access to the host.
For email notifications on Arct Cloud, use a provider’s authenticated submission endpoint on port 587. Outbound ports 25 and 465 are blocked by default.
Back Up and Restore
Uptime Kuma 2 removed the old JSON backup and restore feature. The project’s supported backup method is to stop Uptime Kuma and copy its complete data directory. Create a consistent archive:uid:gid and mode with the matching ownership-*.txt file before starting the container. If they match, start and verify Uptime Kuma:
Update Safely
The2 tag receives stable v2 updates. Before every update:
- Read the release notes, especially migration notes.
- Stop the service and take a complete data-directory backup as described above.
-
Record the current immutable image digest:
-
Pull and recreate the service:
- Verify the dashboard, one monitor, and one notification test before pruning the previous image.
data archive, and recreate the container with the previously recorded image digest. Never interrupt a documented major-version migration; restore the pre-migration backup if it fails.
Troubleshooting
Nginx returns 502 Bad Gateway
Nginx returns 502 Bad Gateway
Run
sudo docker compose -f /opt/uptime-kuma/compose.yaml ps, inspect sudo docker logs --tail 100 uptime-kuma, and confirm curl -I http://127.0.0.1:3001 succeeds.The dashboard says it cannot connect to the socket server
The dashboard says it cannot connect to the socket server
Confirm the Nginx configuration includes
proxy_http_version 1.1 plus the Upgrade and Connection headers. If a CDN is in front, enable WebSocket support there too.The container restarts or reports SQLite locking errors
The container restarts or reports SQLite locking errors
Confirm
/opt/uptime-kuma/data is on local storage, not NFS. Check free space with df -h /opt/uptime-kuma and memory with free -h, then inspect the container logs before restarting it.Email notification tests fail
Email notification tests fail
Use authenticated SMTP submission on port
587, verify DNS resolution and provider credentials, and check whether the provider requires a specific sender address. Ports 25 and 465 are blocked by default on Arct Cloud.Official Resources
Uptime Kuma Installation
Official Docker, Compose, storage, and reverse-proxy guidance.
Uptime Kuma on GitHub
Source code, security policy, and issue tracker.
Uptime Kuma Releases
Stable releases, breaking changes, and migration notes.
Uptime Kuma is developed by its open-source maintainers. Arct Cloud is an independent infrastructure provider and is not affiliated with, sponsored by, or endorsed by the Uptime Kuma project.