2.2 KiB
2.2 KiB
UniFi Controller Migration — CHANGELOG
2026-07-15
Phase 1 — Fresh deploy on app2
- Action: Deployed jacobalberty/unifi:latest (v10.0.162) in Docker on app2
- Image: Bundles MongoDB internally — single container, no external DB
- Caddy proxy: unifi.itpropartner.com:443 → localhost:8443 with tls_insecure_skip_verify
- Status: ✅ Controller running, healthy
Phase 2 — Admin account creation
- Obstacle: Fresh controller has zero admin users — can't log in
- Fix: Created admin via MongoDB shell (mongosh port 27117) using openssl passwd -6
- Credentials: info@itpropartner.com / TempChangeMe123! (changed by user)
- Status: ✅
Phase 3 — Old controller backup discovery
- Obstacle:
.unffiles on old server are encrypted BSON, not standard zip - Fix: Pulled autobackups from 178.156.131.57:/var/lib/unifi/backup/autobackup/
- Files: 8 backups (161KB each), base backup 9.0.114.unf (686KB) from Oct 2025
- S3 sync set up: Daily cron → s3://hermes-vps-backups/unifi-backups/
- Status: ✅ Backups safe in S3
Phase 4 — Restore attempts
- Obstacle: ace.jar restore fails with Spring context errors — can't run concurrently with active controller
- Attempts: Stopped UniFi process, ran restore — still failed. Docker volume vs bind mount path confusion.
- Resolution: Emailed .unf files to user for manual upload through setup wizard
- Status: ⚠️ Pending manual restore by user
Phase 5 — Old controller decommissioning
- Action: Stopped UniFi service, disabled from boot on 178.156.131.57
- Hetzner deletion: ID 59987821 (178.156.131.57) removed
- Backup cron removed: unifi-backup-sync shut down (source deleted)
- Status: ✅
Lessons
- jacobalberty/unifi Docker image uses TWO storage volumes: /config (bind mount) + /unifi (anonymous volume)
- ace.jar restore requires MongoDB running but NOT the UniFi Java process — yet the Spring context still collides
- UniFi 10.x API requires CSRF token + session cookie; NoSiteContext errors even with valid login
- mongosh replaces mongo on MongoDB 5+ — different binary, same port
- Always verify port ownership (Caddy on 443, UniFi on 8443) before deployment