Phase 11 · Run over SSH
Testing & Backups
Validate the complete setup with a checklist and configure automated backups.
System State Validation Checklist¶
Run each command over SSH and compare the output to the expected result. Every item should pass before you consider setup complete.
Group A — OS & Headless Config¶
Expected:zzz-headless-server.conf only (no bazzite-autologin.conf)
Expected: greeter on seat0 (unless start-kde or start-gaming were executed)
Expected: Exactly one line showing *:22022
Expected: ssh_port_t tcp 22022, 22
Group B — Storage & Docker¶
Expected:system_u:object_r:container_file_t:s0 /srv/nextcloud-data
Expected: Shows your data drive's capacity (not the OS drive's capacity)
Expected: duckdns, nginx-proxy-manager, nextcloud-aio-mastercontainer, wg-easy all showing Up
Group C — Firewall¶
Expected output should include:Ports 80, 443, and 51820 are absent — this is correct
Docker manages these ports directly via iptables rules, bypassing firewalld's interface. Absent from firewall-cmd --list-all does not mean they're blocked.
Group D — Streaming & VPN¶
- Connect WireGuard on your device
- Confirm
ping <your-ip-address>succeeds - Run
sudo start-kde.shover SSH, then open Moonlight and connect to<your-ip-address> - Confirm a stream appears, then run
sudo stop-session.sh
Setting Up Backups (Borg)¶
Borg Backup is built directly into Nextcloud AIO. It creates compressed, deduplicated snapshots of your live Nextcloud data onto a second physical drive — so a drive failure can't take your data with it.
Why Borg?
Borg is free, open-source, and produces highly efficient incremental backups. Each backup snapshot only stores the data that changed since the last one, so daily backups use very little extra space.
Access the AIO panel via SSH tunnel:
Open https://localhost:9443. In the AIO admin panel, find the Borg Backup section:
- Set the backup destination path (e.g.
/mnt/backup-drive— mount your second drive there first) - Set a backup schedule — daily at a quiet time like 3 AM is typical
- Set a backup retention policy (e.g. keep 7 daily, 4 weekly, 3 monthly)
- Click Save and run a first manual backup to verify it works
✅ Phase 11 Complete¶
Your server passed all validation checks and automated backups are configured. The core server setup is complete.
Phase 12 is optional — it adds a webhook server and client launcher script for one-click remote gaming sessions without any SSH commands.