Skip to main content
Arct Cloud provides an unmanaged Linux VPS. Uptime Kuma is not preinstalled or managed by Arct Cloud; you are responsible for installation, monitor configuration, security, backups, and updates. This guide installs the stable Uptime Kuma 2 major channel on Ubuntu 24.04 using the project’s official Docker Compose method.

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.
Keep /opt/uptime-kuma/data on the VPS’s local NVMe filesystem. NFS and other filesystems without reliable POSIX locks can corrupt Uptime Kuma’s SQLite database.
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 status.example.com with your domain. The WebSocket headers are required by Uptime Kuma.
If UFW is enabled, allow SSH and the reverse proxy:
After 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

Add a test HTTP monitor and configure a notification channel. Trigger its Test action before depending on it for alerts.

Ports, Probes, and Secrets

Only ports 80 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:
Copy the archive and matching ownership file to encrypted storage outside the VPS and test them periodically. To restore, use the same Uptime Kuma major version, stop the service, preserve the current directory, and extract the selected archive with its ACLs, extended attributes, and numeric ownership:
Compare the restored uid:gid and mode with the matching ownership-*.txt file before starting the container. If they match, start and verify Uptime Kuma:
The renamed directory makes the restore reversible. Confirm monitors, history, users, and notification settings before removing it.

Update Safely

The 2 tag receives stable v2 updates. Before every update:
  1. Read the release notes, especially migration notes.
  2. Stop the service and take a complete data-directory backup as described above.
  3. Record the current immutable image digest:
  4. Pull and recreate the service:
  5. Verify the dashboard, one monitor, and one notification test before pruning the previous image.
Database migrations can make an in-place downgrade unsafe. For rollback, stop the service, restore the pre-update 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

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.
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.
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.
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.