262 lines
6.3 KiB
Markdown
262 lines
6.3 KiB
Markdown
# 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**
|