Manual Steps
This is the current checklist of work that Ansible does not perform.
New or Reinstalled Proxmox Host
- Install Proxmox and configure repositories, networking, and storage.
- Attach the TrueNAS
pve-computestorage. - Restore or create the Ubuntu Cloud-Init template.
- Create or restore each VM and record its VM ID.
- Configure DHCP reservations or Cloud-Init static addresses.
- Enable IOMMU/VFIO on the host and attach the RTX 3090 to the GPU VM.
- Ensure the Proxmox VM guest-agent option is enabled.
TrueNAS
- Create the expected datasets and SMB/CIFS shares.
- Configure users, ACLs, and share permissions.
- Protect media, service backups, the Ansible repository, and Proxmox dumps.
- Configure snapshots, retention, replication, and restore testing. These are not currently documented or automated.
New TrueNAS Dataset Migration
- Take fresh snapshots and keep the old TrueNAS system unchanged until the migration is verified.
- Prefer TrueNAS snapshot replication backed by ZFS send/receive. It preserves numeric UID/GID ownership, modes, ACLs, extended attributes, symlinks, dataset properties, and snapshots.
- Do not migrate datasets with an ordinary root-shell
cp -r; newly created objects can become owned byroot, and native symlinks can be incompatible with the VarrockmfsymlinksCIFS mount. - Back up and restore the TrueNAS configuration where appropriate, including the local users and SMB configuration. Recheck networking before applying configuration from different hardware.
- Verify that
tuerohas the same numeric UID and GID on both systems withid tuero. ZFS preserves numeric IDs, so matching names alone are insufficient. - Preserve encryption keys and recovery material separately before replicating encrypted datasets.
- Recreate or verify each SMB share, share path, ACL, and intended consumer listed in TrueNAS > Current Ansible Dependencies.
- Compare numeric ownership on both systems with
ls -lnand inspect representative ACLs withgetfacl. - Verify
projectsfrom Varrock by creating and deleting a temporary directory, modifying an imported file, and reading and deleting representative symlinks through/mnt/projects. - Verify the media and service-backup mounts from Ardougne and reconnect the
pve-computestorage from Proxmox. - Confirm snapshots, retention, replication, scrub, SMART, and alert schedules on the new system before retiring the old one.
Infra VM
- For the complete replacement-VM workflow, use Backups and Recovery > Recover a Fresh Infra VM.
- Complete
sudo tailscale upon first enrollment. - Approve subnet
10.0.0.0/24and exit-node use in the Tailscale admin console. - Configure Tailscale split DNS for
tuerolab.cathrough10.0.0.112. - Configure the router to distribute
10.0.0.112as LAN DNS. - Keep required AdGuard settings in Ansible; manual AdGuard UI changes are not backed up or restored.
Services VM Starting Blank Only
These steps apply only when intentionally deploying Ardougne without restoring the appdata archive. Do not repeat them after Backups and Recovery > Recover a Fresh Services VM: the archive restores qBittorrent, Gluetun, ARR, Prowlarr, Bazarr, and Caddy application state.
- Set qBittorrent’s permanent Web UI username/password.
- Set qBittorrent’s download directory to
/media/downloads. - Configure qBittorrent localhost authentication bypass. The current Gluetun port-forward hook uses qBittorrent’s unauthenticated local API to update its listening port.
- Configure ARR applications, indexers, download clients, and media roots if appdata is not restored.
- Create the Uptime Kuma administrator account, monitors, and Discord notifications if monitoring appdata is not restored.
- Use the guarded Ansible archive restore in Backups and Recovery > Recover a Fresh Services VM when moving to a fresh services VM. It intentionally does not support in-place overwrite of live appdata.
- Verify the Gluetun public IP, port forwarding, and kill switch.
Services VM Restored From Backup
No application Web UI reconfiguration is expected after a successful appdata restore. The archive restores:
- qBittorrent Web UI credentials, preferences, categories, and download configuration
- Gluetun state
- Radarr, Sonarr, Bazarr, and Prowlarr databases and settings
- ARR indexers, download-client configuration, media roots, and application links
- Caddy certificate and runtime state
- Uptime Kuma administrator account, monitors, notification integrations, status pages, and history
The generated PIA and Cloudflare environment files are recreated from Ansible Vault rather than restored from appdata. Confirm the Vault credentials remain valid, then follow Backups and Recovery > Recover a Fresh Services VM and verify the restored services.
Secrets and External Accounts
- Maintain the encrypted Ansible Vault and its password separately from the rebuilt VMs.
- Create or rotate the Cloudflare API token with
Zone:ReadandDNS:Editfortuerolab.ca. - Maintain PIA, TrueNAS, AdGuard, GitHub SSH, and Jupyter credentials in Vault.
- Ensure the Cloudflare token, Ansible Vault, and repository are recoverable after controller loss.
Before Risky Changes
- Run and verify
service-appdata-backup.service. - Confirm
.last-successis current. - Create a Proxmox VM backup when the change affects the guest OS or disks.
- Record any new service in Inventory and Services.
- Add stateful Compose projects to the backup list.
Planned Automation
- Proxmox VM backup schedule and retention.
- TrueNAS snapshot retention and replication.
- Automate initial Uptime Kuma monitor and notification provisioning, if UI-managed configuration becomes burdensome.
- Tailscale auth-key enrollment, if unattended rebuilding becomes desirable.
- Health checks for additional containers.