- Complete task documentation per FFG-STD-002 - README.md: Overview, context, success criteria - deployment-plan.md: 9-phase step-by-step deployment - prerequisites.md: Comprehensive checklist Urgency: HIGH - Unblocks content migration for 76 Pokémon entries Timeline: Deploy tonight, migration starts tomorrow (Feb 27) Requested by: Michael & Claudius (Pokerole Project) Related: Aurelian Pokédex 100% complete, awaiting infrastructure
401 lines
10 KiB
Markdown
401 lines
10 KiB
Markdown
# 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.** 🔥❄️💙
|