Files
firefrost-operations-manual/docs/uptime-kuma-deployment.md
Michael Krause a8e19df337 Add Uptime Kuma deployment documentation - Service 2/5 complete
- Deployed Uptime Kuma v2.1.0 on TX1 Dallas
- Configured 6 infrastructure monitors (all operational)
- Integrated Discord notifications to #network-status
- SSL certificate installed and auto-renewal configured
- Updated TASKS.md to mark Service 2/5 complete
- Documented issues, resolutions, and maintenance procedures
2026-02-09 01:29:11 -06:00

6.3 KiB

Uptime Kuma Deployment - Service 2/5

Service: Uptime Kuma (Infrastructure Monitoring)
Domain: status.firefrostgaming.com
Location: TX1 Dallas (38.68.14.26)
Deployed: February 9, 2026
Status: OPERATIONAL


Service Overview

Purpose: Real-time infrastructure monitoring with Discord notifications

Monitors Active (6 total):

  • TX1 Dallas (Ping - <1ms)
  • Pterodactyl Panel (Ping - 41ms)
  • Gitea - Git Repository (HTTPS)
  • Command Center (Ping)
  • Paymenter Billing (Ping)
  • Ghost CMS (Ping)

NC1 Charlotte: Excluded due to network routing issue between TX1/NC1 datacenters


Installation Details

Version: 2.1.0
Database: SQLite
Internal Port: 3001
External Access: HTTPS via Nginx reverse proxy
SSL Certificate: Let's Encrypt (expires 2026-05-10)

Technical Installation

Prerequisites Installed

  • Node.js 20.20.0 (via NodeSource)
  • npm 10.8.2
  • Nginx 1.24.0 (already present)

Installation Steps

  1. Created system user: uptime-kuma
  2. Cloned official repository to /opt/uptime-kuma
  3. Ran npm run setup (version 2.1.0)
  4. Created startup script at /opt/uptime-kuma/start.sh
  5. Configured systemd service: /etc/systemd/system/uptime-kuma.service

Service Configuration

SystemD Unit:

  • User: uptime-kuma
  • Working Directory: /opt/uptime-kuma
  • ExecStart: /opt/uptime-kuma/start.sh
  • Restart: always (10 second delay)

Startup Script:

#!/bin/bash
cd /opt/uptime-kuma
node server/server.js

Nginx Configuration

Config File: /etc/nginx/sites-available/uptime-kuma

server {
    listen 80;
    server_name status.firefrostgaming.com;

    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;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

SSL: Configured via Certbot (auto-renewal enabled)


Discord Integration

Notification Channel: #network-status (in Support category)
Webhook URL: Configured (private)
Bot Display Name: Uptime Kuma
Friendly Name: Firefrost Network Status

Applied To: All 6 active monitors
Default Enabled: Yes (future monitors auto-notify)

Issues Encountered & Resolutions

Issue 1: Missing dist/index.html

Problem: Initial npm install uptime-kuma didn't build frontend files
Error: Cannot find 'dist/index.html', did you install correctly?
Solution: Used proper installation method - git clone + npm run setup
Lesson: Always use official installation method, not just npm install

Issue 2: NC1 Charlotte Unreachable

Problem: TX1 cannot reach NC1 (216.239.104.130) - "Network is unreachable"
Diagnosis: No route between TX1 Dallas and NC1 Charlotte datacenters
Attempted: Ping monitoring, TCP port 25565 monitoring
Resolution: Excluded NC1 from monitoring for now
Future Fix: Consider push monitoring or external monitoring point

Issue 3: Start Script Deleted During Cleanup

Problem: Systemd service failed after cleaning /opt/uptime-kuma
Cause: start.sh removed when clearing directory for git clone
Solution: Recreated start.sh after successful git clone
Lesson: Document all custom scripts before cleanup operations


Verification Results

Service Status:

● uptime-kuma.service - Uptime Kuma - Self-hosted monitoring tool
     Active: active (running)
     Uptime: 100%

Port Check:

ss -tlnp | grep 3001
LISTEN *:3001 (node process)

HTTPS Access:

curl -I https://status.firefrostgaming.com
HTTP/1.1 302 Found (redirects to setup - expected)

DNS Resolution:

dig status.firefrostgaming.com +short
38.68.14.26

Next Steps

Immediate:

  • Monitor Discord notifications for false positives
  • Verify alert timing and message formatting
  • Test monitor recovery notifications

Short-term:

  • Add monitoring for individual game servers (15 total)
  • Configure status page for public visibility
  • Set up maintenance mode notifications

Long-term:

  • Implement NC1 monitoring solution (push or external)
  • Add custom monitors for specific services (MySQL, Redis if deployed)
  • Configure notification escalation rules

Admin Account

Username: Created during web setup
Dashboard: https://status.firefrostgaming.com
Database: /opt/uptime-kuma/data/kuma.db (SQLite)


Maintenance

Backup Strategy:

  • SQLite database: /opt/uptime-kuma/data/kuma.db
  • Configuration: Monitor definitions stored in database
  • Frequency: Daily (to be implemented with Phase 0.5 backup system)

Updates:

su - uptime-kuma
cd /opt/uptime-kuma
git pull
npm ci --omit dev
systemctl restart uptime-kuma

Revision History

Version Date Author Changes
1.0 2026-02-09 Michael Initial deployment. Service 2/5 complete.

END OF DOCUMENT

Next Steps

Immediate:

  • Monitor Discord notifications for false positives
  • Verify alert timing and message formatting
  • Test monitor recovery notifications

Short-term:

  • Add monitoring for individual game servers (15 total)
  • Configure status page for public visibility
  • Set up maintenance mode notifications

Long-term:

  • Implement NC1 monitoring solution (push or external)
  • Add custom monitors for specific services (MySQL, Redis if deployed)
  • Configure notification escalation rules

Admin Account

Username: Created during web setup
Dashboard: https://status.firefrostgaming.com
Database: /opt/uptime-kuma/data/kuma.db (SQLite)


Maintenance

Backup Strategy:

  • SQLite database: /opt/uptime-kuma/data/kuma.db
  • Configuration: Monitor definitions stored in database
  • Frequency: Daily (to be implemented with Phase 0.5 backup system)

Updates:

su - uptime-kuma
cd /opt/uptime-kuma
git pull
npm ci --omit dev
systemctl restart uptime-kuma

Revision History

Version Date Author Changes
1.0 2026-02-09 Michael Initial deployment. Service 2/5 complete.

END OF DOCUMENT