keepcalculator

06 Numbers and Powers

Set Up a Public Status Page with Uptime Kuma

Card No. 06·1980 · Updated · Standard formula, shown below

This guide walks you through setting up a public status page using Uptime Kuma, a self-hosted monitoring tool. You’ll learn how to install the application, add monitors for your services, and publish a clean status page that your users can visit to see real-time uptime and incident history. No prior experience with self-hosting is required, but basic comfort with the command line and Docker is helpful.

What You’ll Need

  • A server or VPS with a public IP address (e.g., DigitalOcean, Linode, AWS EC2, or a Raspberry Pi at home).
  • Docker and Docker Compose installed on that server (Uptime Kuma is easiest to run as a container).
  • A domain name (optional but recommended) for a clean URL like status.yourdomain.com.
  • Access to your DNS provider to set an A record or CNAME.
  • Basic comfort with SSH and editing files on the server.

Step-by-Step

  1. Install Docker and Docker Compose (if not already installed). On Ubuntu/Debian, run:
    sudo apt update
    sudo apt install docker.io docker-compose-v2
    sudo systemctl enable --now docker

    Verify with docker --version and docker compose version.

  2. Create a directory for Uptime Kuma:
    mkdir ~/uptime-kuma
    cd ~/uptime-kuma
  3. Create a docker-compose.yml file with the following content:
    services:
      uptime-kuma:
        image: louislam/uptime-kuma:1
        container_name: uptime-kuma
        ports:
          - "3001:3001"
        volumes:
          - ./data:/app/data
        restart: unless-stopped
  4. Start the container:
    docker compose up -d

    Wait a few seconds, then check it’s running with docker ps.

  5. Access the web interface: Open http://your-server-ip:3001 in a browser. You’ll see the initial setup screen.
  6. Create your admin account: Enter a username and a strong password, then click Create. You’ll be logged in automatically.
  7. Add a monitor: Click Add New Monitor. Choose the monitor type (e.g., HTTP(s), Ping, TCP Port). Fill in the details:
    • Friendly Name: e.g., “Main Website”
    • URL: e.g., https://example.com
    • Interval: how often to check (default 60s is fine).
    • Optionally set a Retries count to avoid false alerts.

    Click Save.

  8. Add more monitors for each service you want to track (API, database, etc.).
  9. Create a status page: In the left sidebar, click Status Pages, then New Status Page. Give it a title (e.g., “System Status”).
  10. Add monitors to the page: In the status page editor, under Monitors, select the monitors you created and add them to the page. You can also add a description and a custom logo.
  11. Publish the page: Scroll down and click Save. The page will be available at a URL like http://your-server-ip:3001/status/your-page-slug.
  12. Set up a domain (optional but recommended): Create an A record (or CNAME) pointing status.yourdomain.com to your server’s IP. Then in Uptime Kuma, go to Settings > General and set the Site URL to https://status.yourdomain.com. This ensures links and notifications use the correct domain.
  13. Enable HTTPS with a reverse proxy (recommended for security): Use Nginx or Caddy to proxy requests to localhost:3001. For example, with Caddy, add to your Caddyfile:
    status.yourdomain.com {
        reverse_proxy localhost:3001
    }

    Caddy automatically obtains a Let’s Encrypt SSL certificate.

  14. Configure notifications (optional): Go to Notifications in the sidebar and add a webhook, email, or Telegram bot to get alerts when a monitor goes down.

Common Mistakes

  • Forgetting to open the firewall port: If you can’t access the web interface, check that port 3001 is open (or 80/443 if using a reverse proxy). On many VPS providers, you need to add a rule in the cloud firewall.
  • Using the default password: Always set a strong admin password during setup.
  • Not setting a site URL: If you access Uptime Kuma via IP but your status page links use the domain, you’ll get mixed content errors. Set the Site URL correctly.
  • Exposing the admin panel publicly: The status page is public, but the admin interface should be restricted. Use a reverse proxy with basic auth or a VPN to protect /admin.
  • Monitoring localhost from the same server: If you monitor a service on the same machine, use the server’s internal IP or localhost – but note that if the server goes down, the monitor will also be down, so it won’t alert you about external outages.

Tips

  • Use a subdomain: A dedicated subdomain like status.example.com is more professional and easier to remember than an IP with a port.
  • Set appropriate check intervals: For critical services, use 30 seconds; for less critical, 5 minutes is fine to reduce load.
  • Add a maintenance window: If you plan to take a service down for maintenance, you can set a maintenance window in Uptime Kuma to avoid false alerts.
  • Back up your data: The ./data folder contains all settings and history. Back it up regularly, especially before upgrading.
  • Use Docker volumes: Always mount a volume for data persistence; otherwise you’ll lose everything when the container is recreated.
  • Monitor from multiple locations: Uptime Kuma supports multiple status pages but only one server. For true redundancy, consider running two instances and combining them, or use a third-party service.

Troubleshooting

  • Can’t access the web interface: Check that the container is running (docker ps), the port is mapped (docker port uptime-kuma), and your firewall allows traffic on that port. Try curl http://localhost:3001 on the server.
  • Status page shows “Cannot connect”: If the monitor is down, check the monitor’s logs (click on the monitor, then “Logs”). Ensure the URL is correct and reachable from the server. If you’re monitoring a service on the same server, use the server’s public IP instead of localhost.
  • SSL certificate not working: If using a reverse proxy, make sure DNS points to the server and that port 80/443 is open. For Caddy, check logs with journalctl -u caddy.
  • Data loss after upgrade: If you lose data after updating the container, you likely didn’t mount a volume. Restore from a backup of the data folder.
  • Notifications not sending: Check the notification settings and test with the “Test” button. For email, ensure you use an app-specific password if using Gmail.
  • Status page is slow to load: If you have many monitors, the page may take time to fetch all data. Reduce the number of monitors on a single page, or use the “Group” feature to organize them.

Frequently Asked Questions

Is Uptime Kuma free to use?

Yes, Uptime Kuma is open-source and free. You only pay for the server where you host it.

Can I monitor services that are not on the public internet?

Yes, you can monitor internal services by using their LAN IP or hostname, but the monitor will only work when Uptime Kuma can reach that address. For internal-only monitoring, place Uptime Kuma on the same network.

How do I embed the status page on my website?

You can iframe the status page URL. Go to the status page settings and enable “Embed” to remove the navigation bar for a cleaner look.

Can I have multiple status pages?

Yes, you can create as many status pages as you need, each with different monitors. This is useful for separating internal and public services.

Does Uptime Kuma support authentication for the status page?

Yes, you can set a password for a status page in its settings. However, if you want a public page, leave it open.

How do I update Uptime Kuma?

Pull the latest image and recreate the container: docker compose pull then docker compose up -d. Always back up the data folder first.

Related

Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.

More cards in this drawer

The whole Numbers and Powers drawer →