# Vaultwarden

> Cài Vaultwarden từ Kho ứng dụng, tạo kho mật khẩu, đóng đăng ký, cấu hình email và trang admin, kết nối ứng dụng Bitwarden và sao lưu mật khẩu.

Source: https://zopanel.net/vi/docs/app-vaultwarden  
Updated: 2026-10-09

Vaultwarden là máy chủ gọn nhẹ tương thích giao thức Bitwarden: tiện ích trình duyệt, ứng dụng máy tính và điện thoại chính thức của Bitwarden lưu kho mật khẩu ngay trên server của bạn. Dùng Vaultwarden khi cá nhân, gia đình hoặc nhóm nhỏ cần trình quản lý mật khẩu mà không giao mật khẩu cho dịch vụ bên thứ ba. Vaultwarden là dự án độc lập, không phải sản phẩm chính thức của Bitwarden.

## Yêu cầu

| Mục | Giá trị |
| --- | --- |
| Image | `vaultwarden/server:1.37.4` |
| Giới hạn RAM | 256 MB, 1 CPU |
| Dung lượng trống để cài | khoảng 1,4 GB (image khoảng 300 MB, cộng 1 GB ZoPanel luôn chừa lại cho server) |
| Tên miền | tên miền hoặc subdomain đã trỏ bản ghi A về server, ví dụ `vault.example.com` |
| HTTPS | bắt buộc. Ứng dụng Bitwarden và web vault chỉ hoạt động qua HTTPS |

Server phải có Docker (**Kho ứng dụng → Cài Docker**). Khách hàng chỉ tự cài được khi gói hosting cho phép ứng dụng Docker; xem phần giới hạn ứng dụng cho khách trong [Kho ứng dụng và lưu trữ S3](/vi/docs/apps).

## Cài đặt

1. Trỏ bản ghi A của tên miền về server. Vaultwarden không dùng được khi chưa có SSL, nên làm bước này trước.
2. Mở **Kho ứng dụng** và bấm **Cài đặt** trên thẻ **Vaultwarden**.
3. Điền hộp thoại:

   | Trường | Nhập gì |
   | --- | --- |
   | **Tên miền** | Địa chỉ kho mật khẩu, không gồm `http://`, ví dụ `vault.example.com`. ZoPanel tạo website cho tên miền này. |
   | **Chủ sở hữu** | Chỉ quản trị viên thấy: tài khoản hosting sở hữu ứng dụng. Khách hàng cài vào chính tài khoản của mình. |
   | **SSL miễn phí (Let's Encrypt)** | Giữ bật. Chứng chỉ được cấp ở cuối quá trình cài. |

4. Bấm **Cài đặt**. Log tác vụ hiển thị quá trình tải image và khởi động container.

Vaultwarden không hỏi thêm gì khi cài. ZoPanel tự đặt các giá trị sau:

| Biến | Giá trị |
| --- | --- |
| `DOMAIN` | `https://<tên miền>`, dùng cho liên kết trong email và lời mời |
| `SIGNUPS_ALLOWED` | `true`, để bạn tạo được tài khoản đầu tiên. Đóng lại sau trong trang admin. |
| `ADMIN_TOKEN` | Token ngẫu nhiên 32 ký tự để mở trang admin, hiển thị trong **Thông tin đăng nhập**. |

Với khách hàng, lượt cài bị từ chối nếu tài khoản đã chạy đủ số ứng dụng gói cho phép, hoặc nếu thêm 256 MB sẽ làm RAM của các ứng dụng vượt **RAM (MB)** của gói.

Nếu log tác vụ kết thúc bằng `SSL could not be issued yet`, tên miền chưa trỏ về server. Sửa DNS, rồi bấm **Cấp chứng chỉ** ở tab **SSL** của website. Xem [Chứng chỉ SSL](/vi/docs/ssl).

## Tạo tài khoản khi khoá thiết lập đang bật

Vaultwarden mới cài cho phép bất kỳ ai truy cập được cũng đăng ký, nên ZoPanel giữ ứng dụng ở chế độ riêng tư cho tới khi bạn thiết lập xong. Khách truy cập thấy trang "This app is being set up".

1. Mở **Website**, chọn tên miền của kho mật khẩu và vào tab **Docker**.
2. Chờ trạng thái `running` và SSL đã hoạt động, rồi bấm **Mở ứng dụng (chỉ mình tôi)**. ZoPanel đặt cookie cho trình duyệt này (hiệu lực 30 ngày) và mở web vault.
3. Ở trang đăng nhập của web vault, chọn **Create account**. Nhập email và tên, rồi đặt mật khẩu chính (master password, Bitwarden yêu cầu tối thiểu 12 ký tự) và gợi ý nếu muốn.
4. Đăng nhập bằng tài khoản vừa tạo.

**Quan trọng:** mật khẩu chính mã hoá kho ngay trên thiết bị của bạn. Cả Vaultwarden lẫn ZoPanel đều không khôi phục được. Mất mật khẩu chính là mất quyền giải mã kho.

Trước khi mở công khai, hãy đóng đăng ký (mục tiếp theo). Sau đó quay lại tab **Docker** và bấm **Đã thiết lập xong — mở công khai**. Trước khi bấm, ứng dụng Bitwarden trên các thiết bị khác cũng bị chặn vì chúng không có cookie.

## Trang admin

Trang admin tại `https://<tên miền>/admin` quản lý toàn bộ server: đăng ký, email, người dùng và tổ chức.

1. Ở tab **Docker**, sao chép giá trị `ADMIN_TOKEN` trong **Thông tin đăng nhập**. Chỉ người quản lý được website mới thấy (thành viên chỉ xem thì không).
2. Mở `https://<tên miền>/admin` và dán token.

**Lưu ý:** thiết lập lưu trong trang admin được ghi vào `config.json` trong thư mục dữ liệu và được ưu tiên hơn giá trị ZoPanel truyền vào khi khởi động. Thay đổi chỉ có hiệu lực sau khi bấm **Save**.

Vaultwarden cảnh báo `ADMIN_TOKEN` dạng văn bản thường là không an toàn và khuyên dùng hash Argon2. Nếu bạn thay token trong trang admin, giá trị trong **Thông tin đăng nhập** sẽ không dùng được nữa; hãy tự cất giữ token mới.

### Đóng hoặc giới hạn đăng ký

Trong **General settings**, tắt **Allow new signups** rồi bấm **Save**. Từ đó:

- bạn thêm người dùng bằng **Users → Invite User** trong trang admin, hoặc với tư cách chủ sở hữu/quản trị của một tổ chức;
- nếu chưa cấu hình email, người được mời tự đăng ký bằng cách mở web vault và tạo tài khoản với đúng địa chỉ được mời;
- **Domain whitelist** (nếu dùng) chỉ cho phép đăng ký bằng địa chỉ thuộc các tên miền đã liệt kê.

### Email (SMTP)

Không có SMTP thì Vaultwarden không gửi email nào: không có email mời, không có xác thực hai bước qua email, không có thông báo thiết bị mới. Cấu hình trong **SMTP Email Settings**:

| Thiết lập | Ví dụ |
| --- | --- |
| Host | máy chủ mail, ví dụ `mail.example.com` |
| Secure SMTP | `starttls` cho cổng 587, `force_tls` cho cổng 465 |
| Port | `587` hoặc `465` |
| From address | `vault@example.com` |
| Username / Password | hộp thư và mật khẩu của nó |

Hộp thư tạo trong mục [Email](/vi/docs/email) của ZoPanel dùng được: container được phép kết nối tới chính server qua cổng 25, 465 và 587. Bấm **Save**, rồi gửi email thử ngay trên trang đó.

### Người dùng và chẩn đoán

**Users** liệt kê tài khoản, cho phép vô hiệu hoá, xoá hoặc gỡ xác thực hai bước của từng người. **Diagnostics** kiểm tra cấu hình và hiển thị phiên bản. Phiên đăng nhập admin hết hạn sau 20 phút.

## Kết nối ứng dụng Bitwarden

Trong mỗi ứng dụng, chọn server của bạn trước khi đăng nhập:

- **Tiện ích trình duyệt và ứng dụng điện thoại:** ở màn hình đăng nhập, mở **Logging in on**, chọn **Self-hosted**, nhập `https://<tên miền>` vào **Server URL** rồi chọn **Save**.
- **Ứng dụng máy tính:** mở **Accessing**, chọn **Self-hosted**, nhập địa chỉ server và lưu.
- **CLI:** `bw config server https://<tên miền>`.

Sau đó đăng nhập bằng email và mật khẩu chính. Hãy bật đăng nhập hai bước cho mọi tài khoản (**Settings → Security → Two-step login** trong web vault); ứng dụng xác thực (authenticator) dùng được mà không cần SMTP.

## Dữ liệu nằm ở đâu

Mọi thứ Vaultwarden lưu đều nằm trong một thư mục trên server:

```text
/var/lib/zopanel-apps/<instance>/data/
```

`<instance>` là tên miền với dấu chấm thay bằng dấu gạch ngang: `vault.example.com` thành `vault-example-com`. Chỉ root và container đọc được thư mục này. Nội dung chính:

| Đường dẫn | Là gì |
| --- | --- |
| `db.sqlite3` (và `db.sqlite3-wal`) | Database: người dùng, mục trong kho (đã mã hoá), tổ chức |
| `attachments/` | File đính kèm |
| `sends/` | File của Bitwarden Send (vốn chỉ tạm thời) |
| `config.json` | Thiết lập lưu từ trang admin, gồm cả thông tin SMTP |
| `rsa_key*` | Khoá ký phiên đăng nhập |
| `icon_cache/` | Icon website đã lưu tạm (tạo lại được) |

## Sao lưu

**Quan trọng:** sao lưu website của ZoPanel (**Sao lưu**, tại chỗ hoặc từ xa) gồm thư mục website, database và mail của tài khoản. Nó **không** gồm `/var/lib/zopanel-apps`. Hãy sao lưu kho mật khẩu bằng thẻ **Sao lưu** trong tab **Docker** của website.

Để sao lưu Vaultwarden, bấm **Sao lưu ngay** trong thẻ **Sao lưu** ở tab **Docker** của website. Quản trị viên còn đặt được **Lịch** (**Tắt**, **Mỗi ngày** hoặc **Mỗi tuần**; mặc định tắt) và số bản **Giữ lại** (1–60, mặc định 7), rồi bấm **Lưu**. Mỗi bản sao lưu nén `/var/lib/zopanel-apps/<instance>/` thành `/var/backups/zopanel-apps/<instance>/YYYYMMDD-HHMMSS.tar.gz`, trong thư mục chỉ root đọc được và không tính vào dung lượng đĩa của tài khoản. Container được tạm dừng (pause, không phải stop) trong vài giây sao chép, nên database SQLite nhất quán. Các bản cũ vượt quá số **Giữ lại** bị xoá, và khi một lần sao lưu theo lịch thất bại, quản trị viên nhận cảnh báo **Sao lưu thất bại**.

Để khôi phục, quản trị viên bấm **Khôi phục** cạnh một bản sao lưu. Vaultwarden được dừng và dữ liệu được thay bằng nội dung file nén; dữ liệu hiện tại được giữ riêng tới khi ứng dụng khôi phục khởi động được, và được đặt lại nếu nó không khởi động. Mọi thay đổi sau thời điểm sao lưu sẽ mất. Mỗi bản sao lưu còn có nút xoá (chỉ quản trị viên), và xoá ứng dụng kèm file của nó cũng xoá luôn các bản sao lưu. Khách hàng có thể bấm **Sao lưu ngay** và xem danh sách; việc đặt lịch và khôi phục do nhà cung cấp thực hiện.

File nén chứa `config.json` và `.env` (có admin token), nên hãy mã hoá và lưu ngoài server, ví dụ bằng `scp` hoặc `rclone` từ `/var/backups/zopanel-apps/<instance>/`. Trên server mới, cài Vaultwarden với đúng tên miền trước, chép file nén vào `/var/backups/zopanel-apps/<instance>/` ở đó rồi bấm **Khôi phục** trong thẻ **Sao lưu** của nó.

Vaultwarden cũng có sẵn lệnh tạo bản sao database nhất quán khi kho vẫn đang chạy (từ bản 1.32.1), chạy bằng root:

```bash
docker exec zp-app-vault-example-com /vaultwarden backup
```

Khách hàng cũng có thể tự giữ một bản bằng **Tools → Export vault** trong web vault (nên chọn bản xuất có mã hoá).

## Cập nhật

Ở tab **Docker**, quản trị viên bấm **Cập nhật bản mới**. ZoPanel kéo image mà phiên bản ZoPanel hiện tại đã ghim (`vaultwarden/server:1.37.4`), tạo lại container, giữ nguyên dữ liệu và token. Phiên bản Vaultwarden mới hơn đến cùng các bản cập nhật ZoPanel, sau khi đã được kiểm thử. Khách hàng nhờ nhà cung cấp cập nhật.

## Giới hạn mạng

Mọi container ứng dụng bị chặn khỏi loopback và mạng nội bộ của server, và không kết nối được tới container khác. Với Vaultwarden, điều đó có nghĩa:

- icon website và email vẫn hoạt động, vì chúng dùng internet và các cổng mail công khai của server;
- không dùng được SMTP relay ở địa chỉ nội bộ (ví dụ `10.x.x.x`) hay `127.0.0.1`. Hãy dùng tên công khai của máy chủ mail.

## Gỡ ứng dụng

Xoá website trong **Website**. Tích **Xoá luôn toàn bộ file** để xoá cả dữ liệu kho mật khẩu và các bản sao lưu của nó; nếu không, thư mục vẫn nằm trong `/var/lib/zopanel-apps/`.

## Xử lý sự cố

| Vấn đề | Cách xử lý |
| --- | --- |
| Khách truy cập thấy "This app is being set up" | Khoá thiết lập vẫn bật. Bấm **Đã thiết lập xong — mở công khai** ở tab **Docker**. |
| Web vault trắng trang hoặc báo lỗi mã hoá (crypto) | Đang mở bằng `http://`. Cấp SSL ở tab **SSL** và dùng `https://`. |
| Ứng dụng Bitwarden không đăng nhập được | Kiểm tra địa chỉ server bắt đầu bằng `https://` và khoá thiết lập đã mở. |
| `not enough disk space: this app needs about 1.4 GB free…` | Giải phóng dung lượng rồi cài lại. |
| `your plan allows 1 application(s)` hoặc `Vaultwarden needs 256 MB of memory…` | Đã chạm giới hạn của gói. Gỡ bớt ứng dụng hoặc nhờ nhà cung cấp tăng **Ứng dụng Docker** hay **RAM (MB)**. |
| Admin token bị từ chối | Token đã bị đổi trong trang admin (`config.json` được ưu tiên). Dùng token mới, hoặc với quyền root, xoá dòng `admin_token` trong `config.json` rồi bấm **Khởi động lại**. |
| Thay đổi từ thiết bị khác lên điện thoại chậm | Thông báo đẩy cho điện thoại cần push relay của Bitwarden, ZoPanel không cấu hình phần này. Kéo xuống để đồng bộ hoặc dùng **Sync now**. |
| Ứng dụng khởi động lại liên tục | Đọc **Log ứng dụng** ở tab **Docker** để xem lỗi. |

## Xem thêm

- [Từng ứng dụng dùng để làm gì](/vi/docs/app-catalog)
- [Kho ứng dụng và lưu trữ S3](/vi/docs/apps)
- [Chứng chỉ SSL](/vi/docs/ssl)
- [Email](/vi/docs/email)
- [Sao lưu](/vi/docs/backups)
- Chính thức: [Vaultwarden wiki](https://github.com/dani-garcia/vaultwarden/wiki), [Bitwarden: dùng server tự host](https://bitwarden.com/help/change-client-environment/)
