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