# 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**
