Cài Vaultwarden (Bitwarden Self-Host) Trên VPS 2026 — Quản Lý Mật Khẩu Riêng Tư
1. Vì Sao Nên Tự Host Trình Quản Lý Mật Khẩu?
Bạn đang lưu mật khẩu ở đâu? Trong file Excel? Trong ghi chú điện thoại? Hay tệ hơn — dùng đi dùng lại một mật khẩu cho 20 tài khoản khác nhau? Năm 2026, một vụ rò rỉ dữ liệu là đủ để hacker thử mật khẩu đó trên toàn bộ tài khoản của bạn — ngân hàng, email, ví crypto. Trình quản lý mật khẩu không còn là tùy chọn, mà là bắt buộc.
Các dịch vụ như LastPass, 1Password rất tốt, nhưng có hai vấn đề: (1) bạn phải trả phí hàng tháng cho gói Premium, và (2) toàn bộ "két sắt" mật khẩu của bạn nằm trên server của họ. LastPass từng bị hack năm 2022, lộ kho vault mã hóa của hàng triệu người dùng. Khi bạn tự host, dữ liệu nằm trên VPS của riêng bạn — bạn nắm toàn quyền kiểm soát.
Đây là lúc Vaultwarden tỏa sáng: nó cho bạn toàn bộ tính năng Premium của Bitwarden — hoàn toàn miễn phí, chạy trên một VPS giá rẻ chỉ ~50-100K/tháng.
2. Vaultwarden Là Gì? Khác Bitwarden Như Thế Nào?
Vaultwarden (trước đây tên là bitwarden_rs) là một bản triển khai lại server Bitwarden, viết bằng ngôn ngữ Rust. Nó tương thích hoàn toàn với mọi ứng dụng client chính thức của Bitwarden — app điện thoại, extension Chrome/Firefox, app desktop, CLI — nhưng siêu nhẹ và mở khóa sẵn các tính năng trả phí.
| Tiêu chí | Bitwarden Server gốc | Vaultwarden |
|---|---|---|
| Ngôn ngữ | C# / .NET (nhiều container) | Rust (1 container duy nhất) |
| RAM tiêu thụ | ~2GB+ | ~50-100MB |
| Tính năng Premium (TOTP, attachment, báo cáo bảo mật) | Trả phí | Miễn phí |
| Organization / chia sẻ vault | Trả phí | Miễn phí |
| Phù hợp VPS nhỏ (1GB RAM) | Không | Có |
| Client tương thích | Bitwarden chính thức | Bitwarden chính thức |
3. Chuẩn Bị: Cần Gì Để Bắt Đầu?
Để tự host Vaultwarden ổn định, bạn cần:
- Một VPS: cấu hình tối thiểu 1 CPU, 1GB RAM, 20GB SSD là quá dư. Nên chọn VPS có IP riêng để dễ gắn SSL.
- Một tên miền (hoặc subdomain): ví dụ
vault.tenmien.com— bắt buộc để có HTTPS hợp lệ. Trình duyệt hiện đại từ chối lưu mật khẩu qua HTTP. - Hệ điều hành Linux: Ubuntu 22.04/24.04 LTS hoặc Debian 12 là lựa chọn phổ biến nhất.
- Docker & Docker Compose: cách triển khai sạch sẽ và dễ backup nhất.
4. Cài Docker & Docker Compose
Nếu VPS chưa có Docker, cài nhanh bằng script chính thức:
# Cập nhật hệ thống
sudo apt update && sudo apt upgrade -y
# Cài Docker bằng script chính thức
curl -fsSL https://get.docker.com | sudo sh
# Thêm user hiện tại vào group docker (đăng xuất/đăng nhập lại sau đó)
sudo usermod -aG docker $USER
# Kiểm tra
docker --version
docker compose version
Nếu muốn tìm hiểu chi tiết hơn về Docker, đọc bài Cài Docker & Docker Compose Trên VPS của chúng tôi.
5. Triển Khai Vaultwarden Bằng Docker Compose
Tạo thư mục làm việc và file docker-compose.yml:
mkdir -p ~/vaultwarden && cd ~/vaultwarden
nano docker-compose.yml
Dán nội dung sau:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
# Cho phép tạo tài khoản — TẮT sau khi đã đăng ký xong
SIGNUPS_ALLOWED: "true"
# Bật trang admin (đặt token mạnh)
ADMIN_TOKEN: "DAT_TOKEN_MANH_O_DAY"
# Tên miền của bạn (bắt buộc để WebAuthn/2FA hoạt động)
DOMAIN: "https://vault.tenmien.com"
volumes:
- ./vw-data:/data
ports:
- "127.0.0.1:8080:80"
Khởi chạy:
docker compose up -d
# Xem log để chắc chắn chạy ổn
docker compose logs -f
127.0.0.1:8080 chứ không phải 0.0.0.0. Điều này có nghĩa Vaultwarden CHỈ nghe trên localhost — không ai truy cập trực tiếp từ internet được. Mọi truy cập sẽ đi qua reverse proxy có HTTPS ở bước tiếp theo. Đây là nguyên tắc bảo mật quan trọng.
Tạo ADMIN_TOKEN an toàn
Đừng dùng token plaintext. Hãy tạo hash Argon2:
# Tạo token ngẫu nhiên rồi hash bằng chính image vaultwarden
docker run --rm -it vaultwarden/server /vaultwarden hash
# Nhập password admin, copy chuỗi $argon2... vào ADMIN_TOKEN
6. Cấu Hình HTTPS Tự Động Với Caddy
HTTPS là bắt buộc với trình quản lý mật khẩu. Cách đơn giản nhất là dùng Caddy — reverse proxy tự động xin và gia hạn chứng chỉ Let's Encrypt mà không cần config phức tạp.
Thêm Caddy vào cùng file docker-compose.yml:
caddy:
image: caddy:latest
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
depends_on:
- vaultwarden
Tạo file Caddyfile:
vault.tenmien.com {
reverse_proxy vaultwarden:80
}
Sửa lại service vaultwarden để Caddy gọi được qua mạng nội bộ Docker (bỏ ports, dùng expose):
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
SIGNUPS_ALLOWED: "true"
ADMIN_TOKEN: "$argon2id$..."
DOMAIN: "https://vault.tenmien.com"
volumes:
- ./vw-data:/data
expose:
- "80"
Trỏ bản ghi A của vault.tenmien.com về IP VPS, rồi chạy lại:
docker compose up -d
Caddy sẽ tự động xin chứng chỉ SSL. Truy cập https://vault.tenmien.com — bạn sẽ thấy giao diện Bitwarden web vault với ổ khóa xanh. Nếu cần tìm hiểu reverse proxy sâu hơn, xem bài Cài Nginx Reverse Proxy Trên VPS.
7. Đăng Ký Tài Khoản & Kết Nối Client
- Truy cập
https://vault.tenmien.com→ nhấn Create account → đăng ký bằng email + master password mạnh. - Sau khi tạo xong tài khoản, TẮT đăng ký: sửa
SIGNUPS_ALLOWED: "false"rồidocker compose up -dlại. Việc này ngăn người lạ tạo tài khoản trên server của bạn. - Cài app Bitwarden trên điện thoại / extension trình duyệt.
- Trước khi đăng nhập, vào Settings → Self-hosted environment → nhập
https://vault.tenmien.comvào ô Server URL. - Đăng nhập bằng email + master password vừa tạo. Xong — bạn đã có Bitwarden riêng tư!
8. Bảo Mật Server Vaultwarden
Vì đây là nơi cất giữ "chìa khóa" toàn bộ đời sống số của bạn, bảo mật phải đặt lên hàng đầu:
- Bật 2FA cho tài khoản: Vào web vault → Settings → Two-step Login → bật TOTP (Google Authenticator/Aegis) hoặc WebAuthn (YubiKey).
- Tắt SIGNUPS_ALLOWED ngay sau khi đăng ký xong.
- Bảo vệ trang /admin: dùng ADMIN_TOKEN hash Argon2, hoặc chặn IP truy cập
/adminbằng firewall. - Firewall chặt: chỉ mở port 80, 443, và SSH. Đọc thêm Firewall & Bảo Mật VPS Toàn Tập.
- Bật fail2ban: Vaultwarden ghi log đăng nhập sai — kết hợp fail2ban để chặn brute-force.
- Cập nhật định kỳ:
docker compose pull && docker compose up -dđể vá lỗ hổng.
9. Backup Tự Động Vault
Toàn bộ dữ liệu nằm trong thư mục vw-data (gồm database SQLite, attachment, key RSA). Mất nó = mất tất cả. Thiết lập backup tự động ngay:
#!/bin/bash
# /root/backup-vw.sh
BACKUP_DIR="/root/vw-backups"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# Backup database an toàn bằng sqlite3
docker exec vaultwarden sqlite3 /data/db.sqlite3 ".backup '/data/db-backup.sqlite3'"
# Nén toàn bộ thư mục dữ liệu
tar czf "$BACKUP_DIR/vw-$DATE.tar.gz" -C ~/vaultwarden vw-data
# Xóa backup cũ hơn 14 ngày
find "$BACKUP_DIR" -name "vw-*.tar.gz" -mtime +14 -delete
echo "Backup xong: vw-$DATE.tar.gz"
Đặt cron chạy hằng ngày lúc 3 giờ sáng:
chmod +x /root/backup-vw.sh
crontab -e
# Thêm dòng:
0 3 * * * /root/backup-vw.sh >> /var/log/vw-backup.log 2>&1
Tốt hơn nữa, đẩy bản backup lên storage ngoài (S3/MinIO) để phòng VPS sập. Xem bài Backup Tự Động Website Trên VPS và Cài MinIO S3 Storage Trên VPS.
10. Các Vấn Đề Thường Gặp
10.1. App báo "Cannot connect to server"
Kiểm tra: (1) bản ghi DNS đã trỏ đúng IP chưa, (2) Caddy đã xin được SSL chưa (docker compose logs caddy), (3) đã nhập đúng Server URL trong app trước khi login chưa.
10.2. WebAuthn / Passkey không hoạt động
Phải đảm bảo biến DOMAIN khớp chính xác với URL truy cập (gồm cả https://), và trang phải chạy qua HTTPS hợp lệ.
10.3. Quên ADMIN_TOKEN
Sửa lại trong docker-compose.yml rồi docker compose up -d. Trang admin nằm tại https://vault.tenmien.com/admin.
11. Vaultwarden So Với Các Lựa Chọn Khác
| Giải pháp | Chi phí | Quyền kiểm soát dữ liệu | Độ khó |
|---|---|---|---|
| LastPass / 1Password | ~50-100K/tháng | Trên server nhà cung cấp | Dễ |
| Bitwarden Cloud (free) | Miễn phí (giới hạn) | Trên server Bitwarden | Dễ |
| Vaultwarden self-host | Tiền VPS ~50-100K/tháng | Toàn quyền của bạn | Trung bình |
| KeePass (file local) | Miễn phí | File trên máy bạn | Khó đồng bộ |
Nếu bạn đã có VPS đang chạy WordPress, Nextcloud hay bot Telegram, thêm Vaultwarden gần như không tốn thêm chi phí. Đó là cách thông minh để tận dụng tài nguyên dư thừa.
🚀 Cần VPS Để Tự Host Vaultwarden?
Thuê VPS giá rẻ, IP riêng, băng thông cao tại TrumVPS — từ 47K/tháng, hỗ trợ cài Docker sẵn, lý tưởng cho self-host password manager
Thuê VPS Ngay