# 🔥❄️ Whitelist Manager - Deployment Checklist

**Status:** Ready for Deployment  
**Target:** Billing VPS (38.68.14.188)  
**Domain:** whitelist.firefrostgaming.com  
**Time Estimate:** 30-45 minutes

---

## Pre-Deployment Checklist

### DNS Configuration (Do First!)
- [ ] Log into your DNS provider (Cloudflare/Route53/etc)
- [ ] Create A record:
  - **Name:** `whitelist`
  - **Type:** A
  - **Value:** `38.68.14.188`
  - **TTL:** 300 (5 minutes)
- [ ] Wait 5-10 minutes for propagation
- [ ] Verify DNS: `nslookup whitelist.firefrostgaming.com`
  - Should return: `38.68.14.188`

### Files Ready
- [x] Application code created
- [x] Configuration files ready
- [x] Deployment scripts prepared
- [x] All files committed to Gitea

---

## Deployment Steps

### Method 1: Automated (Recommended)

**Step 1:** Copy files to Billing VPS
```bash
scp -r deployments/whitelist-manager root@38.68.14.188:/tmp/
```

**Step 2:** SSH and deploy
```bash
ssh root@38.68.14.188
cd /tmp/whitelist-manager
chmod +x deploy.sh
./deploy.sh
```

**Step 3:** Follow prompts and verify

### Method 2: Manual (If you prefer control)

Follow `deployments/whitelist-manager/DEPLOYMENT.md` step-by-step

---

## Post-Deployment Verification

### Test 1: Service Running
```bash
ssh root@38.68.14.188
systemctl status whitelist-manager
```
✅ Should show: "active (running)" in green

### Test 2: Health Check
```bash
curl http://localhost:5001/health
```
✅ Should return: `{"service":"whitelist-manager","status":"healthy"}`

### Test 3: Web Access
Open browser: `https://whitelist.firefrostgaming.com`

✅ Should show:
- Login prompt
- Valid SSL certificate (green padlock)

### Test 4: Dashboard Login
Login with:
- Username: `mkrause612`
- Password: `Butter2018!!`

✅ Should show:
- All 11 servers listed
- TX1 and NC1 servers grouped
- Server status indicators

### Test 5: Add Player Test
1. Select "Vanilla 1.21.11" server (safest for testing)
2. Enter test player: `TestPlayer123`
3. Click "Add to Whitelist"

✅ Should show: Green success message

### Test 6: Remove Player Test
1. Same server
2. Same player: `TestPlayer123`
3. Click "Remove from Whitelist"

✅ Should show: Green success message

### Test 7: Bulk Operation Test
1. Enter multiple test players (one per line):
   ```
   BulkTest1
   BulkTest2
   BulkTest3
   ```
2. Select "Vanilla 1.21.11"
3. Click "Bulk Add"

✅ Should show: 3 green success messages

---

## Success Criteria

All items must be checked:

- [ ] DNS resolves to 64.50.188.14
- [ ] HTTPS works with valid SSL
- [ ] Login successful with credentials
- [ ] All 11 servers visible
- [ ] Add player works
- [ ] Remove player works
- [ ] Bulk operations work
- [ ] Service auto-starts on reboot

---

## Rollback Plan (If needed)

If deployment fails:

```bash
# Stop service
systemctl stop whitelist-manager
systemctl disable whitelist-manager

# Remove Nginx config
rm /etc/nginx/sites-enabled/whitelist.firefrostgaming.com

# Reload Nginx
systemctl reload nginx

# Remove application
rm -rf /opt/whitelist-manager

# Remove SSL cert (optional)
certbot delete --cert-name whitelist.firefrostgaming.com
```

---

## Next Steps After Successful Deployment

### Immediate
1. [ ] Backup credentials to Vaultwarden
   - API Key: `ptlc_vudB5oRaeoJGPip4fH5PDiymgi28uc39OjJsCbTDVEK`
   - Dashboard: `mkrause612 / Butter2018!!`

2. [ ] Update infrastructure manifest
   ```bash
   # Add to Management Services table:
   Whitelist Manager | Billing VPS | 38.68.14.188 | whitelist.firefrostgaming.com | ✅ OPERATIONAL
   ```

3. [ ] Mark task complete in tasks.md
   ```
   Status: ✅ COMPLETE
   Completed: 2026-02-16
   ```

### Documentation
4. [ ] Create usage guide for Meg and staff
5. [ ] Document in Wiki.js Staff
6. [ ] Take screenshots for documentation

### Testing with Real Players
7. [ ] Test with actual player whitelist
8. [ ] Verify across multiple servers
9. [ ] Test bulk operations with real usernames

---

## Useful Commands Reference

### Service Management
```bash
# Status
systemctl status whitelist-manager

# Logs (live)
journalctl -u whitelist-manager -f

# Restart
systemctl restart whitelist-manager
```

### Nginx
```bash
# Test config
nginx -t

# Reload
systemctl reload nginx

# Logs
tail -f /var/log/nginx/whitelist.access.log
tail -f /var/log/nginx/whitelist.error.log
```

### SSL Certificate
```bash
# Check status
certbot certificates

# Renew
certbot renew
```

---

## Troubleshooting Quick Reference

**Service won't start:**
- Check logs: `journalctl -u whitelist-manager -n 50`
- Verify .env file exists
- Check port 5001 not in use: `netstat -tuln | grep 5001`

**Can't access web dashboard:**
- Verify DNS: `nslookup whitelist.firefrostgaming.com`
- Check service: `systemctl status whitelist-manager`
- Check Nginx: `systemctl status nginx`
- Check firewall: Ports 80 and 443 open

**SSL certificate fails:**
- Verify DNS propagation first
- Check Nginx is running
- Ensure ports 80/443 are open
- Retry: `certbot --nginx -d whitelist.firefrostgaming.com`

**Operations fail:**
- Verify API key in .env is correct
- Check Pterodactyl panel is accessible
- Test API: `curl -H "Authorization: Bearer ptlc_..." https://panel.firefrostgaming.com/api/client`

---

## Time Saved

**Before:** 15 minutes per whitelist change
- SSH to node
- Find server in Pterodactyl
- Use console commands
- Verify on each server
- Repeat for multiple servers

**After:** 30 seconds
- Open web dashboard
- Select servers
- Enter player name
- One click

**Impact:** 96.7% time reduction per operation

---

🔥❄️ **Fire + Frost + Foundation = Where Love Builds Legacy** 💙

**Ready to deploy!**
