feat: Task #47 — Plane self-hosted project management
Deploy Plane at tasks.firefrostgaming.com on Command Center. Decision: Self-hosted Plane over Linear/Trello/Notion because: - Firefrost philosophy: keep everything in-house - Scales from 3 to 15+ staff (builders, moderators, social media, devs) - Open source, free forever self-hosted - Linear-quality UI non-technical staff can use - Docker-based, fits existing stack Full deployment plan includes: - DNS, installation, Nginx + SSL - 5 projects: Infrastructure, Community, Content, Builds, Operations - Task migration from tasks.md - Backup automation - Uptime Kuma monitoring - Staff onboarding notes Session: The Navigator (Chronicler #30)
This commit is contained in:
@@ -413,6 +413,22 @@ Foundation secure, deploy major services.
|
||||
|
||||
---
|
||||
|
||||
### 47. Plane Project Management — Self-Hosted
|
||||
**Time:** 2-3 hours
|
||||
**Status:** READY
|
||||
**Priority:** Tier 2 — Major Infrastructure
|
||||
**Documentation:** `docs/tasks/plane-deployment/`
|
||||
**Target:** tasks.firefrostgaming.com on Command Center (63.143.34.217)
|
||||
|
||||
Self-hosted project management for the Firefrost team. Replaces ad-hoc task tracking with a proper system that scales from 3 to 15+ staff. Mobile-friendly, non-technical staff can use it easily.
|
||||
|
||||
**Why Plane:** Open source Linear alternative. Docker-based, self-hosted, free forever. Active development. Beautiful UI that works for builders, moderators, and social media helpers — not just developers.
|
||||
|
||||
**Projects to create:** Infrastructure, Community, Content, Builds, Operations
|
||||
**After deploy:** Migrate active tasks from tasks.md into Plane, create accounts for Meg and Holly
|
||||
|
||||
---
|
||||
|
||||
### 10. Firefrost Codex - AI Assistant
|
||||
**Time:** 8-12 hours total (Phase 1: ✅ 9 hours, Phase 2: 🔄 ~2 hours remaining)
|
||||
**Status:** Phase 1 COMPLETE ✅ | Phase 2 IN PROGRESS 🔄
|
||||
|
||||
298
docs/tasks/plane-deployment/README.md
Normal file
298
docs/tasks/plane-deployment/README.md
Normal file
@@ -0,0 +1,298 @@
|
||||
# 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)
|
||||
**Owner:** Michael "Frostystyle" Krause
|
||||
**Target URL:** tasks.firefrostgaming.com
|
||||
**Server:** Command Center (63.143.34.217)
|
||||
|
||||
---
|
||||
|
||||
## 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:
|
||||
```bash
|
||||
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
|
||||
```bash
|
||||
ssh root@63.143.34.217
|
||||
```
|
||||
|
||||
### Create directory
|
||||
```bash
|
||||
mkdir -p /opt/plane && cd /opt/plane
|
||||
```
|
||||
|
||||
### Download Plane installer
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/install.sh -o install.sh
|
||||
chmod +x install.sh
|
||||
```
|
||||
|
||||
### Run installer
|
||||
```bash
|
||||
./install.sh
|
||||
```
|
||||
|
||||
When prompted:
|
||||
- **Action:** 1 (Install)
|
||||
- **Domain:** `tasks.firefrostgaming.com`
|
||||
- **Installation type:** Express (use defaults)
|
||||
|
||||
### Start Plane
|
||||
```bash
|
||||
./install.sh
|
||||
```
|
||||
Select **2 (Start)**
|
||||
|
||||
### Verify containers running
|
||||
```bash
|
||||
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
|
||||
```bash
|
||||
nano /etc/nginx/sites-available/plane
|
||||
```
|
||||
|
||||
```nginx
|
||||
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
|
||||
```bash
|
||||
ln -s /etc/nginx/sites-available/plane /etc/nginx/sites-enabled/
|
||||
nginx -t && systemctl reload nginx
|
||||
```
|
||||
|
||||
### SSL certificate
|
||||
```bash
|
||||
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:**
|
||||
|
||||
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
|
||||
```bash
|
||||
cd /opt/plane && ./install.sh
|
||||
```
|
||||
Select **7 (Backup Data)**
|
||||
|
||||
### Automate daily backups
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
|
||||
Add:
|
||||
```bash
|
||||
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** 💙🔥❄️
|
||||
Reference in New Issue
Block a user