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

3.5 KiB

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 /opt/arbiter-3.0/deploy.sh

Or remote curl:

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:

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):

sudo visudo

Add this line:

architect ALL=(ALL) NOPASSWD: /opt/scripts/deploy-arbiter.sh

3. Create log file:

sudo touch /var/log/trinity-deployments.log
sudo chown architect:architect /var/log/trinity-deployments.log

Verify Deployment

# 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 🔥❄️