Files
firefrost-operations-manual/docs/tasks/plane-deployment
Claude 2d45091a8b docs: defer Plane deployment pending new Staff Tools VPS
Hardware audit showed all existing servers RAM-constrained for Plane's
4GB minimum requirement. Ordered Breezehost AMD Epyc Cloud-2 (0/mo,
4GB DDR5) as dedicated Staff Tools VPS. Deploy Plane next session once
VPS provisioned and IP known.

Servers evaluated: Command Center (3.8GB), Panel VPS (1.9GB), Ghost VPS
(overloaded), Billing VPS (reserved for Mailcow), TX1/NC1 (game only).

Refs: Task #47
2026-03-16 03:47:17 +00:00
..

Task #47 — Plane Project Management Deployment

Status: DEFERRED — Awaiting new VPS provisioning
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: NEW Staff Tools VPS (Breezehost AMD Epyc Cloud-2 — ordered March 15, 2026)

⚠️ Hardware Decision (March 15, 2026)

Plane requires 4GB RAM minimum. All existing servers are constrained:

  • Command Center: 3.8GB total (below minimum, already runs Gitea/Uptime Kuma/Code-Server)
  • Panel VPS: 1.9GB total (hard no — would destabilize Pterodactyl)
  • Ghost VPS: already carries Ghost + 3 Wiki.js instances
  • Billing VPS: reserved for Mailcow
  • TX1/NC1: game servers only

Solution: New Staff Tools VPS ordered from Breezehost.

  • Plan: AMD Epyc Cloud-2 — $10/month (or $108/year annual)
  • Specs: 2 vCPU, 4GB DDR5, 40GB NVMe, 10TB @1Gbps
  • Purpose: Plane now, future staff management tools as fleet grows
  • Switch to annual after first month confirmed stable

Next session: Deploy Plane once new VPS is provisioned and IP is known.


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