- 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
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
- Created system user:
uptime-kuma - Cloned official repository to
/opt/uptime-kuma - Ran
npm run setup(version 2.1.0) - Created startup script at
/opt/uptime-kuma/start.sh - 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