Cài Vaultwarden (Bitwarden Self-Host) Trên VPS 2026 — Quản Lý Mật Khẩu Riêng Tư

📅 23/06/2026 · ⏱ 13 phút đọc · 🏷 Bảo mật · Self-host · Dev

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ốcVaultwarden
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ẻ vaultTrả phíMiễn phí
Phù hợp VPS nhỏ (1GB RAM)Không
Client tương thíchBitwarden chính thứcBitwarden chính thức
💡 Lưu ý quan trọng: Vaultwarden là dự án cộng đồng độc lập, KHÔNG liên kết chính thức với công ty Bitwarden. Nó được khuyến nghị dùng cho cá nhân, gia đình, team nhỏ. Doanh nghiệp lớn cần SLA và hỗ trợ chính thức nên dùng Bitwarden bản gốc.

3. Chuẩn Bị: Cần Gì Để Bắt Đầu?

Để tự host Vaultwarden ổn định, bạn cần:

🎯 Tip cấu hình: Vaultwarden cực kỳ nhẹ — một VPS 1GB RAM thừa sức chạy nó cùng với một vài service khác như WireGuard hay Nextcloud. Đừng phí tiền mua gói lớn cho riêng nó.

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
🔐 Quan trọng: Chúng ta bind cổng vào 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

  1. Truy cập https://vault.tenmien.com → nhấn Create account → đăng ký bằng email + master password mạnh.
  2. Sau khi tạo xong tài khoản, TẮT đăng ký: sửa SIGNUPS_ALLOWED: "false" rồi docker compose up -d lại. Việc này ngăn người lạ tạo tài khoản trên server của bạn.
  3. Cài app Bitwarden trên điện thoại / extension trình duyệt.
  4. Trước khi đăng nhập, vào Settings → Self-hosted environment → nhập https://vault.tenmien.com vào ô Server URL.
  5. Đăng nhập bằng email + master password vừa tạo. Xong — bạn đã có Bitwarden riêng tư!
⚠️ Nhớ kỹ: Master password là chìa khóa duy nhất mở vault. Nếu quên, KHÔNG AI có thể khôi phục — kể cả bạn. Hãy chọn passphrase dài, dễ nhớ với bạn nhưng khó đoán, và lưu một bản recovery ở nơi an toàn vật lý.

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:

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 VPSCà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ápChi phíQuyền kiểm soát dữ liệuĐộ khó
LastPass / 1Password~50-100K/thángTrên server nhà cung cấpDễ
Bitwarden Cloud (free)Miễn phí (giới hạn)Trên server BitwardenDễ
Vaultwarden self-hostTiền VPS ~50-100K/thángToàn quyền của bạnTrung bình
KeePass (file local)Miễn phíFile trên máy bạnKhó đồ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