# Pokerole Wiki.js Deployment Prerequisites **Task:** #35 - Pokerole Wiki.js Deployment **Server:** Ghost VPS (64.50.188.14) **Domain:** pokerole.firefrostgaming.com --- ## Server Access - [x] **SSH access to Ghost VPS (64.50.188.14)** - User: root (or sudo user) - Authentication: SSH key - Tested: Connection verified --- ## Software Requirements ### Docker & Docker Compose - [x] **Docker installed** - Version: 20.10+ or newer - Status: Already running (subscribers/staff wikis use Docker) - Verify: `docker --version` - [x] **Docker Compose installed** - Version: 1.29+ or newer - Status: Already present - Verify: `docker-compose --version` ### Nginx - [x] **Nginx installed and running** - Status: Already serving multiple sites - Config directory: `/etc/nginx/sites-available/` - Enabled directory: `/etc/nginx/sites-enabled/` - Verify: `nginx -t && systemctl status nginx` ### SSL/Certbot - [x] **Certbot installed** - Purpose: Let's Encrypt SSL certificates - Status: Already managing SSL for other domains - Package: `python3-certbot-nginx` - Verify: `certbot --version` --- ## Network & DNS ### DNS Configuration - [ ] **Create A record for pokerole.firefrostgaming.com** - Type: A - Name: pokerole - Value: 64.50.188.14 - TTL: 300 (5 minutes) - Access: DNS provider/registrar panel - **ACTION REQUIRED:** Create this record before deployment - [ ] **Verify DNS propagation** - Command: `nslookup pokerole.firefrostgaming.com` - Expected: Returns 64.50.188.14 - Time: 5-15 minutes after record creation - Alternative: `dig pokerole.firefrostgaming.com` ### Port Availability - [x] **Port 3002 available (internal)** - Purpose: Wiki.js container port - Port 3000: Likely used by subscribers wiki - Port 3001: Likely used by staff wiki - Port 3002: Should be free - Verify: `netstat -tulpn | grep :3002` - **If occupied:** Use next available port (3003, 3004, etc.) - [x] **Ports 80/443 available (external)** - Purpose: HTTP/HTTPS access via Nginx - Status: Already handling multiple sites - No changes needed (Nginx reverse proxy handles routing) --- ## Storage & Resources ### Disk Space - [x] **Sufficient storage on Ghost VPS** - Required: ~500 MB for deployment - Check: `df -h /opt` - Expected: Several GB available - Purpose: - PostgreSQL database: ~100 MB - Wiki.js container: ~200 MB - Uploaded images: ~50 MB (225 sprites) - Growth room: ~150 MB ### System Resources - [x] **Adequate RAM** - Required: ~512 MB for containers - Ghost VPS: Should have 2-4 GB total - Check: `free -h` - Current load: 2 Wiki.js instances already running - Conclusion: Sufficient for 3rd instance - [x] **CPU capacity** - Required: Minimal (Wiki.js is lightweight) - Ghost VPS: 2-4 CPU cores - Load: Acceptable (check `top`) --- ## Existing Infrastructure Reference ### Current Wiki.js Instances - [x] **Subscribers Wiki** - Domain: subscribers.firefrostgaming.com - Location: Ghost VPS - Status: Operational - Purpose: Reference for configuration - [x] **Staff Wiki** - Domain: staff.firefrostgaming.com - Location: Ghost VPS - Status: Operational - Purpose: Reference for configuration **Use these as templates for Pokerole wiki deployment pattern** ### Nginx Configurations - [x] **Existing configs to reference** - Check: `/etc/nginx/sites-available/subscribers.firefrostgaming.com` - Check: `/etc/nginx/sites-available/staff.firefrostgaming.com` - Purpose: Copy proxy configuration pattern ### Docker Network - [x] **Understand existing Docker setup** - Command: `docker network ls` - Command: `docker ps | grep wiki` - Purpose: Ensure new deployment doesn't conflict --- ## Access & Credentials ### Email Addresses Needed - [ ] **Michael's email for admin account** - Purpose: Wiki.js administrator login - Purpose: SSL certificate registration - **ACTION REQUIRED:** Provide at deployment time - [ ] **Holly's email for editor account** - Purpose: Wiki.js editor access - **ACTION REQUIRED:** Provide at deployment time ### Password Management - [x] **Vaultwarden available** - URL: vault.firefrostgaming.com - Status: Deployed (needs configuration) - Purpose: Store wiki admin credentials - Note: Can store manually if Vaultwarden not ready ### SSH Keys - [x] **SSH access to Ghost VPS** - Method: SSH key authentication - Status: Already configured - User: root or sudo user --- ## Content Ready for Migration ### Git Repositories - [x] **pokerole-data repository accessible** - Location: git.firefrostgaming.com/pokerole-project/pokerole-data - Contents: 76 Pokémon entries (Tiers 3, 4, 5) - Status: 100% complete, approved by Holly - [x] **Artwork ready** - Location: pokerole-data/images/ - Count: 225 sprites (115 normal + 110 shiny) - Format: PNG (99%), high-resolution - Status: 100% complete - [x] **Documentation available** - Session reports: misc-docs repository - Deployment request: From Claudius - Holly's specifications: In pokerole-data --- ## Team Readiness ### Deployment Team - [x] **The Chronicler #27** - Role: Infrastructure deployment - Availability: Ready to deploy this evening - Access: Can deploy via Michael's SSH session ### Migration Team - [x] **Claudius (Stage 2) - The Pattern Forger** - Role: Content migration (76 Pokémon entries) - Availability: Ready to start tomorrow (Feb 27) - Preparation: All content organized and ready - [x] **Michael (mkrause612)** - Role: Project lead, coordination - Availability: Ready to coordinate - Access: Will have admin credentials ### Review Team - [x] **Holly (Unicorn20089)** - Role: Creative director, final approval - Availability: Ready for review phase - Access: Will have editor credentials --- ## Backup & Safety ### Pre-Deployment Backup - [ ] **Backup existing Ghost VPS configs** - Nginx configs: `/etc/nginx/sites-available/` - Docker configs: Any existing pokerole-related files - Purpose: Easy rollback if needed - **ACTION REQUIRED:** Before making changes ### Rollback Plan - [x] **Documented rollback procedure** - Location: deployment-plan.md (Rollback section) - Steps: Docker down, remove configs, revoke SSL - Tested: Not needed (we know this pattern works) --- ## Documentation ### Deployment Documentation - [x] **README.md created** - Overview, context, success criteria - Located: docs/tasks/pokerole-wikijs-deployment/ - [x] **deployment-plan.md created** - Step-by-step deployment instructions - 9 phases with detailed commands - [x] **prerequisites.md created** (this file) - Complete checklist of requirements ### Reference Documentation - [x] **Claudius's request document** - Comprehensive requirements - Timeline and expectations - Content ready status --- ## Pre-Deployment Checklist Summary ### ✅ READY (No Action Needed) - [x] Ghost VPS access - [x] Docker & Docker Compose installed - [x] Nginx running - [x] Certbot available - [x] Port 3002 likely available - [x] Sufficient disk space - [x] Adequate resources (RAM/CPU) - [x] Reference wikis operational - [x] Content 100% ready (76 entries, 225 sprites) - [x] Team ready to execute - [x] Documentation complete ### ⏳ ACTION REQUIRED (Before Deployment) - [ ] Create DNS A record (pokerole.firefrostgaming.com → 64.50.188.14) - [ ] Verify DNS propagation - [ ] Provide Michael's email for admin account - [ ] Provide Holly's email for editor account - [ ] Backup existing Ghost VPS configs (safety) ### 📋 DURING DEPLOYMENT - [ ] Verify port 3002 is free (or use next available) - [ ] Generate secure database password - [ ] Create admin account - [ ] Create Holly's editor account - [ ] Store credentials in Vaultwarden (or document securely) --- ## Estimated Timeline **Pre-deployment actions:** 5-10 minutes - Create DNS record: 2 minutes - Wait for propagation: 5-15 minutes (can proceed with other steps) - Backup configs: 2 minutes **Deployment:** 2-3 hours (per deployment-plan.md) **Post-deployment:** 5 minutes - Create access document - Notify team - Verify access **Total:** ~3 hours from start to handoff --- ## Risk Assessment ### Low Risk Items ✅ All infrastructure prerequisites are met. Ghost VPS is stable and already running similar workloads. ### Medium Risk Items ⚠️ - **DNS propagation delay:** Mitigated by testing with IP first - **Port conflict:** Mitigated by checking port availability - **SSL certificate timing:** Mitigated by waiting for DNS propagation ### High Risk Items ❌ None identified. This is a well-understood deployment pattern. --- ## Questions Before Deployment ### Technical Questions 1. **Port preference:** Use 3002, or different port? - Default: 3002 - Alternative: Check `netstat -tulpn | grep :300` and use next free 2. **Database password:** Generate secure random? - Recommended: `openssl rand -base64 32` - Store in: Vaultwarden or secure notes 3. **Backup schedule:** Daily automated backups? - Recommended: Yes (cron job at 3 AM) - Integration: Coordinate with existing backup systems ### Configuration Questions 1. **Theme preference:** Default or dark mode? - Default: Clean default theme - Alternative: Can change post-deployment 2. **Public access:** Enable now or after migration? - Recommended: Enable after Holly's final approval - Initial: Editors only 3. **Git sync:** Enable automatic sync with pokerole-data repo? - Recommended: Manual migration first - Future: Can enable if desired --- ## Next Steps After Prerequisites Met 1. **Verify DNS record created and propagated** 2. **SSH to Ghost VPS** 3. **Follow deployment-plan.md phases 1-9** 4. **Handoff to Michael/Claudius for migration** 5. **Monitor first 24 hours for issues** --- ## Support During Deployment **If issues arise:** 1. Check deployment-plan.md troubleshooting section 2. Review docker-compose logs: `docker-compose logs -f` 3. Check Nginx logs: `/var/log/nginx/error.log` 4. Verify DNS: `nslookup pokerole.firefrostgaming.com` 5. Ask The Chronicler for guidance **The Chronicler will be available throughout deployment for troubleshooting.** --- 💙🔥❄️ **Prerequisites verified. Ready to deploy when you are.** 🔥❄️💙