27 Commits
Author SHA1 Message Date
TW 0dd454d7f8 Merge pull request #10405 from ThomasWaldmann/docs-yubikey
docs: derive the borg passphrase from a YubiKey (challenge-response)
2026-09-23 02:25:48 +02:00
Thomas WaldmannandClaude Fable 5 eff90e0c39 docs: deployment guide for YubiKey challenge-response passphrases
New deployment chapter deriving the borg passphrase from a YubiKey OTP
slot's HMAC-SHA1 challenge-response via BORG_PASSCOMMAND: only a random
challenge is stored, the passphrase itself is computed by the token on
every unlock (the long-proven KeePassXC-style mechanism, as also
documented for restic in the Arch wiki).

Covers programming a slot with and without touch (touchless =
unattended backups, --touch = presence-gated interactive use),
redundant twin YubiKeys via a shared slot secret, adding the derived
passphrase as an additional borg key to an existing repository, the
paper copy of the derived passphrase as the recovery path, and honest
caveats: Yubico-proprietary (not on other vendors' keys nor the
FIDO2-only Security Key series - the age guide covers those), two
scarce slots, device-bound vs presence-gated threat model, macOS Input
Monitoring permission, and ykman instead of the deprecated ykpers
tooling.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-09-22 19:16:02 +02:00
Thomas WaldmannandClaude Fable 5 08e891c0f4 docs: deployment guide for age-based passphrase protection (hardware keys)
New deployment chapter showing how to combine BORG_PASSCOMMAND with
age: a strong random borg passphrase stored age-encrypted, decrypted on
demand - and, via the age plugin ecosystem, bound to hardware: any
FIDO2 security key (age-plugin-fido2-hmac, touch-gated by CTAP spec,
interactive use), YubiKey PIV (age-plugin-yubikey, policies allow
silent unattended use), TPM 2.0 (age-plugin-tpm) and Apple Secure
Enclave (age-plugin-se) for machine-bound unattended backups.

The guide starts with a plain no-hardware example to introduce the
pattern, gives an at-a-glance table of what works unattended vs. what
requires user presence, covers multi-recipient redundancy (several
YubiKeys / TPM unlocking the same passphrase), the offline paper copy
as the recovery path, revocation (change-passphrase, not just
re-encrypting) and an honest threat-model note (at-rest protection;
presence-gated options prevent silent unlocking, device-bound ones do
not).

This is the supported way to use hardware-backed key protection with
borg, instead of borg-native hardware integrations. See the discussion
in borgbackup/borg#8995 / borgbackup/borg#10399.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-09-22 18:50:57 +02:00
Stephan Herbers a06c42cf1f add non-root deployment strategy 2024-02-24 21:17:01 +01:00
Thalian a89539439e #1552 Deployment Pull Backup (#4804)
docs: add a pull backup / push restore how-to, fixes #1552
2019-11-02 13:48:32 +01:00
Milkey Mouse c0edc60ca6 Move image backup-related FAQ entries to a new page 2017-11-23 12:14:35 -08:00
Marian Beermann 25bee21253 docs: deployment: Automated backups to a local hard drive 2017-06-11 20:46:53 +02:00
Marian Beermann 13fe802713 docs: deployment: hosting repositories 2017-06-09 16:08:47 +02:00
Marian Beermann c5d2c7c799 docs: split deployment 2017-06-09 16:00:46 +02:00
Thomas Waldmann 09e74af7bf Merge branch '1.0-maint' 2016-10-24 21:41:20 +02:00
Florian Klink 88f7f8673d docs/deployment.rst: do not use bare variables in ansible snippet
The current snippet throws deprecation warnings:

```
[DEPRECATION WARNING]: Using bare variables is deprecated. Update your 
playbooks so that the environment value uses the full variable syntax 
('{{auth_users}}').
This feature will be removed in a future 
release. Deprecation warnings can be disabled by setting 
deprecation_warnings=False in ansible.cfg.
```
2016-10-24 02:34:28 +02:00
Thomas Waldmann b0cc4fd74a Merge branch '1.0-maint' into merge-1.0-maint 2016-10-13 19:10:04 +02:00
Marian Beermann 573cb616d3 deployment: synthesize alternative --restrict-to-path example 2016-10-06 01:00:07 +02:00
Simon Heath cf1c73b4f9 Added docs explaining multiple --restrict-to-path flags, with example (take 2) 2016-10-03 09:25:48 +02:00
Lee Bousfield b652f4039c Remove trailing whitespace 2016-07-28 10:35:41 -04:00
Marian Beermann 2e6eb63174 Merge branch '1.0-maint' into master 2016-07-14 01:28:26 +02:00
Thomas Waldmann cf4d761042 docs: fix the highlighting
default is "python", that's why some help fragments and bash scripts looked strange.
2016-07-11 23:16:53 +02:00
Simon Heath 43fc7a267f Fixed formatting 2016-04-21 15:11:43 -04:00
Simon Heath 621aed00db Contributed Salt example to docs 2016-04-21 15:10:25 -04:00
jhemmje aeec29545e docs: Updated examples in deployment.rst, fixes #644 2016-02-15 21:37:50 +01:00
Thomas Waldmann 0a0f483daa docs about borg serve's special support for forced/original ssh commands, fixes #544 2016-02-01 01:18:37 +01:00
Robin Schneider 57b0ab7475 Fixed spelling in deployment docs. 2016-01-31 11:50:06 +01:00
Piotr Pawlow a3fa965ded Added no-agent-forwarding,no-user-rc to SSH key options. 2016-01-18 18:39:11 +01:00
Robin Schneider 665c3db2e9 Improved understandability of sentence in deployment.rst.
Thanks to @xor-gate.

Related to https://github.com/borgbackup/borg/pull/529/files#r49952612
2016-01-18 09:32:51 +01:00
Robin Schneider 576348a9d4 Use HTTPS everywhere. Especially when the website already redirects to HTTPS. 2016-01-17 22:31:08 +01:00
Jerry Jacobs a1e1ce552c Update README.md with doc|stable shield, minor markup fixes on docs/deployment.rst 2016-01-15 20:02:42 +01:00
Jerry Jacobs a7c1419b6e docs/deployment: Add borg storage server setup example 2016-01-13 21:06:03 +01:00