Tropic Host

Vaultwarden: là gì và cách cài đặt trên VPS?

9 phút đọc
Tropic
Vaultwarden: là gì và cách cài đặt trên VPS?

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:

  1. Tạo VPS chạy Ubuntu và trỏ tên miền phụ tới đó, chẳng hạn vault.example.com.
  2. Cài Docker và Docker Compose.
  3. Chạy Vaultwarden cùng Caddy để có HTTPS tự động.
  4. Tạo tài khoản đầu tiên và tắt đăng ký mở.
  5. 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 CloudVaultwarden
Máy chủHạ tầng BitwardenVPS hoặc máy chủ gia đình của bạn
Ứng dụngClient BitwardenCù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ưuBị giới hạn bởi dịch vụToàn quyền
Thiết lậpĐăng ký tài khoảnCấ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 enable

Khô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 version

3. Tạo cấu hình

mkdir -p /opt/vaultwarden
cd /opt/vaultwarden

Tạ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:/config

Tạ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 caddy

Mở 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 -d

Ngườ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.com

Dù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 -d

Má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 backup

Mộ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.