← Portfolio homelab
Browse homelab topics

Homelab / Technical documentation

Move the applications. Preserve their state.

The October move from CasaOS on the ASUS to Docker in the HP Debian VM, and the later completed ASUS conversion.

Jump to a section

From CasaOS to a dedicated guest

  1. Earlier ASUS runtimeUbuntu / CasaOS / Docker
  2. Transfer boundaryApplication configuration and persistent files
  3. HP Debian VMDocker stacks plus stable container paths
Historical migration model · S02, S04. This is a transfer sequence, not the current two-node deployment diagram.

The earlier setup kept application data under /DATA and used an external disk. The October migration created /opt/docker/stacks, /opt/docker/appdata and /mnt/media in the Debian guest. The goal visible in the work was preserving application state while changing its runtime.

Evidence: S02 · S04.

What the recovered work establishes

  1. Copied Plex, Jellyfin, Sonarr and Radarr appdata, then additional service configuration. The recovered Plex copy was roughly 3.3 GB.
  2. Handled bulky material selectively: old backups and a large application log were excluded from particular copies. Those exclusions are copy-scope decisions, not proof that the omitted files were safely backed up elsewhere.
  3. Started several media services. A qBittorrent image mismatch was addressed by changing the image and then starting it. This establishes a historical startup result, not a recommendation to deploy that old image now.

The exact rsync invocation and final stopped-service resynchronization were not recovered. I do not present an invented migration script as the one used.

Evidence: S04.

Configuration and media are different data

Scroll within the table to see all columns.

Mounts observed in the November record
Host pathContainer pathService
/opt/docker/appdata/sonarr/configSonarr
/opt/docker/appdata/nzbget/configNZBGet
/mnt/media/Downloads/downloadsBoth services
/mnt/media/Media/TV Shows/showsSonarr
Historical read-only command · S05 · mount fields only
docker inspect sonarr nzbget --format '{{.Name}}{{range .Mounts}}{{println}}{{.Source}} -> {{.Destination}}{{end}}'

A shared container path helps services agree on where files are. Matching path strings alone do not prove hardlinks, atomic moves or that all paths share one filesystem.

Evidence: S05.

How to validate a migration without assuming success

  1. Record image references and mount destinations before transfer. Inspect selected fields; avoid unrestricted environment dumps.
  2. Compare application configuration and media separately. Check ownership and mount availability before starting consumers.
  3. Check that each application opens its existing library or configuration, then test a synthetic item through the relevant workflow. A running container alone is insufficient.
  4. For a new migration, plan a final quiesced synchronization and rollback point. These are procedure requirements, not claims that the historical sequence included them.

The ASUS conversion to Proxmox is a later, completed change confirmed on 8 November. Its installation date and commands were not recovered. See the current guest placement.

Evidence: S19.