# Migration Execution Checklist ## Pre-Migration (Do Once) - [ ] Choose VPS allocation option (A, B, or C) - [ ] Verify all VPS accessible via SSH - [ ] Create backup directory structure - [ ] Set DNS TTL to 300 seconds (5 minutes) in Cloudflare - [ ] Announce maintenance window in Discord --- ## Service 1: Gitea Migration ### Backup Phase - [ ] Stop Gitea on TX1: `systemctl stop gitea` - [ ] Backup Gitea data: `tar -czf gitea-backup.tar.gz /var/lib/gitea` - [ ] Backup Gitea DB: `sqlite3 /var/lib/gitea/gitea.db .dump > gitea-dump.sql` - [ ] Copy backups off TX1 ### Deploy Phase - [ ] Install Gitea on target VPS - [ ] Restore data directory - [ ] Restore database - [ ] Update `app.ini` with new domain/IP - [ ] Start Gitea service - [ ] Test locally: `curl -I http://localhost:3000` ### DNS Cutover - [ ] Update Cloudflare: git.firefrostgaming.com → [target VPS IP] - [ ] Wait for propagation (5 min) - [ ] Get SSL certificate: `certbot --nginx -d git.firefrostgaming.com` - [ ] Test externally: Browse to https://git.firefrostgaming.com ### Verification - [ ] Login works - [ ] Repositories accessible - [ ] Push/pull works - [ ] Webhooks functional ### Cleanup - [ ] Wait 24 hours - [ ] Stop TX1 Gitea: `systemctl stop gitea` - [ ] Disable TX1 Gitea: `systemctl disable gitea` - [ ] Archive TX1 Gitea data --- ## Service 2: Uptime Kuma Migration ### Backup Phase - [ ] Export monitors from Uptime Kuma web UI - [ ] Backup data: `tar -czf kuma-backup.tar.gz /opt/uptime-kuma/data` ### Deploy Phase - [ ] Install Uptime Kuma on target VPS - [ ] Import monitors - [ ] Configure Discord webhook - [ ] Test monitoring ### DNS Cutover - [ ] Update Cloudflare: status.firefrostgaming.com → [target VPS IP] - [ ] Get SSL certificate - [ ] Test externally ### Verification - [ ] All monitors active - [ ] Discord notifications working - [ ] Status page accessible --- ## Service 3: MkDocs Migration ### Backup Phase - [ ] Copy MkDocs source: `tar -czf mkdocs-source.tar.gz /var/www/docs` ### Deploy Phase - [ ] Install MkDocs + Material theme - [ ] Restore source files - [ ] Configure nginx - [ ] Build site: `mkdocs build` ### DNS Cutover - [ ] Update Cloudflare: docs.firefrostgaming.com → [target VPS IP] - [ ] Get SSL certificate - [ ] Test externally ### Verification - [ ] Site loads correctly - [ ] Search works - [ ] All pages accessible --- ## Service 4: Wiki.js Fresh Deploy ### Deploy Phase - [ ] Install Node.js 18+ - [ ] Install Wiki.js 2.5.303 - [ ] Create dual Nginx configs (subscribers + staff) - [ ] Configure Wiki.js ### DNS Cutover - [ ] Update Cloudflare: subscribers.firefrostgaming.com → [target VPS IP] - [ ] Update Cloudflare: staff.firefrostgaming.com → [target VPS IP] - [ ] Get SSL certificates (single command for both domains) - [ ] Test externally ### Setup - [ ] Complete setup wizard - [ ] Create admin account - [ ] Configure groups (Subscribers, Staff, Admin) - [ ] Set up Git sync with Gitea --- ## Service 5: NextCloud Deploy ### Deploy Phase - [ ] Install NextCloud - [ ] Configure database - [ ] Set up storage directory - [ ] Configure nginx ### DNS Cutover - [ ] Update Cloudflare: downloads.firefrostgaming.com → [target VPS IP] - [ ] Get SSL certificate - [ ] Test externally ### Setup - [ ] Create admin account - [ ] Configure external storage (if needed) - [ ] Test upload/download - [ ] Set up retention policy (30-day for non-premium, 90-day for premium) --- ## Post-Migration - [ ] All services responding on new IPs - [ ] SSL certificates auto-renewing - [ ] Monitoring confirms 100% uptime - [ ] Discord announcement: Migration complete - [ ] Wait 24-48 hours before TX1 cleanup - [ ] Update all documentation with new IPs - [ ] Remove Command Center IPs from TX1 interface - [ ] Document lessons learned --- **Total Estimated Time:** 6-9 hours (spread across 1-3 days)