Files
firefrost-operations-manual/docs/archive/planning/migration-checklist.md

4.0 KiB

> ⚠️ ARCHIVED: This document was moved to archive on February 12, 2026.
> Reason: Content completed/implemented. No longer an active planning document.
> Original Location: docs/planning/migration-checklist.md

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)