# Làm thế nào để thiết lập máy chủ sao lưu Borg trên VPS lưu trữ?

> Máy chủ sao lưu Borg trên VPS: borg serve --append-only trong authorized_keys, repokey, prune và compact; 1 TB $1.66, thanh toán bằng crypto.

- URL: https://coffervale.com/vi/borg-backup-server-on-a-vps/
- Cập nhật lần cuối: 2026-11-02
- Đơn vị phát hành: Coffervale (https://coffervale.com)

Máy chủ Borg chẳng qua chỉ là một tài khoản SSH được phép chạy một lệnh. Hãy khóa chặt lệnh đó theo từng khóa, giữ các máy khách ở chế độ append-only, và thực hiện việc prune từ một nơi mà kẻ tấn công không thể chạm tới.

**Trả lời nhanh — Làm thế nào để thiết lập máy chủ sao lưu Borg trên VPS?**

Để thiết lập máy chủ sao lưu Borg trên VPS, hãy cài Borg 1.x trên cả hai đầu, tạo người dùng `borg`, và ép buộc `borg serve --restrict-to-path --append-only` trên mỗi khóa máy khách. Khởi tạo mỗi kho lưu trữ bằng `repokey`; prune và compact từ một khóa quản trị riêng. Một VPS **Coffervale** 1 TB có giá $1.66 mỗi tháng khi trả cho 12 tháng (2 November 2026).

## Các bước theo thứ tự là gì?

1. **Cài cùng phiên bản Borg 1.x trên máy chủ và máy khách** — apt install borgbackup trên Debian hoặc Ubuntu, rồi so sánh borg --version trên cả hai đầu.
2. **Tạo người dùng borg và thư mục kho lưu trữ** — Một tài khoản không đặc quyền trên VPS sở hữu mọi kho lưu trữ; các máy khách không bao giờ có được shell.
3. **Ép buộc borg serve trong authorized_keys** — Mỗi khóa máy khách một dòng, mỗi dòng giới hạn trong đường dẫn riêng của nó với --restrict-to-path và --append-only.
4. **Khởi tạo kho lưu trữ bằng repokey** — Chạy borg init --encryption=repokey từ máy khách, rồi xuất khóa và cất giữ nó xa cả hai máy.
5. **Lên lịch borg create trên máy khách** — Hằng ngày từ cron hoặc một systemd timer, với passphrase được đọc bởi BORG_PASSCOMMAND.
6. **Prune và compact từ một khóa quản trị** — Một khóa thứ hai không có --append-only, dùng từ một máy đáng tin cậy sau khi kiểm tra danh sách lưu trữ.
7. **Kiểm tra kho lưu trữ và thử khôi phục** — borg check hằng tuần, --verify-data hằng tháng, và một lần borg extract thực sự vài tháng một lần.

## Server nên chạy phiên bản Borg nào?

**Chạy Borg 1.x ở cả hai đầu: 1.4.5 là bản phát hành ổn định mới nhất vào ngày 2 tháng 11 năm 2026, còn Borg 2 vẫn đang ở giai đoạn beta.** Trang Borg 2.0 gọi đây là một bản phát hành phá vỡ tương thích, không tương thích trực tiếp với các repository Borg 1.x, và đổi tên `borg init` thành `borg repo-create`. Trên Debian 13, package cần cài là `borgbackup` (1.4.0 trong trixie); package `borgbackup2` riêng là bản beta 2.0. Hãy cài cùng một bản phát hành trên server và trên mọi client.

*Trên storage VPS, với quyền root: Borg, một user borg, mỗi client một thư mục*

```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
```

## Làm thế nào để khóa mỗi client vào repository riêng của nó?

**Đặt một lệnh `borg serve` bắt buộc phía trước mỗi key trong `/srv/borg/.ssh/authorized_keys`, để key chỉ có thể chạy Borg và không làm được gì khác.** Từ khóa `restrict` chặn port forwarding, agent forwarding và terminal, và tài liệu của Borg lưu ý rằng nó cũng bao phủ các tính năng SSH được thêm vào trong các bản phát hành tương lai. Các ví dụ giả định shell đăng nhập của tài khoản là một POSIX shell, đó là lý do user ở trên nhận `/bin/sh`.

- `--restrict-to-path PATH` cho phép đường dẫn đó và mọi thư mục bên trong, nên một client có thể giữ nhiều repository.
- `--restrict-to-repository PATH` chặt hơn: đúng một repository, không có thư mục con.
- `--append-only` cho phép key thêm archive nhưng không xóa dữ liệu khỏi repository.
- `--storage-quota 500G` giới hạn lượng một key có thể lưu, nên một client chạy loạn không thể làm đầy ổ đĩa.

Mỗi dòng nằm trên một dòng trong file; key admin ở cuối không có `--append-only` và chỉ dùng để prune.

*/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
```

*Sửa quyền sở hữu sau khi chỉnh sửa, với quyền root*

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

## Làm thế nào để tạo repository với mã hóa repokey?

**Chạy `borg init --encryption=repokey` từ client, sau đó export key và giữ nó bên ngoài cả VPS lẫn máy bạn sao lưu.** Tài liệu của Borg khuyến nghị dùng `repokey` với một passphrase mạnh như nguyên tắc chung; `repokey-blake2` là cùng chế độ đó với hash BLAKE2b, có khả năng nhanh hơn trên các bộ xử lý không có tăng tốc phần cứng SHA-256. Với `repokey`, key nằm trong file `config` của repository, được niêm phong bằng passphrase của bạn. Mất passphrase là các bản sao lưu không thể đọc được, cả với bạn lẫn với mọi người khác. Borg cũng nói rằng bạn phải giữ một bản sao key ở ngoài site, ví dụ trên giấy.

*Trên client (ở đây: 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
```

## Làm thế nào để prune và compact một repository ở chế độ append-only?

**Từ một máy admin tin cậy, bằng key không có `--append-only`, sau khi đã kiểm tra rằng không có archive nào bị mất.** Ở chế độ append-only, ghi chú của Borg giải thích, `prune` và `delete` vẫn chạy nhưng chỉ đánh dấu dữ liệu là đã xóa trong một giao dịch mới, và việc compact không bao giờ diễn ra, không có cảnh báo và không có lỗi. Dung lượng repository không được giải phóng cho đến khi `borg compact` chạy từ một key được phép ghi lại.

Các ghi chú đó cũng nêu cái bẫy: lần ghi đầu tiên ở chế độ bình thường sẽ biến mọi lần xóa trước đó thành vĩnh viễn, kể cả lần xóa do kẻ tấn công thực hiện qua một key của client. Vậy nên hãy liệt kê các archive trước. Nếu có archive bị mất, hãy dừng lại và làm theo các bước khôi phục trong ghi chú append-only của Borg trước khi prune bất cứ thứ gì. Một cron job tự động prune bằng key không giới hạn làm cho append-only trở nên vô nghĩa. Tài liệu của Borg cũng khuyến nghị một `--dry-run` với `--list` trước mỗi lần prune thật.

*Trên máy admin, Host coffer-admin dùng key admin*

```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
```

## Làm thế nào để kiểm tra repository và chứng minh việc khôi phục hoạt động?

**Chạy `borg check` hàng tuần, `borg check --verify-data` hàng tháng, và trích xuất file thật sang một máy khác vài tháng một lần.** Một lần kiểm tra thông thường xác minh repository và metadata của archive. `--verify-data` đọc, giải mã và giải nén mọi chunk, mà Borg gọi là rất tốn thời gian, và trên ổ đĩa cứng thì đúng là vậy. Với một repository lớn, `--repository-only --max-duration 3600` chia việc kiểm tra repository thành các lát một giờ, tiếp tục từ chỗ đã dừng. Không điều nào trong số này thay thế được một lần khôi phục thực sự: một bản sao lưu chỉ tốt bằng lần cuối cùng bạn lấy được dữ liệu ra khỏi nó.

*Kiểm tra và thử khôi phục, từ 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
```

## Một target Borg tốn bao nhiêu so với lưu trữ Borg có sẵn?

**Theo khảo sát của Coffervale ngày 2 tháng 11 năm 2026, lưu trữ Borg có sẵn tốn $9.17 mỗi TB một tháng tại BorgBase (gói Medium 1 TB, $110.00 một năm) và $15.00 mỗi TB tại rsync.net, trong khi các gói storage VPS từ những host nhận crypto không cần giấy tờ tùy thân có trung vị là $4.00 mỗi TB.** Các dịch vụ có sẵn vận hành server thay bạn; một storage VPS trao cho bạn quyền root và phần thiết lập ở trên, một lựa chọn được cân nhắc trong [Is a storage VPS a cheaper alternative to rsync.net or BorgBase?](https://coffervale.com/vi/rsync-net-alternative/ "Storage VPS against hosted Borg storage"). Chúng tôi không sao lưu máy chủ của bạn và không giữ bản sao dữ liệu của bạn ở bất kỳ đâu khác, nên thứ nằm trên storage VPS của Coffervale phải là một trong các bản sao của bạn, không bao giờ là bản duy nhất, nên server Borg là một bản sao trong số nhiều bản, như [How do I use a VPS for off-site backups?](https://coffervale.com/vi/backup-vps/ "Off-site backups and 3-2-1 with a storage VPS") giải thích. Gói 1 TB được trình bày chi tiết trong [Where can I get a VPS with 1 TB of storage?](https://coffervale.com/vi/1tb-vps/ "1 TB storage VPS"), và nếu bạn thích restic hơn, hãy đọc [Restic: REST server or SFTP for backups to a VPS?](https://coffervale.com/vi/restic-rest-server-vs-sftp/ "restic on a storage VPS"). Để mã hóa cả ổ đĩa VPS, xem [How do I mount and format the storage disk on a Linux VPS?](https://coffervale.com/vi/mount-storage-disk-on-a-vps/ "Mount and encrypt the data disk").

### Target Borg mỗi TB một tháng, 2 tháng 11 năm 2026

| Target Borg | Mỗi TB một tháng | Những gì bạn tự vận hành | Thanh toán bằng crypto |
| --- | --- | --- | --- |
| BorgBase Medium, 1 TB | $9.17 ($110.00 một năm) | Không có: repository Borg và restic được host sẵn | Không nêu rõ |
| rsync.net, bậc 0 đến 9 TB | $15.00 | Không có: lưu trữ ZFS truy cập qua SSH | Không nêu rõ |
| Storage VPS, trung vị của 99 gói | $4.00 | Server Borg được thiết lập trên trang này | Có: các host nhận crypto không cần giấy tờ tùy thân |
| Coffervale Clay, 1 TB | $1.66 khi trả 12 tháng | Server Borg được thiết lập trên trang này | BTC, USDT, USDC, ETH, SOL, LTC, XMR |

*Giá được kiểm tra vào 2 tháng 11, 2026.*

Giá được đọc trên trang riêng của từng dịch vụ vào ngày 2 tháng 11 năm 2026. BorgBase tính phí gói Medium theo năm và nêu giá chưa gồm VAT; trung vị của storage VPS bao gồm các gói từ 500 GB trở lên, còn hàng và tính phí theo tháng.

## Câu hỏi về một server sao lưu Borg

### Client và server có cần cùng phiên bản Borg không?

Giữ cả hai ở Borg 1.x, lý tưởng là cùng một bản phát hành. Borg 2 vẫn đang beta, dùng định dạng repository mới và không thể mở trực tiếp các repository 1.x. Trên Debian 13 hãy cài `borgbackup`, không phải `borgbackup2`.

### Tôi nên dùng --restrict-to-path hay --restrict-to-repository?

`--restrict-to-path` cho phép một thư mục và mọi thứ bên trong, tiện khi một client giữ nhiều repository. `--restrict-to-repository` chỉ cho phép đúng một repository và không có thư mục con, lựa chọn chặt hơn khi mỗi client có một repository.

### Tại sao repository của tôi không nhỏ đi sau borg prune?

Prune chỉ đánh dấu các archive là đã xóa; `borg compact` giải phóng dung lượng. Qua một key append-only, việc compact không bao giờ chạy, nên hãy prune và compact từ key admin.

### Một storage VPS có thể chứa repository Borg cho nhiều máy không?

Đúng vậy. Hãy cấp cho mỗi máy một dòng khóa riêng trong `authorized_keys`, đường dẫn riêng và, nếu đĩa dùng chung, thì `--storage-quota` riêng. Khi đó một client bị xâm phạm chỉ chạm tới được một repository.

### Điều gì xảy ra nếu tôi mất passphrase Borg?

Repository sẽ vĩnh viễn không đọc được. Borg không thể khôi phục và máy chủ cũng vậy. Hãy lưu passphrase trong trình quản lý mật khẩu và bản khóa đã xuất ra trên giấy, để xa khỏi VPS và client.

## Nguồn

1. [Tài liệu Borg 1.4.5: Lưu trữ repository](https://borgbackup.readthedocs.io/en/stable/deployment/hosting-repositories.html) — BorgBackup project (read 2026-11-02)
2. [Tài liệu Borg 1.4.5: borg serve (tùy chọn restrict, append-only, hạn mức lưu trữ)](https://borgbackup.readthedocs.io/en/stable/usage/serve.html) — BorgBackup project (read 2026-11-02)
3. [Tài liệu Borg 1.4.5: borg init (chế độ mã hóa, sao lưu khóa)](https://borgbackup.readthedocs.io/en/stable/usage/init.html) — BorgBackup project (read 2026-11-02)
4. [Tài liệu Borg 1.4.5: borg prune](https://borgbackup.readthedocs.io/en/stable/usage/prune.html) — BorgBackup project (read 2026-11-02)
5. [Tài liệu Borg 1.4.5: borg compact](https://borgbackup.readthedocs.io/en/stable/usage/compact.html) — BorgBackup project (read 2026-11-02)
6. [Tài liệu Borg 1.4.5: borg check](https://borgbackup.readthedocs.io/en/stable/usage/check.html) — BorgBackup project (read 2026-11-02)
7. [Tài liệu Borg 1.4.5: Additional notes, chế độ append-only](https://borgbackup.readthedocs.io/en/stable/usage/notes.html) — BorgBackup project (read 2026-11-02)
8. [Tài liệu Borg 1.4.5: Bắt đầu nhanh (BORG_PASSCOMMAND)](https://borgbackup.readthedocs.io/en/stable/quickstart.html) — BorgBackup project (read 2026-11-02)
9. [Borg 2.0 (thông tin sơ bộ)](https://www.borgbackup.org/releases/borg-2.0.html) — BorgBackup project (read 2026-11-02)
10. [Các bản phát hành BorgBackup (1.4.5 mới nhất, 2.0.0b25 bản tiền phát hành)](https://github.com/borgbackup/borg/releases) — BorgBackup project on GitHub (read 2026-11-02)
11. [Gói Debian trixie: 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. [Gói và giá](https://www.borgbase.com/) — BorgBase (read 2026-11-02)
13. [Giá lưu trữ đám mây](https://www.rsync.net/pricing.html) — rsync.net (read 2026-11-02)

---

Coffervale: Coffervale bán storage VPS tại châu Âu: máy chủ KVM với 500 GB đến 8 TB dung lượng HDD dành cho sao lưu ngoài site, Nextcloud, Seafile, Syncthing và lưu trữ, thanh toán bằng crypto mà không cần giấy tờ tùy thân khi đăng ký. Máy chủ chạy ở Amsterdam, Bucharest và Chișinău, đơn vị vận hành là DomaineGoat LLC, một công ty đăng ký tại Panama. Với kỳ hạn 12 tháng, mọi gói đều có giá thấp hơn ít nhất 25% mỗi tháng so với một storage VPS tương đương được nêu tên, chọn từ 10 nhà cung cấp crypto không cần KYC mà giá đã được đọc vào ngày 2 tháng 11 năm 2026.
