Decommission the old Plex VM
Plex has run as a container on the Docker host since the 2026-09-16 migration. The old Debian 11 VM (10.100.0.24) is now retired per plex-docker-migration.md section 9, steps 1, 2 and 4-7: - removed from the Veeam "Backup VMs" job - guest shut down gracefully, pre-migration snapshot removed and consolidated back to Plex.vmdk - Guacamole "Plex SSH" connection deleted - .24 / 10.50.0.31 DHCP leases released on the UDM The VMDKs are deliberately kept until ~2026-10-15 so the VM remains a one-command rollback; step 3 stays open until then. Before powering the VM off, every integration was re-verified as pointing at 10.100.0.35: Sonarr, Radarr, Tautulli, seerr, Uptime Kuma, Homepage, Traefik and the UDM PLEX port-forward. Section 9 gains a decommission log recording two behaviours that cost time to work out: Veeam turns a removed job include into an explicit Exclude tombstone rather than deleting it, and a plain sqlite3 integrity_check on a Plex library DB fails with "unknown tokenizer: collating" because the stock binary lacks Plex's FTS collation - that is not corruption. ESXi port-group counts corrected (LAN_100 7->6, DATA_50 4->3), verified by counting NICs on powered-on VMs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Plex Migration: ESXi VM → Docker Container
|
||||
|
||||
**Status: EXECUTED 2026-09-16.** Decisions 1 & 2 ratified as Option A / Option A. Cutover completed with ~22 min of Plex downtime (transfer itself 5m38s). All verification in §8 passed except the two items needing a real client, noted there. The old VM is powered on with `plexmediaserver` stopped+disabled; §9 decommission is **not** done.
|
||||
**Status: EXECUTED 2026-09-16. DECOMMISSIONED 2026-09-17.** Decisions 1 & 2 ratified as Option A / Option A. Cutover completed with ~22 min of Plex downtime (transfer itself 5m38s). All verification in §8 passed except the two items needing a real client, noted there. §9 decommission steps 1, 2 and 4-7 are **done** (see the log at the end of §9); step 3 — deleting the VMDKs — is deliberately **deferred to ~2026-10-15**.
|
||||
**Created:** 2026-09-16
|
||||
**Source:** `plex` VM, 10.100.0.24, Debian 11 (EOL)
|
||||
**Target:** `DOCKER` host, 10.100.0.35, Debian 13, containerised + Ansible-managed
|
||||
@@ -540,6 +540,38 @@ Cost is only the watch history accumulated while the container was live. To avoi
|
||||
6. Update docs: [plex.md](plex.md) (rewrite for the container; also drop the misleading `plex.lan.dohertylan.com` FQDN line — it is a wildcard, not a host record), [docker.md](docker.md) (add `plex` to Media Management), [CLAUDE.md](CLAUDE.md) line 24, [esxi.md](esxi.md) lines 71/109/110, [veeam.md](veeam.md) line 58.
|
||||
7. Update memory: the port-forward now targets `.35` (superseding the 2026-09-16 `.24` fix), and `debian-11-eol-2026-08-31` no longer applies to Plex — only Ignition.
|
||||
|
||||
### Decommission log — executed 2026-09-17
|
||||
|
||||
Run one day after cutover rather than the planned week, on the owner's call that the container was behaving. Every step
|
||||
below is reversible; the VMDKs were **not** touched.
|
||||
|
||||
**Pre-flight** — re-verified that nothing still pointed at `.24` before powering the VM off: Sonarr and Radarr Plex
|
||||
connections, Tautulli `pms_ip`/`pms_url`, seerr `plex.ip` (with `machineId` intact), Uptime Kuma monitor 17, Homepage,
|
||||
the Traefik file-provider service and the UDM `PLEX` port-forward all resolve to `10.100.0.35`. A `grep` of `/opt` found
|
||||
`.24` only in rotated logs, a stale `seerr/settings.old.json`, and the previously-rendered
|
||||
`uptime_kuma/configure_monitors.py` (the role default is already `.35`, so the next role run overwrites it).
|
||||
|
||||
| # | Step | Result |
|
||||
|---|---|---|
|
||||
| 1 | Veeam `Backup VMs` | Plex removed via `Remove-VBRJobObject`. **Veeam converts a removed include into an explicit `Exclude` rather than deleting the entry** — re-running the removal leaves it as `Exclude`. That is the same shape as the pre-existing `Deployarr` exclusion and is the expected end state, not a failure. |
|
||||
| 2 | Power off + snapshot | Guest shut down gracefully via `govc vm.power -s Plex` (VMware Tools `toolsOk`); confirmed `plexmediaserver` was still `inactive`/`disabled` first. Snapshot `pre-docker-migration 2026-09-16` then removed **while powered off** — safer consolidation than the plan's on-line ordering. Disk collapsed `Plex-000001.vmdk` → `Plex.vmdk`, `runtime.consolidationNeeded = false`. |
|
||||
| 3 | Delete VMDKs | **Deferred to ~2026-10-15**, per plan. |
|
||||
| 4 | Guacamole "Plex SSH" | Deleted via the Guacamole API (connection id 3, `HTTP 204`). **The `guacamole` role is create-only** (`when: item.name not in guac_existing_names`), so it cannot remove a connection — the entry was also deleted from `roles/guacamole/defaults/main.yml` so a rebuild does not recreate it. |
|
||||
| 5 | Addresses | Neither MAC had a Unifi fixed reservation, so `.24`/`10.50.0.31` were plain leases; both clients (`00:0c:29:4a:ef:3d`, `00:0c:29:4a:ef:47`) were forgotten via `cmd/stamgr`. |
|
||||
| 6 | Docs | [plex.md](plex.md), [CLAUDE.md](CLAUDE.md), [esxi.md](esxi.md), [veeam.md](veeam.md). `docker.md` already listed `plex`. ESXi port-group counts corrected LAN_100 7→6 and DATA_50 4→3, verified by counting NICs on powered-on VMs. |
|
||||
| 7 | Memory | `plex-docker-migration` and `debian-11-eol-2026-08-31` updated. |
|
||||
|
||||
**Safety net still in place:** the powered-off VM with intact disks, plus the verified off-box library DB at
|
||||
`/mnt/share/backups/plex-migration-2026-09-16/` (429 MB, WAL checkpointed to 0 bytes; reads clean — 70,761 `media_parts`,
|
||||
48,395 `metadata_items`, 3 `section_locations`).
|
||||
|
||||
> Note: a plain `sqlite3` `integrity_check`/`quick_check` on a Plex library DB fails with
|
||||
> `unknown tokenizer: collating`. That is the stock binary lacking Plex's custom collation on the FTS virtual tables, **not**
|
||||
> corruption — use `Plex SQLite` for a real whole-DB check. Ordinary table queries work fine with stock `sqlite3`.
|
||||
|
||||
**Before deleting the VMDKs**, confirm no Veeam restore point is still needed, then:
|
||||
`govc vm.destroy Plex` (removes the VM and its `[NVME_1] Plex/` folder).
|
||||
|
||||
---
|
||||
|
||||
## 10. Risks
|
||||
|
||||
Reference in New Issue
Block a user