Files
firefrost-services/services/arbiter-3.0/DEPLOYMENT.md
Claude ef562ef59a Add Trinity Console deploy button for Holly/Meg/Michael
- Deploy button in sidebar above username
- POST /admin/system/deploy endpoint
- Updated deploy.sh with locking, logging, user tracking
- Prevents concurrent deploys (mkdir lock)
- Logs who deployed and what commit
- Updated DEPLOYMENT.md with setup instructions

Gemini consultation: confirmed synchronous approach, locking, sudoers config
2026-04-09 19:40:34 +00:00

149 lines
3.5 KiB
Markdown

# Arbiter 3.0 Deployment Guide
**Location:** Command Center (63.143.34.217)
**Service:** `arbiter-3` (systemd)
**Directory:** `/opt/arbiter-3.0`
**Dashboard:** https://discord-bot.firefrostgaming.com/admin
---
## 🚀 One-Click Deploy (Trinity Console)
**For Holly, Meg, and Michael:**
1. Push your code changes to `firefrost-services` repo
2. Open Trinity Console: https://discord-bot.firefrostgaming.com/admin
3. Click the **"🚀 Deploy Arbiter"** button in the sidebar
4. Wait for success confirmation
That's it! The button pulls latest code from Gitea and restarts the service.
---
## ⚠️ IMPORTANT: Arbiter is NOT a Git Repo
`/opt/arbiter-3.0` on Command Center is **not** a git repository. It's a deployment target.
**Source of truth:** `firefrost-services` repo → `services/arbiter-3.0/`
**Why?** Production servers shouldn't have git credentials or .git history. Deploy by copying files.
---
## Manual Deploy (SSH Required)
**On Command Center:**
```bash
bash /opt/arbiter-3.0/deploy.sh
```
**Or remote curl:**
```bash
curl -fsSL https://git.firefrostgaming.com/firefrost-gaming/firefrost-services/raw/branch/main/services/arbiter-3.0/deploy.sh | bash
```
---
## First-Time Server Setup
If setting up deploy button for the first time, Michael needs to run these on Command Center:
**1. Copy deploy script to /opt/scripts:**
```bash
sudo mkdir -p /opt/scripts
sudo cp /opt/arbiter-3.0/deploy.sh /opt/scripts/deploy-arbiter.sh
sudo chmod +x /opt/scripts/deploy-arbiter.sh
```
**2. Configure sudoers (allow Arbiter to run deploy script):**
```bash
sudo visudo
```
Add this line:
```
architect ALL=(ALL) NOPASSWD: /opt/scripts/deploy-arbiter.sh
```
**3. Create log file:**
```bash
sudo touch /var/log/trinity-deployments.log
sudo chown architect:architect /var/log/trinity-deployments.log
```
---
## Verify Deployment
```bash
# Check service status
systemctl status arbiter-3
# Check logs
journalctl -u arbiter-3 -n 50
# Check deployment log
tail -20 /var/log/trinity-deployments.log
# Test dashboard
curl -s https://discord-bot.firefrostgaming.com/admin | head -5
```
---
## Common Issues
### "Deployment already in progress"
**Cause:** Previous deploy didn't finish or crashed
**Fix:** `rm -rf /tmp/arbiter_deploy.lock` then try again
### "fatal: not a git repository"
**Cause:** Someone tried to `git pull` in `/opt/arbiter-3.0`
**Fix:** Use the deploy script or manual copy method above
### "/tmp/firefrost-services already exists"
**Cause:** Previous deploy didn't clean up
**Fix:** `rm -rf /tmp/firefrost-services /tmp/firefrost-services-deploy-*` then try again
### Service fails to start
**Check:** `journalctl -u arbiter-3 -n 50`
**Common causes:**
- Missing .env file
- Database connection failed
- Port already in use
- Syntax error in code
---
## Environment Variables
Required in `/opt/arbiter-3.0/.env`:
```
DATABASE_URL=postgresql://...
DISCORD_TOKEN=...
DISCORD_CLIENT_ID=...
DISCORD_CLIENT_SECRET=...
PANEL_URL=https://panel.firefrostgaming.com
PANEL_APPLICATION_KEY=...
PANEL_CLIENT_KEY=...
STRIPE_SECRET_KEY=...
STRIPE_WEBHOOK_SECRET=...
SESSION_SECRET=...
MINECRAFT_NEST_IDS=1,5
```
---
## For Chroniclers & Catalysts
**You cannot SSH to Command Center** (port 22 blocked from Claude sandbox).
**Workflow:**
1. Make changes to `firefrost-services/services/arbiter-3.0/`
2. Commit and push to Gitea
3. Tell your human to click "🚀 Deploy Arbiter" in Trinity Console
4. Verify via dashboard or ask them to check logs
---
**Fire + Frost + Foundation = Where Love Builds Legacy** 🔥❄️