borg-anchor

Borg backups with Bitcoin timestamping. Your data lives on forever.
Overview
borg-anchor combines BorgBackup (deduplicating archiver) with Bitcoin timestamping to create backups with cryptographic proof of existence.
Your Data → Borg Backup → Bitcoin Anchor → Immortal Proof
Features
- Deduplication - Only store changes, not duplicates
- Compression - Efficient storage with lz4/zstd
- Encryption - Optional AES-256 encryption
- Bitcoin Timestamping - Immutable proof your backup existed
- Chained Proofs - Each backup linked to previous via UTXO chain
Installation
npm install -g borg-anchor
Prerequisites
Quick Start
borg-anchor init ~/backups
cd ~/backups
git config nostr.privkey <your-hex-privkey>
borg-anchor backup ~/mydata --name first-backup
borg-anchor info
borg-anchor list
borg-anchor verify first-backup
borg-anchor restore first-backup /tmp/restore
Commands
info | Dashboard of all projects (CLI) |
dashboard | Web dashboard (localhost:3077) |
init [path] | Initialize borg repo and config |
backup <source> | Create backup and anchor on Bitcoin |
list | List backups and trail status |
verify <archive> | Verify backup is anchored |
restore <archive> [dest] | Restore backup to destination |
show | Show config and trail status |
Options
Init Options
--repo <name> | repo | Borg repository directory name |
--encryption <type> | none | none, repokey, repokey-blake2 |
--network <net> | tbtc4 | btc (mainnet) or tbtc4 (testnet) |
Backup Options
--name <name> | backup-YYYY-MM-DD | Archive name |
--no-anchor | - | Skip Bitcoin anchoring |
--dry | - | Dry run (don't broadcast) |
How It Works
- Borg creates a deduplicated backup with a unique fingerprint (SHA-256)
- The fingerprint is anchored on Bitcoin via a chained UTXO trail
- Anyone can verify the backup existed at the anchored time
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Your Files │ ──▶ │ Borg Backup │ ──▶ │ Bitcoin TX │
│ │ │ fingerprint │ │ timestamp │
└─────────────┘ └─────────────┘ └─────────────┘
Files
After initialization, your backup directory contains:
~/backups/
├── .borg-anchor.json # Configuration
├── .blocktrail.json # Bitcoin trail state
├── .git/ # Git repo (holds keys)
└── repo/ # Borg repository
Projects are also registered globally for the dashboard:
~/.borg-anchor/
└── projects.json # List of all borg-anchor projects
Verification
To verify a backup:
borg info ~/backups/repo::my-backup | grep fingerprint
borg-anchor verify my-backup
The fingerprint in your backup must match the fingerprint recorded on Bitcoin.
Networks
tbtc4 | --network tbtc4 | Testing (free, default) |
btc | --network btc | Production (real Bitcoin) |
License
AGPL-3.0
Links