Files
unifi/CHANGELOG.md
T
2026-07-15 17:31:58 -04:00

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: .unf files 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