Files
firefrost-operations-manual/docs/tasks/plane-deployment/README.md
Claude 86fabc3370 docs: redirect Plane deployment to TX1 Dallas
Fleet audit showed TX1/NC1 are dedicated servers with 251GB RAM each.
TX1 selected: 226GB free RAM, 771GB free disk. Plane is a rounding error.
Saves 0/month vs spinning up new VPS during deficit period.

Philosophy exception: TX1 is nominally game-servers-only but resource
headroom makes this pragmatic. No game server impact expected.

Refs: Task #47
2026-03-16 03:50:42 +00:00

7.9 KiB

Task #47 — Plane Project Management Deployment

Status: READY
Priority: Tier 2 — Major Infrastructure
Time: 2-3 hours
Created: March 15, 2026
Created By: The Navigator (Chronicler #30)
Updated: March 15, 2026 — Chronicler #31
Owner: Michael "Frostystyle" Krause
Target URL: tasks.firefrostgaming.com
Server: TX1 Dallas (38.68.14.26)

Hardware Decision (March 15, 2026)

Full fleet audit conducted. VPS machines all RAM-constrained for Plane's 4GB minimum:

  • Command Center: 3.8GB total
  • Panel VPS: 1.9GB total
  • Ghost VPS: overloaded with Ghost + 3 Wiki.js instances
  • Billing VPS: reserved for Mailcow

TX1 and NC1 are dedicated servers with 251GB RAM each. TX1 selected:

  • TX1: 226GB free RAM, 771GB free disk — Plane is a rounding error
  • NC1: disk at 61% used — TX1 has more headroom

Philosophy note: TX1 is nominally "game servers only" but the resource headroom makes this a pragmatic exception. Plane won't impact game server performance.


Why Plane

Firefrost needs a task management system that:

  • Works for non-technical staff (Meg, Holly, moderators, social media helpers)
  • Scales from 3 to 15+ people without migrating
  • Stays self-hosted (data ownership, fits Firefrost philosophy)
  • Has a mobile-friendly interface
  • Supports assignment, priorities, milestones, and comments

Plane is the open source self-hosted answer to Linear. Docker-based, actively developed, genuinely good UI. Free forever when self-hosted.

Decision: Self-hosted Plane on Command Center, accessible at tasks.firefrostgaming.com.


System Requirements

Per Plane documentation:

  • Minimum: 2 CPU cores, 4GB RAM, 20GB storage
  • Recommended for production: 4+ CPU cores, 16GB RAM

Command Center (63.143.34.217) handles Gitea, Uptime Kuma, and Code-Server comfortably. Plane fits here.

Verify before deploying:

free -h
df -h /
docker --version
docker compose version

Phase 1: DNS Setup (5 min — Cloudflare)

Add A record in Cloudflare:

tasks.firefrostgaming.com  A  63.143.34.217  (cf-proxied: false)

Phase 2: Installation (30 min)

SSH to Command Center

ssh root@63.143.34.217

Create directory

mkdir -p /opt/plane && cd /opt/plane

Download Plane installer

curl -fsSL https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/install.sh -o install.sh
chmod +x install.sh

Run installer

./install.sh

When prompted:

  • Action: 1 (Install)
  • Domain: tasks.firefrostgaming.com
  • Installation type: Express (use defaults)

Start Plane

./install.sh

Select 2 (Start)

Verify containers running

docker compose ps

Key containers that should be Up:

  • plane-web
  • plane-api
  • plane-worker
  • plane-postgres
  • plane-redis
  • plane-minio (file storage)
  • plane-proxy (nginx)

Phase 3: Nginx + SSL (20 min)

Create Nginx config

nano /etc/nginx/sites-available/plane
server {
    listen 80;
    server_name tasks.firefrostgaming.com;

    location / {
        proxy_pass http://localhost:8080;
        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;
        proxy_cache_bypass $http_upgrade;
    }
}

Enable site

ln -s /etc/nginx/sites-available/plane /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

SSL certificate

certbot --nginx -d tasks.firefrostgaming.com

Phase 4: Initial Setup (20 min)

Access Plane

Go to: https://tasks.firefrostgaming.com

Create admin account

Create the Firefrost workspace

  • Workspace name: Firefrost Gaming
  • URL: firefrost (will be tasks.firefrostgaming.com/firefrost)

Create projects

Start with these projects:

Project Description Who uses it
Infrastructure Server, deployment, technical tasks Michael + future devs
Community Discord, social media, moderation tasks Meg, moderators
Content Ghost posts, server spotlights, announcements Meg, social media helpers
Builds Holly's builder tasks, world projects Holly, builders
Operations General ops, cross-team tasks All staff

Create staff accounts

Invite via email once Mailcow is live. For now, create accounts manually:

Set up labels (global)

Create these labels for consistent tagging:

Priority:

  • 🔴 Critical
  • 🟠 High
  • 🟡 Medium
  • 🟢 Low

Type:

  • 🔧 Infrastructure
  • 🎨 Content
  • 🛡️ Moderation
  • 🏗️ Build
  • 🐛 Bug
  • Feature

Phase 5: Migrate Current Tasks (1 hour)

Migrate the top priority tasks from tasks.md into Plane. Don't migrate everything at once — start with active tasks only.

Priority order for migration:

  1. Task #47 — This task (mark complete once deployed)
  2. Task #11 — Mailcow (April 1 target — assign to Michael)
  3. Task #40 — Holly's Builder rank (assign to Michael + Holly)
  4. Task #45 — Server Sunset Evaluation (assign to Michael)
  5. Task #28 — Discord reorganization (assign to Meg — she's handling it via Holly)
  6. Task #46 — Ghost music player (assign to Michael)

For each task in Plane:

  • Title matches tasks.md task name
  • Description links to docs/tasks/[task-name]/README.md in Gitea
  • Assignee set
  • Priority set
  • Due date if applicable (e.g. Mailcow = April 1, 2026)

Phase 6: Backup Configuration (15 min)

Manual backup command

cd /opt/plane && ./install.sh

Select 7 (Backup Data)

Automate daily backups

crontab -e

Add:

0 3 * * * cd /opt/plane && ./install.sh backup >> /var/log/plane-backup.log 2>&1

Backups at 3am daily. Review logs weekly.


Phase 7: Uptime Kuma Monitor (5 min)

Add Plane to Uptime Kuma monitoring:


Post-Deployment

  • tasks.firefrostgaming.com accessible via HTTPS
  • Admin account created, password in Vaultwarden
  • Firefrost workspace created
  • 5 projects created (Infrastructure, Community, Content, Builds, Operations)
  • Meg and Holly accounts created
  • Labels configured
  • Top priority tasks migrated from tasks.md
  • Daily backup cron running
  • Uptime Kuma monitor added
  • DNS record confirmed
  • tasks.md updated with note: "Active tasks tracked in Plane at tasks.firefrostgaming.com"

Staff Onboarding

Once deployed, each staff member needs a quick orientation:

For Meg and Holly:

  • Log in at tasks.firefrostgaming.com
  • Check "My Issues" to see assigned tasks
  • Click a task to see details and add comments
  • Mark done by changing status to Done
  • That's it — they don't need to know anything else to start

Mobile: Plane has a mobile web interface that works well. Native apps are in development.


Future Integrations

When ready:

  • Gitea webhook — link commits to Plane issues via issue ID in commit messages
  • Mailcow — email notifications for task assignments (configure after Mailcow live)
  • Discord bot — post task updates to #staff-announcements (future)


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