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
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
- Email: frostystyle@firefrostgaming.com (or michael@ once Mailcow is live)
- Set strong password — store in Vaultwarden
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:
- gingerfury@firefrostgaming.com — Meg — Member role
- unicorn20089@firefrostgaming.com — Holly — Member role
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:
- Task #47 — This task (mark complete once deployed)
- Task #11 — Mailcow (April 1 target — assign to Michael)
- Task #40 — Holly's Builder rank (assign to Michael + Holly)
- Task #45 — Server Sunset Evaluation (assign to Michael)
- Task #28 — Discord reorganization (assign to Meg — she's handling it via Holly)
- 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.mdin 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:
- URL: https://tasks.firefrostgaming.com
- Monitor type: HTTP(s)
- Name: Plane (tasks.firefrostgaming.com)
- Interval: 5 minutes
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)
Related Documentation
- Plane self-hosting docs: https://developers.plane.so/self-hosting/methods/docker-compose
- Current tasks:
docs/core/tasks.md - Staff accounts:
docs/reference/staff-accounts.md(to be created)
Fire + Frost + Foundation = Where Love Builds Legacy 💙🔥❄️