Vaultwarden: cài trình quản lý mật khẩu riêng trên VPS
Vaultwarden cho phép bạn lưu mật khẩu trên máy chủ riêng và đồng bộ chúng giữa máy tính, điện thoại và trình duyệt. Nó hoạt động với ứng dụng và tiện ích Bitwarden chính thức, nơi bạn chỉ cần chỉ định địa chỉ máy chủ của mình.
Dưới đây, chúng ta sẽ xem Vaultwarden cần loại VPS nào, cách chạy trên Ubuntu bằng Docker Compose, tắt đăng ký mở, bật HTTPS và cấu hình sao lưu.
Vaultwarden trong năm bước
Kế hoạch khởi chạy tối thiểu:
- Tạo VPS chạy Ubuntu và trỏ tên miền phụ tới đó, chẳng hạn
vault.example.com. - Cài Docker và Docker Compose.
- Chạy Vaultwarden cùng Caddy để có HTTPS tự động.
- Tạo tài khoản đầu tiên và tắt đăng ký mở.
- Bật xác thực hai yếu tố, cập nhật và sao lưu.
Với vault cá nhân hoặc gia đình nhỏ, cơ sở dữ liệu SQLite tích hợp là đủ. Thông thường không cần máy chủ PostgreSQL riêng.
Vaultwarden là gì?
Vaultwarden là bản triển khai máy chủ không chính thức của Bitwarden API, được viết bằng Rust và thiết kế cho triển khai self-hosted. Nó tương thích với các client Bitwarden chính thức: giao diện web, ứng dụng di động và máy tính, tiện ích trình duyệt và CLI.
Dữ liệu vault được mã hóa trên thiết bị người dùng trước khi gửi tới máy chủ. VPS đồng bộ cơ sở dữ liệu đã mã hóa nhưng không biết mật khẩu chính và không thể khôi phục mật khẩu nếu bị mất.
Vaultwarden không phải sản phẩm chính thức của Bitwarden. Chủ sở hữu tự chịu trách nhiệm về cập nhật, khả dụng, HTTPS, sao lưu và bảo mật VPS.
Vaultwarden và Bitwarden: khác nhau thế nào?
| Tham số | Bitwarden Cloud | Vaultwarden |
|---|---|---|
| Máy chủ | Hạ tầng Bitwarden | VPS hoặc máy chủ gia đình của bạn |
| Ứng dụng | Client Bitwarden | Cùng các client ở chế độ Self-hosted |
| Bảo trì | Nhà cung cấp xử lý | Chủ sở hữu xử lý |
| Kiểm soát sao lưu | Bị giới hạn bởi dịch vụ | Toàn quyền |
| Thiết lập | Đăng ký tài khoản | Cấu hình tên miền, Docker và VPS |
Vaultwarden phù hợp với người muốn kiểm soát phía máy chủ và sẵn sàng cập nhật Linux, xác minh bản sao lưu. Nếu không muốn quản trị, dịch vụ cloud thực tế hơn. Self-hosting không tự động làm hệ thống an toàn; nó chuyển trách nhiệm sang chủ sở hữu.
Yêu cầu máy chủ Vaultwarden
Với mục đích cá nhân, cấu hình khởi đầu hợp lý là:
- 1 vCPU;
- 1–2 GB RAM;
- SSD hoặc NVMe 10–20 GB;
- Ubuntu 24.04 LTS;
- địa chỉ IP công khai và tên miền;
- mở port 80 và 443.
Đây là mức dự phòng thực tế cho Ubuntu, Docker, Caddy và cập nhật, không phải mức tối thiểu cứng nhắc của dự án. Với hàng chục người dùng, nhiều tệp đính kèm hoặc vài container, nên chọn ít nhất 2 GB RAM.
Cách cài Vaultwarden trên VPS
Ví dụ này dùng Ubuntu 24.04 và tên miền phụ vault.example.com. Hãy thay địa chỉ này bằng địa chỉ của bạn trong tất cả các tệp.
1. Cấu hình DNS và chuẩn bị Ubuntu
Tạo bản ghi DNS A trỏ tới địa chỉ IPv4 của VPS. Sau đó kết nối qua SSH:
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enableKhông đóng phiên SSH hiện tại cho đến khi xác minh kết nối mới hoạt động.
2. Cài Docker và Docker Compose
Thêm kho Docker chính thức:
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version3. Tạo cấu hình
mkdir -p /opt/vaultwarden
cd /opt/vaultwardenTạo compose.yaml:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "true"
volumes:
- ./vw-data:/data
caddy:
image: caddy:2-alpine
container_name: vaultwarden-caddy
restart: unless-stopped
depends_on:
- vaultwarden
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/configTạo Caddyfile:
vault.example.com {
reverse_proxy vaultwarden:80
}Chỉ Caddy được mở ra bên ngoài. Container Vaultwarden có thể truy cập trong mạng Docker, còn dữ liệu lưu tại /opt/vaultwarden/vw-data. Với thiết lập hiện tại, không cần port WebSocket riêng.
4. Khởi động Vaultwarden
docker compose up -d
docker compose ps
docker compose logs --tail=100 caddyMở https://vault.example.com. Caddy sẽ tự động lấy chứng chỉ TLS nếu DNS đã trỏ tới VPS và port 80, 443 có thể truy cập. Nếu website không mở, hãy kiểm tra DNS, firewall và xem có web server khác đang dùng các port đó không.
5. Tạo tài khoản và tắt đăng ký
Đăng ký tài khoản đầu tiên. Dùng mật khẩu chính dài và duy nhất, đồng thời giữ một bản khẩn cấp bên ngoài Vaultwarden: quản trị viên máy chủ không thể đặt lại hoặc khôi phục mật khẩu chính.
Sau khi đăng ký, thay đổi giá trị sau trong compose.yaml:
SIGNUPS_ALLOWED: "false"Áp dụng cài đặt:
docker compose up -dNgười khác sẽ không thể tạo tài khoản nữa. Để thêm người dùng, bạn có thể tạm thời bật đăng ký hoặc cấu hình lời mời.
Cách kết nối ứng dụng Bitwarden
Bạn không cần cài client Vaultwarden riêng. Trên màn hình đăng nhập của ứng dụng hoặc tiện ích Bitwarden, chọn Self-hosted rồi nhập:
https://vault.example.comDùng địa chỉ này trên máy tính, điện thoại và trình duyệt. Để chuyển sang, hãy nhập bản export từ trình quản lý mật khẩu trước đó. Xóa tệp CSV hoặc JSON không mã hóa ngay sau khi chuyển và không gửi nó qua email hay liên kết công khai.
Cấu hình Vaultwarden an toàn
Sau khi khởi chạy, hãy thực hiện các bước sau:
- bật TOTP hoặc WebAuthn và lưu mã khôi phục riêng;
- giữ
SIGNUPS_ALLOWEDở trạng thái tắt; - dùng SSH keys và cập nhật Ubuntu thường xuyên;
- không mở port nội bộ của container Vaultwarden;
- không chạy container đáng ngờ trên cùng VPS;
- xác minh bản sao lưu có thể được khôi phục.
Panel /admin thường không cần thiết cho vault cá nhân. Nếu bật, hãy dùng token dài ở dạng Argon2 hash và nếu có thể giới hạn truy cập bằng IP hoặc VPN. Không nên lưu ADMIN_TOKEN dạng văn bản thuần.
Tạo bản sao lưu trước khi cập nhật, rồi chạy:
cd /opt/vaultwarden
docker compose pull
docker compose up -dMáy chủ nên được cập nhật thường xuyên: client Bitwarden phát hành độc lập, vì vậy phiên bản Vaultwarden quá cũ có thể mất khả năng tương thích.
Sao lưu Vaultwarden
Cơ sở dữ liệu SQLite chính nằm ở vw-data/db.sqlite3, còn tệp đính kèm được lưu riêng. Không sao chép cơ sở dữ liệu đang chạy bằng lệnh cp thông thường: thao tác ghi tại thời điểm đó có thể làm bản sao không nhất quán.
Tạo snapshot an toàn bằng lệnh tích hợp:
docker exec vaultwarden /vaultwarden backupMột tệp db_.sqlite3 riêng sẽ xuất hiện trong thư mục dữ liệu. Hãy lưu cả attachments, sends, config.json nếu đã được tạo và các tệp rsa_key.
Bản sao lưu trên cùng VPS không bảo vệ khỏi việc xóa máy chủ hoặc lỗi đĩa. Tự động gửi bản sao tới thiết bị khác hoặc object storage riêng, tốt nhất kèm mã hóa bổ sung. Định kỳ thực hiện khôi phục thử nghiệm.
Nên chọn VPS nào cho Vaultwarden?
VPS Linux cơ bản với 2 GB RAM đủ cho vault cá nhân hoặc gia đình. Mức này cung cấp thêm dung lượng cho Ubuntu, Docker, Caddy, cập nhật và sao lưu tự động.
Bạn có thể chạy Vaultwarden trên VPS cấp đầu vào của tropic.host rồi tăng tài nguyên sau nếu thêm dịch vụ self-hosted khác. Với trình quản lý mật khẩu, mạng ổn định, địa chỉ công khai cố định và ổ đĩa đáng tin cậy quan trọng hơn các lõi CPU bổ sung.
Máy chủ gia đình cũng phù hợp, nhưng bạn sẽ phải tự cung cấp truy cập bên ngoài, HTTPS, nguồn điện ổn định và khả năng khôi phục sau lỗi. VPS thường đơn giản hơn khi vault phải hoạt động trên mọi mạng.
Kết luận
Vaultwarden là trình quản lý mật khẩu self-hosted tiện dụng cho người muốn dùng client Bitwarden mà vẫn giữ phía máy chủ trên hạ tầng riêng. Một VPS nhỏ, tên miền, Docker Compose và Caddy là đủ để bắt đầu.
Trách nhiệm chính bắt đầu sau cài đặt: tắt đăng ký, bật 2FA, cập nhật container và giữ bản sao lưu đã kiểm thử bên ngoài máy chủ.
Câu hỏi thường gặp
Có thể cài Vaultwarden mà không cần tên miền không?
Về kỹ thuật, bạn có thể dùng địa chỉ cục bộ, nhưng web vault cần ngữ cảnh HTTPS an toàn. Để truy cập từ nhiều thiết bị, dùng tên miền và chứng chỉ TLS đơn giản hơn.
Vaultwarden cần bao nhiêu RAM?
Với một hoặc vài người dùng, 1 GB RAM thường đủ. VPS 2 GB mang lại khoảng trống thoải mái hơn cho hệ thống, Docker, Caddy và cập nhật.
Vaultwarden có hoạt động với ứng dụng di động Bitwarden không?
Có. Trên màn hình đăng nhập, chọn máy chủ self-hosted và nhập địa chỉ HTTPS đầy đủ của instance Vaultwarden.
Điều gì xảy ra nếu VPS tạm thời không khả dụng?
Dữ liệu đã đồng bộ trước đó thường vẫn nằm trong cache cục bộ đã mã hóa của client. Tuy nhiên, đồng bộ, đăng nhập trên thiết bị mới và nhận thay đổi sẽ không hoạt động cho đến khi máy chủ được khôi phục.
Có thể khôi phục mật khẩu chính bị quên qua /admin không?
Không. Quản trị viên có thể quản lý máy chủ và tài khoản nhưng không có khóa giải mã vault của người dùng. Mật khẩu chính và mã khôi phục phải được lưu riêng.
