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
This commit is contained in:
2026-02-09 01:29:11 -06:00
parent eb0593e7a8
commit a8e19df337
2 changed files with 274 additions and 12 deletions

View File

@@ -46,19 +46,20 @@
- Total downtime: ~5 minutes
### **Service 2/5: Uptime Kuma** (NEXT PRIORITY)
- [ ] Install Uptime Kuma on TX1
- [ ] Configure monitoring targets:
- All 15 game servers (NC1 + TX1)
- Panel (45.94.168.138)
- Billing (38.68.14.188)
- Ghost (64.50.188.14)
- Command Center
- Breezehost status page (if available)
- [ ] Set up DNS: status.firefrostgaming.com → TX1 IP
- [ ] Configure Discord webhook for status updates (future)
- [ ] Test public access
### Service 2: Uptime Kuma (status.firefrostgaming.com) - COMPLETED
**Target:** February 9, 2026
**Status:** ✅ DEPLOYED
**Completion Date:** February 9, 2026
**Changelog:**
- Uptime Kuma 2.1.0 installed on TX1 Dallas
- 6 monitors configured and operational
- Discord webhook notifications to #network-status
- SSL certificate installed (expires 2026-05-10)
- NC1 excluded due to datacenter routing issue (future: push monitoring)
- Documentation: docs/uptime-kuma-deployment.md
xy
### **Service 3/5: BookStack**
- [ ] Install BookStack on TX1
- [ ] Initial configuration (users, permissions)

View File

@@ -0,0 +1,261 @@
# 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:**
```bash
#!/bin/bash
cd /opt/uptime-kuma
node server/server.js
```
## Nginx Configuration
**Config File:** `/etc/nginx/sites-available/uptime-kuma`
```nginx
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:**
```bash
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:**
```bash
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**