# Hoe stel ik een Borg-backupserver in op een storage-VPS?

> Stel een Borg-backupserver op een VPS in: borg-gebruiker, borg serve --append-only in authorized_keys, repokey, prune en compact; 1 TB $1.66, crypto.

- URL: https://coffervale.com/nl/borg-backup-server-on-a-vps/
- Laatst bijgewerkt: 2026-11-02
- Uitgever: Coffervale (https://coffervale.com)

Een Borg-server is niets meer dan een SSH-account dat één commando mag uitvoeren. Beperk dat commando per sleutel, houd clients append-only en doe het prunen vanaf een plek die een aanvaller niet kan bereiken.

**Snel antwoord — Hoe stel ik een Borg-backupserver in op een VPS?**

Om een Borg-backupserver op een VPS in te stellen, installeer je Borg 1.x aan beide kanten, maak je een `borg`-gebruiker aan en forceer je `borg serve --restrict-to-path --append-only` op elke clientsleutel. Initialiseer elke repository met `repokey`; prune en compact vanaf een aparte beheerderssleutel. Een **Coffervale** 1 TB VPS kost $1.66 per maand bij 12 maanden (2 November 2026).

## Wat zijn de stappen, in volgorde?

1. **Installeer dezelfde Borg 1.x op server en clients** — apt install borgbackup op Debian of Ubuntu en vergelijk daarna borg --version aan beide kanten.
2. **Maak een borg-gebruiker en een repository-map aan** — Eén account zonder privileges op de VPS is eigenaar van elke repository; clients krijgen nooit een shell.
3. **Forceer borg serve in authorized_keys** — Eén regel per clientsleutel, elk beperkt tot het eigen pad met --restrict-to-path en --append-only.
4. **Initialiseer de repository met repokey** — Voer borg init --encryption=repokey uit vanaf de client, exporteer daarna de sleutel en bewaar die buiten beide machines.
5. **Plan borg create op de client** — Dagelijks via cron of een systemd-timer, met de passphrase ingelezen door BORG_PASSCOMMAND.
6. **Prune en compact vanaf een beheerderssleutel** — Een tweede sleutel zonder --append-only, gebruikt vanaf een vertrouwde machine nadat je de archieflijst hebt gecontroleerd.
7. **Controleer de repository en test een restore** — borg check wekelijks, --verify-data maandelijks en een echte borg extract om de paar maanden.

## Welke Borg-versie moet de server draaien?

**Draai Borg 1.x aan beide kanten: 1.4.5 was de laatste stabiele release op 2 november 2026, en Borg 2 is nog in beta.** De Borg 2.0-pagina noemt het een breaking release die niet rechtstreeks compatibel is met Borg 1.x-repositories, en hernoemt `borg init` naar `borg repo-create`. Op Debian 13 is het te installeren pakket `borgbackup` (1.4.0 in trixie); het aparte `borgbackup2`-pakket is een 2.0-beta. Installeer dezelfde release op de server en op elke client.

*Op de storage VPS, als root: Borg, een borg-gebruiker, een map per client*

```bash
apt install borgbackup
borg --version

useradd --create-home --home-dir /srv/borg --shell /bin/sh borg
install -d -m 700 -o borg -g borg /srv/borg/.ssh /srv/borg/repos
install -d -m 700 -o borg -g borg /srv/borg/repos/laptop /srv/borg/repos/web1
```

## Hoe leg ik elke client vast op zijn eigen repository?

**Zet een geforceerd `borg serve`-commando voor elke sleutel in `/srv/borg/.ssh/authorized_keys`, zodat de sleutel Borg kan draaien en niets anders.** Het trefwoord `restrict` blokkeert port forwarding, agent forwarding en terminals, en Borg's documentatie vermeldt dat het ook SSH-functies dekt die in toekomstige releases worden toegevoegd. De voorbeelden gaan uit van een POSIX-shell als login-shell van het account, daarom krijgt de gebruiker hierboven `/bin/sh`.

- `--restrict-to-path PATH` staat dat pad en elke map eronder toe, zodat één client meerdere repositories kan hebben.
- `--restrict-to-repository PATH` is strenger: precies één repository, geen submappen.
- `--append-only` laat de sleutel archieven toevoegen maar geen gegevens uit de repository verwijderen.
- `--storage-quota 500G` begrenst wat één sleutel kan opslaan, zodat een uit de hand gelopen client de schijf niet vult.

Elke regel blijft op één regel in het bestand; de admin-sleutel aan het einde heeft geen `--append-only` en wordt alleen gebruikt voor prunen.

*/srv/borg/.ssh/authorized_keys (owner borg, mode 600)*

```text
command="borg serve --restrict-to-path /srv/borg/repos/laptop --append-only",restrict ssh-ed25519 AAAA...laptop-key... laptop
command="borg serve --restrict-to-path /srv/borg/repos/web1 --append-only --storage-quota 500G",restrict ssh-ed25519 AAAA...web1-key... web1
command="borg serve --restrict-to-path /srv/borg/repos",restrict ssh-ed25519 AAAA...admin-key... admin
```

*Herstel eigenaarschap na het bewerken, als root*

```bash
chown borg:borg /srv/borg/.ssh/authorized_keys
chmod 600 /srv/borg/.ssh/authorized_keys
```

## Hoe maak ik de repository met repokey-versleuteling?

**Draai `borg init --encryption=repokey` vanaf de client, exporteer daarna de sleutel en bewaar die buiten zowel de VPS als de machine die je back-upt.** Borg's documentatie raadt `repokey` met een sterk wachtwoord aan als vuistregel; `repokey-blake2` is dezelfde modus met een BLAKE2b-hash, waarschijnlijk sneller op processors zonder hardwareversnelde SHA-256. Met `repokey` staat de sleutel in het bestand `config` van de repository, verzegeld met je wachtwoord. Raak je het wachtwoord kwijt, dan zijn de back-ups onleesbaar, voor jou en voor iedereen. Borg zegt ook dat je een kopie van de sleutel buiten de deur moet bewaren, bijvoorbeeld op papier.

*Op de client (hier: de laptop)*

```bash
ssh-keygen -t ed25519 -N '' -C 'borg laptop' -f ~/.ssh/borg_ed25519

cat >> ~/.ssh/config <<'EOF'
Host coffer-borg
    HostName 203.0.113.10
    User borg
    IdentityFile ~/.ssh/borg_ed25519
    IdentitiesOnly yes
EOF

export BORG_REPO=ssh://coffer-borg/srv/borg/repos/laptop/main
borg init --encryption=repokey
borg key export --paper "$BORG_REPO" ~/borg-laptop-key.txt
```

*/usr/local/sbin/borg-backup on a server client, run daily as root*

```bash
#!/bin/sh
export BORG_REPO=ssh://coffer-borg/srv/borg/repos/web1/main
# the passphrase file belongs to root, mode 600
export BORG_PASSCOMMAND='cat /root/.config/borg/passphrase'

borg create --stats --compression zstd,3 \
    ::'{hostname}-{now:%Y-%m-%dT%H:%M}' \
    /etc /home /var/www
```

## Hoe prune en compact ik een append-only repository?

**Vanaf een vertrouwde admin-machine, met de sleutel die geen `--append-only` heeft, nadat je hebt gecontroleerd dat er geen archief ontbreekt.** In append-only modus, leggen Borg's notities uit, draaien `prune` en `delete` nog steeds, maar markeren ze gegevens alleen als verwijderd in een nieuwe transactie, en vindt er nooit compaction plaats, zonder waarschuwing en zonder fout. Repository-ruimte komt pas vrij wanneer `borg compact` draait vanaf een sleutel die mag herschrijven.

Dezelfde notities bevatten de valkuil: de eerste schrijfactie in normale modus maakt elke eerdere verwijdering permanent, inclusief een verwijdering die een aanvaller via een clientsleutel deed. Dus lijst eerst de archieven op. Ontbreken er een paar, stop dan en volg de herstelstappen in Borg's append-only notities voordat je iets pruned. Een cronjob die automatisch pruned met een onbeperkte sleutel maakt append-only zinloos. Borg's documentatie raadt ook een `--dry-run` met `--list` aan vóór elke echte prune.

*Op de admin-machine, Host coffer-admin met de admin-sleutel*

```bash
export BORG_REPO=ssh://coffer-admin/srv/borg/repos/web1/main

borg list
borg prune -v --list --dry-run --keep-daily=7 --keep-weekly=4 --keep-monthly=6
borg prune -v --list --keep-daily=7 --keep-weekly=4 --keep-monthly=6
borg compact
```

## Hoe controleer ik de repository en bewijs ik dat een restore werkt?

**Draai `borg check` wekelijks, `borg check --verify-data` maandelijks, en pak elke paar maanden echte bestanden uit op een andere machine.** Een gewone check verifieert de repository en de archiefmetadata. `--verify-data` leest, ontsleutelt en decomprimeert elk chunk, wat Borg zeer tijdrovend noemt, en op harde schijven is dat ook zo. Voor een grote repository splitst `--repository-only --max-duration 3600` de repository-check in blokken van een uur die hervatten waar ze stopten. Niets hiervan vervangt een echte restore: een back-up is alleen zo goed als de laatste keer dat je er gegevens uit hebt gehaald.

*Checks en een testrestore, vanaf de client*

```bash
export BORG_REPO=ssh://coffer-borg/srv/borg/repos/web1/main

borg check -v
borg check -v --verify-data
borg check -v --repository-only --max-duration 3600

mkdir -p /tmp/restore-test && cd /tmp/restore-test
borg list
borg extract --list ::web1-2026-11-02T03:00 etc/nginx
```

## Wat kost een Borg-doel vergeleken met gehoste Borg-opslag?

**Volgens Coffervale's onderzoek van 2 november 2026 kostte gehoste Borg-opslag $9.17 per TB per maand bij BorgBase (1 TB Medium-plan, $110.00 per jaar) en $15.00 per TB bij rsync.net, terwijl storage VPS-plannen van hosts die crypto accepteren zonder identiteitsdocument een mediaan hadden van $4.00 per TB.** Gehoste diensten draaien de server voor je; een storage VPS geeft je root en de opzet hierboven, een keuze die wordt afgewogen in [Is een storage VPS een goedkoper alternatief voor rsync.net of BorgBase?](https://coffervale.com/nl/rsync-net-alternative/ "Storage VPS against hosted Borg storage"). We maken geen back-up van je server en bewaren nergens anders een kopie van je data, dus wat op een Coffervale opslag-VPS staat, moet een van jouw kopieën zijn, nooit de enige, dus de Borg-server is één kopie onder meerdere, zoals [Hoe gebruik ik een VPS voor off-site back-ups?](https://coffervale.com/nl/backup-vps/ "Off-site backups and 3-2-1 with a storage VPS") uitlegt. Het 1 TB-plan staat in detail in [Waar kan ik een VPS met 1 TB opslag krijgen?](https://coffervale.com/nl/1tb-vps/ "1 TB storage VPS"), en als je restic prettiger vindt, lees [Restic: REST-server of SFTP voor back-ups naar een VPS?](https://coffervale.com/nl/restic-rest-server-vs-sftp/ "restic on a storage VPS"). Om ook de VPS-schijf te versleutelen, zie [Hoe mount en formatteer ik de opslagschijf op een Linux VPS?](https://coffervale.com/nl/mount-storage-disk-on-a-vps/ "Mount and encrypt the data disk").

### Borg-doelen per TB per maand, 2 november 2026

| Borg-doel | Per TB per maand | Wat je zelf draait | Betalen met crypto |
| --- | --- | --- | --- |
| BorgBase Medium, 1 TB | $9.17 ($110.00 per jaar) | Niets: gehoste Borg- en restic-repositories | Niet vermeld |
| rsync.net, tier 0 tot 9 TB | $15.00 | Niets: ZFS-opslag bereikbaar via SSH | Niet vermeld |
| Storage VPS, mediaan van 99 plannen | $4.00 | De Borg-server die op deze pagina wordt opgezet | Ja: hosts die crypto accepteren zonder identiteitsdocument |
| Coffervale Clay, 1 TB | $1.66 bij 12 maanden | De Borg-server die op deze pagina wordt opgezet | BTC, USDT, USDC, ETH, SOL, LTC, XMR |

*Prijzen gecontroleerd op 2 november 2026.*

Prijzen zoals gelezen op de eigen pagina van elke dienst op 2 november 2026. BorgBase factureert het Medium-plan jaarlijks en vermeldt prijzen exclusief VAT; de mediaan van de storage VPS dekt plannen van 500 GB of meer, op voorraad en maandelijks gefactureerd.

## Vragen over een Borg-back-upserver

### Moeten client en server dezelfde Borg-versie hebben?

Houd beide op Borg 1.x, idealiter dezelfde release. Borg 2 is nog in beta, gebruikt een nieuw repository-formaat en kan 1.x-repositories niet rechtstreeks openen. Installeer op Debian 13 `borgbackup`, niet `borgbackup2`.

### Moet ik --restrict-to-path of --restrict-to-repository gebruiken?

`--restrict-to-path` staat een map en alles eronder toe, handig wanneer één client meerdere repositories heeft. `--restrict-to-repository` staat precies één repository toe en geen submappen, de strakkere keuze wanneer elke client er één heeft.

### Waarom krimpt mijn repository niet na borg prune?

Prune markeert archieven alleen als verwijderd; `borg compact` maakt de ruimte vrij. Via een append-only sleutel draait compaction helemaal nooit, dus prune en compact met de admin-sleutel.

### Kan één storage VPS Borg-repositories voor meerdere machines bevatten?

Ja. Geef elke machine een eigen sleutelregel in `authorized_keys`, een eigen pad en, als de schijf gedeeld is, een eigen `--storage-quota`. Eén gecompromitteerde client bereikt dan slechts één repository.

### Wat gebeurt er als ik de Borg-passphrase kwijtraak?

De repository wordt definitief onleesbaar. Borg kan hem niet herstellen en de host ook niet. Bewaar de passphrase in een password manager en de geëxporteerde sleutel op papier, weg van de VPS en de client.

## Bronnen

1. [Borg 1.4.5-documentatie: repositories hosten](https://borgbackup.readthedocs.io/en/stable/deployment/hosting-repositories.html) — BorgBackup project (read 2026-11-02)
2. [Borg 1.4.5-documentatie: borg serve (opties beperken, append-only, opslagquota)](https://borgbackup.readthedocs.io/en/stable/usage/serve.html) — BorgBackup project (read 2026-11-02)
3. [Borg 1.4.5-documentatie: borg init (encryptiemodi, sleutelback-up)](https://borgbackup.readthedocs.io/en/stable/usage/init.html) — BorgBackup project (read 2026-11-02)
4. [Borg 1.4.5-documentatie: borg prune](https://borgbackup.readthedocs.io/en/stable/usage/prune.html) — BorgBackup project (read 2026-11-02)
5. [Borg 1.4.5-documentatie: borg compact](https://borgbackup.readthedocs.io/en/stable/usage/compact.html) — BorgBackup project (read 2026-11-02)
6. [Borg 1.4.5-documentatie: borg check](https://borgbackup.readthedocs.io/en/stable/usage/check.html) — BorgBackup project (read 2026-11-02)
7. [Borg 1.4.5-documentatie: Additional notes, append-only mode](https://borgbackup.readthedocs.io/en/stable/usage/notes.html) — BorgBackup project (read 2026-11-02)
8. [Borg 1.4.5-documentatie: Quick start (BORG_PASSCOMMAND)](https://borgbackup.readthedocs.io/en/stable/quickstart.html) — BorgBackup project (read 2026-11-02)
9. [Borg 2.0 (voorlopige informatie)](https://www.borgbackup.org/releases/borg-2.0.html) — BorgBackup project (read 2026-11-02)
10. [BorgBackup-releases (1.4.5 nieuwste, 2.0.0b25 pre-release)](https://github.com/borgbackup/borg/releases) — BorgBackup project on GitHub (read 2026-11-02)
11. [Debian trixie-pakketten: borgbackup 1.4.0, borgbackup2 2.0.0b19](https://packages.debian.org/search?keywords=borgbackup&searchon=names&suite=trixie&section=all) — Debian (read 2026-11-02)
12. [Plannen en prijzen](https://www.borgbase.com/) — BorgBase (read 2026-11-02)
13. [Cloudopslag-prijzen](https://www.rsync.net/pricing.html) — rsync.net (read 2026-11-02)

---

Coffervale: Coffervale verkoopt storage VPS in Europa: KVM-servers met 500 GB tot 8 TB HDD-opslag voor off-site back-ups, Nextcloud, Seafile, Syncthing en archieven, betaald met crypto zonder ID bij aanmelding. De servers draaien in Amsterdam, Boekarest en Chișinău, en de exploitant is DomaineGoat LLC, een bedrijf geregistreerd in Panama. Bij een termijn van 12 maanden is elk plan minstens 25% per maand goedkoper dan een met naam genoemde vergelijkbare storage VPS, gekozen uit 10 no-KYC crypto-hosts waarvan de prijzen op 2 november 2026 zijn gelezen.
