16: Uptime Kuma - Uptime Monitoring & Status Pages Uptime Kuma is a beautiful, self-hosted monitoring tool that watches your websites, servers, and services 24/7. It tells you immediately when something goes down, shows you uptime statistics, and can even create public status pages (like status.github.com) to show your users that everything is working. For advanced features, API documentation, and customization options, see the official Uptime Kuma documentation . Why Uptime Kuma? ✅ 24/7 monitoring - Know immediately when something breaks ✅ Beautiful dashboard - See all your services at a glance with colorful graphs ✅ 90+ notification options - Get alerts via Discord, Slack, Email, Telegram, and many more ✅ Public status pages - Create beautiful status pages to share with your users ✅ Docker monitoring - Monitor your Docker containers automatically ✅ Multiple monitor types - Websites, APIs, ports, DNS, and more ✅ Uptime statistics - See how reliable your services are over time ✅ Free and open source - No subscription fees, runs on your server Prerequisites ✅ Docker running (from Chapter 3) ✅ Optional: Traefik installed (from Chapter 4) for HTTPS access with a domain ✅ Optional: Subdomain (from Chapter 4.5), e.g., status.yourdomain.com Note: Uptime Kuma works great with Traefik and a domain name. Having a friendly URL like status.yourdomain.com makes it easy to access your monitoring dashboard and share status pages. Step 1: Start Infinity Tools sudo infinity-tools Step 2: Install Uptime Kuma Go to 📱 APPLICATIONS Select Uptime Kuma Choose Install Uptime Kuma Using the Infinity Tools GUI Use ↑/↓ to move, Enter to select, Esc to go back Look for the turquoise cursor indicating the current selection Each screen shows a short description at the top explaining what's needed Step 2.1: Choose SSL Mode You'll see two options. Here's what each means: Traefik (recommended) What it is: Uses your domain name with a trusted HTTPS certificate from Let's Encrypt What you need: A subdomain (e.g., status.yourdomain.com ) pointing to your server (see Chapter 4.5) What you get: Professional URL like https://status.yourdomain.com with trusted SSL Pick this if: You want secure, easy access with a domain name (recommended) Standalone HTTP What it is: Uses HTTP with direct port access (no SSL) What you need: Just a free port (default: 3001) What you get: URL like http://SERVER_IP:3001 Pick this if: You're just testing or only using it on your local network Simple rule of thumb: Use Traefik if you have a domain and want secure access. Use Standalone HTTP only for testing or private use. Step 2.2: If You Choose Traefik Enter your subdomain, e.g., status.yourdomain.com Ensure the subdomain's DNS A record points to your server (see Chapter 4.5) Infinity Tools will configure HTTPS automatically via Let's Encrypt After install: Your Uptime Kuma will be available at https://status.yourdomain.com Step 2.3: If You Choose Standalone Pick a port (default: 3001) You'll access Uptime Kuma via http://SERVER_IP:3001 Step 2.4: Docker Container Monitoring (Optional) You'll be asked if you want to enable Docker container monitoring: Yes What it does: Uptime Kuma can monitor your Docker containers automatically What you get: Alerts when containers stop, health status monitoring Pick this if: You want to monitor your Docker containers (recommended if you use Docker) No What it does: Only monitors websites, APIs, and ports (not Docker containers) Pick this if: You don't use Docker or don't need container monitoring Step 2.5: Timezone (Optional) You can set your timezone for monitoring logs and graphs. Examples: America/New_York Europe/London Asia/Tokyo Leave empty for UTC (default). What Happens During Installation Uptime Kuma container is created Data directory is set up at /opt/speedbits/uptime-kuma Optional domain + Traefik HTTPS routing (if using Traefik) Optional Docker socket access (if Docker monitoring enabled) Service starts and becomes accessible Step 3: Access Uptime Kuma If Using Traefik Wait 30-60 seconds for SSL certificate generation Open https://status.yourdomain.com in your browser You'll see the Uptime Kuma setup wizard If Using Standalone Open http://SERVER_IP:3001 in your browser You'll see the Uptime Kuma setup wizard Step 4: Create Your Admin Account ⚠️ CRITICAL: Uptime Kuma requires you to create admin credentials on your FIRST login. There is NO default password! Setup Steps You'll see: "Create your admin account" Enter a username (choose any username you like) Enter a password: Minimum: 8 characters Recommended: 12+ characters Best: 20+ characters (use a password manager!) ⚠️ WRITE DOWN YOUR CREDENTIALS IMMEDIATELY! This is your ONLY chance to set the initial password There is NO "forgot password" on first setup! Use a password manager (like Vaultwarden from Chapter 7) to store it securely Click "Create" ✅ Done! You'll see the monitoring dashboard If You Forget Your Password Don't worry! You can reset it using the command line: Run: docker exec -it uptime-kuma npm run reset-password Enter your username Enter a new password Log in with your new password Step 5: Add Your First Monitor Now that you're logged in, let's start monitoring something! Adding a Monitor Click "Add New Monitor" (big button on the dashboard) Choose monitor type: HTTP(s) - Monitor websites and APIs TCP Port - Monitor if a port is open (SSH, databases, etc.) Ping - Check if a server responds Docker Container - Monitor Docker containers (if enabled) DNS - Check DNS records And more! Enter the URL or IP address to monitor Set check interval (default: 60 seconds - how often to check) Click "Save" Example: Monitor Your Website Type: HTTP(s) URL: https://yourdomain.com Check interval: 60 seconds Click "Save" Uptime Kuma will now check your website every 60 seconds and show you if it's up or down! Step 6: Set Up Notifications To get alerts when something goes down, you need to configure notifications. Setting Up Notifications Go to: Settings → Notifications Click "Setup Notification" Choose a provider: Discord - Get alerts in Discord Slack - Get alerts in Slack Telegram - Get alerts via Telegram Email - Get alerts via email Apprise - Use Apprise for 80+ services (if you have Apprise installed) And 80+ more! Follow the setup instructions for your chosen provider Test the notification Click "Save" Using Apprise (If Installed) If you have Apprise installed (Chapter 5), you can use it for notifications: Type: Apprise (Self-hosted) URL: http://apprise:8000/notify/{YOUR-KEY} This lets you use all 80+ Apprise notification services! Step 7: Create a Status Page (Optional) Status pages let you show your users that your services are working. They're public (no login required) and look professional. Creating a Status Page Go to: Status Pages Click "New Status Page" Enter a name, e.g., "My Services Status" Choose which monitors to display publicly Customize the appearance (colors, logo, etc.) Click "Save" Share the public URL with your users! What You Can Monitor Monitor Types 🌐 HTTP(s) websites - Check if websites are online 🔌 TCP ports - Check if ports are open (SSH, databases, etc.) 🏓 Ping (ICMP) - Check if servers respond 📝 DNS records - Check DNS configuration 🐳 Docker containers - Monitor container health (if enabled) 🔍 Keyword detection - Check if a page contains specific text 📧 SMTP email servers - Check if email servers work 💬 gRPC services - Monitor gRPC APIs What You'll See 📊 Dashboard - All monitors at a glance with colorful status indicators 📈 Uptime graphs - See uptime percentages over time ⏱️ Response times - See how fast your services respond 📋 Incident history - See when things went down and came back up 🔔 Alerts - Get notified immediately when something breaks Security Recommendations ✅ Use Traefik mode - Provides trusted SSL certificates ✅ Strong password - Use a password manager to generate strong passwords ✅ Enable 2FA - Go to Settings → Security → Two-Factor Auth ✅ Regular backups - Uptime Kuma data is stored in /opt/speedbits/uptime-kuma ✅ Protect admin panel - Monitoring data can be sensitive, keep it secure! ✅ Use status pages - Share public status pages instead of giving access to the admin panel Troubleshooting Can't Access Uptime Kuma Traefik mode: Wait 30-60 seconds after installation for SSL certificate generation Check containers: Run docker ps | grep uptime-kuma to see if container is running Check logs: Run docker logs uptime-kuma to see error messages Can't Create Admin Account Make sure you're accessing Uptime Kuma for the first time (no account exists yet) Check container logs: docker logs uptime-kuma Try resetting: docker restart uptime-kuma Monitors Not Working Check that the URL or IP address is correct Verify the service is actually running Check firewall rules (ports might be blocked) Look at monitor details for error messages Notifications Not Sending Test the notification in Settings → Notifications Check notification provider settings (Discord webhook, email SMTP, etc.) Verify network connectivity from the container Where to Find Uptime Kuma After Install On the finish screen, Infinity Tools prints the access URL You can also see it in 📊 STATUS & HEALTH → STATUS Check the installation directory: /opt/speedbits/uptime-kuma Data stored in: /opt/speedbits/uptime-kuma/data Backing Up Your Monitoring Data Your Uptime Kuma data is stored in: Data directory: /opt/speedbits/uptime-kuma/data To backup: cd /opt/speedbits tar czf uptime-kuma-backup.tar.gz uptime-kuma/ To restore: Extract the backup and restart the Uptime Kuma container. Or use Uptime Kuma's built-in backup: Go to Settings → Backup → Download Backup You're Ready! Uptime Kuma is now installed and ready to monitor your services! Remember: 🔐 Create your admin account on first login (no default password!) 📊 Add monitors to start tracking uptime 🔔 Set up notifications to get alerts 📄 Create status pages to share with users 🐳 Enable Docker monitoring if you use Docker containers Next steps: Add monitors for your websites and services, configure notifications, and create a status page. Uptime Kuma will help you keep everything running smoothly!