Tài liệuVaultwarden

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.

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.

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.

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

/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:

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


← Gitea Open WebUI →