Onboarding a new machine¶
Bringing any new device into the backup estate is self-service and takes about
fifteen minutes. The heavy lifting is one script on ops
(add-backup-endpoint.sh); everything else is typing what it prints into
KopiaUI and proving the result works.
Where things live
The Kopia repo sits on the NAS but endpoints never mount it — they talk
HTTPS to the Kopia repository server on the ops LXC
(https://192.168.1.190:51515). One server user exists per machine
(backup@<name>); passwords live in /etc/backup-stack/kopia-users.env
on ops. Central knobs (server URL, upload cap, minimum-source count) live
in /etc/backup-stack/backup-targets.env on ops.
The six-step recipe¶
1. Network first¶
- Give the machine a DHCP reservation in the UniFi console.
- If it should back up away from home, install Tailscale and sign in.
macOS / iOS / Windows accept subnet routes by default; Linux machines need
sudo tailscale set --accept-routesto see the home LAN remotely (ops advertises192.168.1.0/24— see Tailscale).
2. Create its backup identity — one command on ops¶
Pick a short name (e.g. pc3) and run:
ssh root@192.168.1.190 add-backup-endpoint.sh pc3
It creates the server user, stores the password in kopia-users.env,
restarts the Kopia server, and prints everything step 3 asks for (server
URL, cert fingerprint, username, hostname, password). Safe to re-run — it
just reprints.
3. Connect the machine (KopiaUI)¶
Install KopiaUI (winget install Kopia.KopiaUI on Windows,
brew install kopia or the KopiaUI app on macOS), then
Connect to Repository Server and enter exactly what step 2 printed:
| KopiaUI field | Value |
|---|---|
| Server address | https://192.168.1.190:51515 |
| Trusted server certificate fingerprint | c35cdeb5ccea0b2de0610cff4aaf0da977fe649f169f0956f7bf3676d3806756 |
| Username override | backup |
| Hostname override | the machine's short name (pc3, tablet, …) |
| Password | printed by add-backup-endpoint.sh (stored in kopia-users.env on ops) |
Then add the machine's folders as snapshot sources — the global policy (hourly snapshots, retention, compression) applies automatically. Bandwidth needs no per-machine setup: a 10 MB/s cap is enforced repo-wide on ops.
Fingerprint changed?
Re-derive it on ops anytime:
openssl x509 -in /etc/backup-stack/kopia.cert -noout -fingerprint -sha256
(strip colons, lowercase).
For a pure-CLI box (Linux/VPS) the equivalent is:
kopia repository connect server \
--url "https://192.168.1.190:51515" \
--server-cert-fingerprint "c35cdeb5ccea0b2de0610cff4aaf0da977fe649f169f0956f7bf3676d3806756" \
--override-username backup --override-hostname <name>
plus a systemd timer / launchd job running kopia snapshot create on its
source list.
4. Tell the monitor to expect it¶
After its first snapshot completes, bump KOPIA_MIN_SOURCES by one in
/etc/backup-stack/backup-targets.env on ops. From then on the machine going
missing shows up in the daily digest. (First-backups-not-yet-finished are
digest-only by design — they never page.)
5. Windows extras (Veeam + WoL)¶
- Configure a Veeam Agent image job per the Veeam checklist pattern — entire computer, SMB share on the NAS, game-directory exclusions, job encryption ON (password in the password manager, not the NAS password), and create the recovery-media USB after the first run.
- Record the machine's MAC on ops and add a
wol-*.timerfor its backup window.
WoL timers are gated OFF
Scheduled nightly wakes stay disabled (WOL_ENABLED=0 in the config)
until Veeam is actually configured — there is nothing to wake for yet.
Manual wake works today: ssh root@192.168.1.190 wol-wake.sh pc1|pc2.
The tablet is WiFi-only, which WoL cannot reliably reach — its Veeam job
should use Windows' own wake-from-sleep instead.
6. Prove it before trusting it¶
Take a snapshot, then restore one file to the Desktop and open it. The next morning's digest should list the new source. This step is mandatory — unproven backups are the house-rule violation; this estate ran a system that reported green for 62 nights while backing up nothing (see Security history).
Rotating a machine's Kopia password¶
Do this if a laptop is lost/stolen (lost device) or on general hygiene:
-
On ops, set a new password for the server user (let it prompt rather than putting the value in shell history):
kopia server users set backup@pc3 --ask-user-password -
Update that machine's line in
/etc/backup-stack/kopia-users.envon ops so the file stays the source of truth. systemctl restart kopia-serveron ops so the server picks up the change. The old credential is now dead — the machine's snapshots start failing soft.- On the endpoint, reconnect with the new password (KopiaUI → repository → disconnect → Connect to Repository Server again, same fields as step 3 above).
- Verify: take a snapshot, confirm it completes.
Note
Rotating a user password does not touch the repository master password (vaulted in the password manager) — endpoints never see that.
Related: backups overview · restores · off-site · current status