Hướng dẫn cài đặt Vaultwarden với Docker: Hướng dẫn đầy đủ về cách tự lưu trữ mật khẩu của bạn

Cập nhật lần cuối: 31/08/2026
Tác giả: Alberto Navarro

  • Vaultwarden là một máy chủ không chính thức, tương thích với các phần mềm Bitwarden.
  • Thư mục /data phải được bảo toàn bằng cách sử dụng ổ đĩa ảo có khả năng lưu trữ dữ liệu lâu dài.
  • Việc truy cập từ các thiết bị khác yêu cầu địa chỉ HTTPS được cấu hình đúng cách.
  • Sau khi tạo các tài khoản cần thiết, hãy hủy kích hoạt các hồ sơ đang mở.
Hướng dẫn cài đặt Vaultwarden bằng Docker Compose

Vaultwarden cho phép bạn lưu trữ trình quản lý mật khẩu tương thích với các máy khách Bitwarden trên máy chủ riêng của mình. Bằng cách này, bạn có thể quyết định nơi lưu trữ thông tin, ai có thể truy cập dịch vụ và cách thức sao lưu được thực hiện.

Điều quan trọng là phải làm rõ ngay từ đầu rằng Vaultwarden không phải là máy chủ Bitwarden chính thức.Đây là một triển khai độc lập, do cộng đồng phát triển, được viết bằng ngôn ngữ Rust, sao chép phần lớn API của Bitwarden. Do đó, nó có thể được sử dụng với các ứng dụng di động, chương trình máy tính để bàn và tiện ích mở rộng chính thức của Bitwarden.

Việc tự quản lý dịch vụ mang lại nhiều quyền kiểm soát hơn, nhưng Điều đó không tự động đảm bảo an ninh tốt hơn.Kể từ thời điểm đó, bạn chịu trách nhiệm cài đặt các bản cập nhật, bảo mật quyền truy cập, xem xét nhật ký, duy trì HTTPS và đảm bảo rằng các bản sao lưu có thể được khôi phục.

Bài viết liên quan:
Các trình quản lý mật khẩu tốt nhất

Những thứ bạn cần để cài đặt Vaultwarden với Docker

Những thứ bạn cần để cài đặt Vaultwarden với Docker

Trước khi bắt đầu, bạn cần một hệ thống tương thích với Docker và phải luôn được bật nguồn khi bạn muốn đồng bộ hóa mật khẩu. Đó có thể là một máy chủ Linux, một thiết bị NAS, một máy tính mini hoặc một Raspberry Pi với kiến ​​trúc được hỗ trợ bởi ảnh Docker.

Bạn cũng sẽ cần:

  • Công cụ Docker Đã cài đặt và đang hoạt động.
  • Phần bổ sung hiện tại của Docker Compose.
  • Một thư mục nơi dữ liệu có thể được lưu trữ vĩnh viễn.
  • Cần có quyền truy cập vào thiết bị đầu cuối với quyền quản trị Docker.
  • Một phương pháp truy cập an toàn nếu bạn sẽ sử dụng dịch vụ từ các thiết bị khác.

Không có yêu cầu chung về bộ nhớ hoặc dung lượng lưu trữ cho tất cả các cài đặt. Mức tiêu thụ phụ thuộc vào số lượng người dùng, tệp đính kèm, dung lượng lưu trữ và các dịch vụ khác đang chạy trên cùng một máy tính. Đối với sử dụng tại nhà, đây thường là một ứng dụng nhẹ, nhưng bạn nên dành đủ không gian cho... dữ liệu và các bản sao lưu của nó.

Kiểm tra quá trình cài đặt bằng cách sử dụng:

docker --version
docker compose version

Nếu cả hai lệnh đều hiển thị phiên bản, bạn có thể tiếp tục.

Hướng dẫn cài đặt Vaultwarden bằng Docker Compose

Hướng dẫn cài đặt Vaultwarden bằng Docker

Tạo một thư mục riêng và truy cập vào đó:

mkdir vaultwarden
cd vaultwarden

Bên trong thư mục đó, hãy tạo một tệp có tên là... compose.yml Với cấu hình ban đầu này:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      SIGNUPS_ALLOWED: "true"
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8080:80"

Hội đồng ./vw-data:/data Điều này rất cần thiết. Thư mục /data Thư mục này chứa cơ sở dữ liệu, tệp đính kèm, cấu hình và các khóa được máy chủ sử dụng. Nếu bạn xóa vùng chứa mà không giữ lại thư mục này, bạn sẽ mất thông tin đã lưu trữ.

Địa chỉ 127.0.0.1 Quá trình cài đặt ban đầu này chỉ phản hồi trên chính máy chủ. Đây là cấu hình phù hợp để kiểm tra Vaultwarden mà chưa cần mở cổng ra mạng.

Khởi động container:

docker compose up -d

Kiểm tra trạng thái của nó:

docker compose ps
docker compose logs --tail=100 vaultwarden

Từ cùng một thiết bị, bạn có thể mở:

http://localhost:8080

Truy cập qua localhost Thao tác này được sử dụng để hoàn tất thiết lập ban đầu. Để kết nối từ một máy tính khác, ứng dụng di động hoặc tiện ích mở rộng, bạn cần thiết lập địa chỉ bảo mật bằng HTTPS.

Hướng dẫn cách tạo tài khoản đầu tiên và hoàn tất đăng ký

Mở giao diện web, tạo tài khoản đầu tiên và xác minh rằng bạn có thể đăng nhập. Sử dụng... mật khẩu chính dài, độc đáo và dễ nhớVì nó bảo vệ quyền truy cập vào toàn bộ kho hàng.

Sau khi tạo các tài khoản cần thiết, hãy chỉnh sửa compose.yml và những thay đổi:

SIGNUPS_ALLOWED: "true"

qua:

SIGNUPS_ALLOWED: "false"

Áp dụng thay đổi bằng cách tạo lại vùng chứa:

docker compose up -d

Vaultwarden cho phép người dùng ẩn danh tạo tài khoản theo mặc định. Việc duy trì đăng ký mở không cần thiết sẽ tạo điều kiện thuận lợi cho bên thứ ba chiếm dụng dung lượng hoặc sử dụng máy chủ của bạn mà không được phép.

Nội dung độc quyền - Bấm vào đây  Telegram như một đám mây cá nhân: hướng dẫn đầy đủ để tối đa hóa dung lượng lưu trữ.

Nếu sau này bạn kích hoạt bảng quản trị, bạn sẽ có thể gửi lời mời ngay cả khi tính năng đăng ký công khai bị vô hiệu hóa.

Vì sao Vaultwarden cần HTTPS?

Cửa hàng trực tuyến sử dụng API mã hóa web của trình duyệt. Các tính năng mã hóa này thường chỉ có sẵn trong các trình duyệt khác. các ngữ cảnh bảo mật, chẳng hạn như HTTPS hoặc localhost.

Vì lý do này, việc mở cửa http://192.168.1.50:8080 Từ một máy tính khác, lỗi có thể hiển thị ngay cả khi container đang chạy. Việc công bố cổng trên mạng không thay thế cấu hình HTTPS.

Có ba cách phổ biến để sử dụng Vaultwarden:

  • Chỉ dành cho máy chủ: truy cập qua localhost, hữu ích cho việc thử nghiệm.
  • Trên mạng riêng hoặc VPN: Quyền truy cập bị hạn chế, nhưng vẫn duy trì chứng chỉ HTTPS hợp lệ.
  • Nguồn từ Internet: Tên miền, máy chủ proxy ngược, chứng chỉ hợp lệ và tường lửa được cấu hình đúng cách.

Bạn không cần phải mở Vaultwarden ở chế độ công khai để sử dụng nó bên ngoài nhà. VPN có thể hạn chế quyền truy cập vào các thiết bị được ủy quyền của bạn, nhưng địa chỉ được các thiết bị khách sử dụng vẫn phải có chứng chỉ mà chúng nhận dạng được.

Hướng dẫn cấu hình HTTPS với Caddy

Hướng dẫn cấu hình HTTPS với Caddy

Caddy là một trong những lựa chọn đơn giản nhất vì nó có thể tự động yêu cầu và gia hạn chứng chỉ thông qua ACME. Để sử dụng chứng chỉ công khai, tên miền phải trỏ đến máy chủ của bạn và các cổng cần thiết phải truy cập được.

Tệp này có thể được sử dụng chung cho cả Vaultwarden và Caddy. compose.yml:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "false"
    volumes:
      - ./vw-data:/data

  caddy:
    image: caddy:2
    container_name: vaultwarden-caddy
    restart: unless-stopped
    depends_on:
      - vaultwarden
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config

Thay thế vault.example.com cho tên miền thực của bạn. Sau đó tạo một tệp có tên là Caddyfile:

vault.example.com {
    reverse_proxy vaultwarden:80 {
        header_up X-Real-IP {remote_host}
    }
}

Kích hoạt dịch vụ:

docker compose up -d

Caddy sẽ gửi yêu cầu đến container thông qua mạng nội bộ do Compose tạo ra. Cấu hình hiện tại cũng có thể xử lý các thông báo WebSocket thông qua cùng một đích đến, vì vậy không cần phải công bố thêm một cổng Vaultwarden khác.

Biến số DOMAIN phải chứa URL bên ngoài chính xác, bao gồm https://Địa chỉ không chính xác có thể gây ra sự cố với tệp đính kèm, liên kết, xác thực hoặc ứng dụng khách.

Hướng dẫn cách kết nối ứng dụng Bitwarden chính thức

Trên màn hình đăng nhập của tiện ích mở rộng, ứng dụng di động hoặc chương trình máy tính để bàn, hãy mở trình chọn máy chủ và chọn tùy chọn đó. Tự lưu trữ.

Nhập địa chỉ đầy đủ:

https://vault.example.com

Hãy lưu cài đặt trước khi đăng nhập. Mỗi máy khách phải được kết nối với cùng một máy chủ để các thay đổi được đồng bộ hóa chính xác.

Nếu bạn sử dụng chứng chỉ do một tổ chức tư nhân cấp, bạn cần phải cài đặt và tin tưởng tổ chức đó trên tất cả các thiết bị. Để tránh các vấn đề tương thích, tốt hơn hết là nên sử dụng chứng chỉ công khai hợp lệ hoặc giải pháp tư nhân mà bạn có thể kiểm soát chuỗi tin cậy một cách chính xác.

Sau khi kết nối với máy khách, bạn có thể Nhập mật khẩu Chrome vào Vaultwarden và kiểm tra xem chúng có hiển thị trên tất cả các thiết bị của bạn hay không.

Cách bảo vệ bảng quản trị

Vaultwarden cung cấp một bảng điều khiển tùy chọn trong /adminTừ đó, bạn có thể xem lại thông tin người dùng, tổ chức, chẩn đoán và một số tùy chọn máy chủ nhất định.

Nếu bạn không cần tấm bảng đó, cách an toàn nhất là... Hãy để nó ở trạng thái vô hiệu hóa.Để kích hoạt tính năng này, bạn cần phải cấu hình. ADMIN_TOKENThay vì lưu mật khẩu dưới dạng văn bản thuần, nó tạo ra một mã băm Argon2id:

docker run --rm -it vaultwarden/server /vaultwarden hash

Lệnh này sẽ yêu cầu nhập mật khẩu hai lần và trả về một chuỗi bắt đầu bằng $argon2id$.

Một cách tiện lợi để tránh các vấn đề liên quan đến ký hiệu đô la là lưu chúng vào một tệp. .env nằm cạnh compose.yml:

VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=...'

Sau đó, thêm vào dịch vụ:

environment:
  ADMIN_TOKEN: "${VAULTWARDEN_ADMIN_TOKEN}"

Nếu bạn viết trực tiếp mã băm vào bên trong compose.ymlBạn phải nhân đôi mỗi dấu đô la như sau: $$ để ngăn Docker Compose cố gắng hiểu nó như một biến.

Nội dung độc quyền - Bấm vào đây  Sử dụng DiDi có an toàn không?

Kiểm tra cấu hình đã xử lý bằng cách sử dụng:

docker compose config

Chỉ nên truy cập bảng điều khiển này thông qua HTTPS. Nếu có thể, hãy giới hạn đường dẫn truy cập chỉ trong mạng cục bộ, VPN hoặc các địa chỉ IP cụ thể.

Vui lòng lưu ý rằng sau khi lưu các tùy chọn từ /adminNgười canh gác kho báu tạo ra config.jsonCác giá trị của nó được ưu tiên hơn các biến môi trường tương đương. Sự ưu tiên này giải thích nhiều trường hợp khi chỉnh sửa Compose dường như không tạo ra thay đổi nào.

Các biện pháp thiết yếu để bảo vệ Vaultwarden

Việc bảo mật không chỉ dừng lại ở việc bật HTTPS. Tối thiểu, hãy áp dụng các biện pháp sau:

  • Vô hiệu hóa trình duyệt đang mở bằng cách sử dụng SIGNUPS_ALLOWED=false.
  • Hãy sử dụng mật khẩu chính mạnh và độc đáo.
  • Tích cực xác thực hai bước vì tất cả các lý do.
  • Hãy lưu mã khôi phục xác thực vào một nơi an toàn khác.
  • Thường xuyên cập nhật hình ảnh và hệ thống máy chủ.
  • Không nên gắn kết các thư mục không cần thiết hoặc socket Docker bên trong container.
  • Giới hạn các cổng chỉ cho phép truy cập những cổng thực sự cần thiết bằng tường lửa.
  • Không được công khai cơ sở dữ liệu hoặc thư mục đó. vw-data.

Fail2ban có thể chặn các địa chỉ IP tích lũy nhiều lần đăng nhập thất bại, nhưng cần phải cấu hình cẩn thận khi có máy chủ proxy ngược. Caddy hoặc Nginx phải truyền địa chỉ IP thực; nếu không, Fail2ban có thể chặn chính địa chỉ IP của máy chủ proxy.

Bạn cũng có thể tắt hiển thị gợi ý mật khẩu. Những gợi ý này có thể tạo điều kiện cho các cuộc tấn công đoán mật khẩu khi máy chủ được truy cập công khai.

Để tìm hiểu thêm về những phương pháp này, bạn có thể tham khảo cách thức thực hiện. sử dụng trình quản lý mật khẩu một cách an toàn.

Cách thiết lập thông báo qua email

Cấu hình SMTP cho phép bạn gửi lời mời, xác nhận và thông báo. Bạn cần chỉ định máy chủ, người gửi, cổng, phương thức bảo mật và thông tin đăng nhập do dịch vụ email của bạn cung cấp.

Đừng nhầm lẫn email SMTP với bản sao lưu của kho dữ liệu. Bạn cũng không nên chỉ dựa vào chúng để khôi phục tài khoản. Nếu bạn quên mật khẩu chính và không thiết lập phương pháp khôi phục nào khác, bạn có thể mất quyền truy cập vào dữ liệu đã mã hóa của mình.

Sau khi lưu cài đặt, hãy gửi một tin nhắn thử nghiệm và kiểm tra nhật ký nếu tin nhắn không đến. Đồng thời kiểm tra thư mục thư rác và các hạn chế của nhà cung cấp SMTP.

Cách tạo bản sao lưu đầy đủ của Vaultwarden

Cơ sở dữ liệu SQLite lưu trữ người dùng, mặt hàng, thiết bị và tổ chức, nhưng... Nó không chứa tất cả các tệp.Các tệp đính kèm và một số bài nộp được lưu trữ trong các thư mục riêng biệt.

Một bản sao hoàn chỉnh cần bao gồm:

  • db.sqlite3 hoặc một bản sao nhất quán của cơ sở dữ liệu.
  • Thư mục attachments.
  • Thư mục sendsNếu bạn muốn giữ lại những tập tin đó.
  • Tệp tin config.jsonNếu bạn sử dụng bảng điều khiển.
  • Các tập tin rsa_key*.
  • Các tập tin Compose, Caddy và các biến của chúng.

Để sao lưu đơn giản và nhất quán, bạn có thể tạm thời dừng Vaultwarden và lưu trữ thư mục đó:

docker compose stop vaultwarden
tar -czf vaultwarden-backup-$(date +%F).tar.gz vw-data compose.yml Caddyfile .env
docker compose start vaultwarden

Tệp này có thể chứa mã thông báo quản trị và thông tin đăng nhập SMTP. Hãy mã hóa nó trước khi sao chép. sang máy tính khác hoặc thiết bị lưu trữ từ xa.

Nếu bạn không muốn dừng dịch vụ, Vaultwarden bao gồm một lệnh sử dụng cơ chế sao chép SQLite:

docker exec vaultwarden /vaultwarden backup

Lệnh này bảo vệ cơ sở dữ liệu, nhưng bạn vẫn nên sao lưu các tệp đính kèm, tệp cấu hình và khóa. Hãy tự động hóa quá trình sao lưu, giữ ít nhất một bản sao lưu ngoài máy chủ và kiểm tra khả năng khôi phục định kỳ.

Nội dung độc quyền - Bấm vào đây  Cập nhật ứng dụng một cách an toàn?

Hướng dẫn cập nhật Vaultwarden bằng Docker

Hãy tạo một bản sao đã được xác minh trước khi cập nhật. Sau đó chạy lệnh:

docker compose pull
docker compose up -d

Kiểm tra trạng thái và tin nhắn mới nhất:

docker compose ps
docker compose logs --tail=100 vaultwarden

Docker sẽ tải xuống hình ảnh và tạo lại vùng chứa, đồng thời bảo toàn các thông tin đã lưu. vw-dataKhông nên sử dụng các lệnh dọn dẹp toàn cục mà không kiểm tra trước xem chúng sẽ xóa những container, image và network nào.

Trong các hệ thống mà tính ổn định là yếu tố then chốt, bạn có thể cố định một phiên bản hình ảnh cụ thể thay vì luôn sử dụng phiên bản mặc định. latestBằng cách này, bạn có thể xem lại ghi chú phát hành và quyết định thời điểm áp dụng từng bản cập nhật.

Những lỗi thường gặp khi cài đặt Vaultwarden bằng Docker

Những lỗi thường gặp khi cài đặt Vaultwarden bằng Docker

Giao diện hoạt động trên máy tính cục bộ (localhost), nhưng không hoạt động trên máy tính khác.

Cảng này có giới hạn về... 127.0.0.1 Hoặc trình duyệt từ chối các chức năng mã hóa khi truy cập qua HTTP. Hãy cấu hình địa chỉ HTTPS trước khi sử dụng dịch vụ từ các thiết bị khác.

Ứng dụng khách chính thức không thể kết nối với máy chủ.

Chọn môi trường Tự lưu trữ và nhập địa chỉ chính xác với https://Kiểm tra chứng chỉ, DNS, proxy và biến. DOMAIN.

Container khởi động, nhưng dữ liệu biến mất khi nó được tạo lại.

Bộ điều chỉnh âm lượng chưa được lắp đặt đúng cách. Vui lòng kiểm tra lại. ./vw-data:/data Nó xuất hiện trong phần cài đặt và cho biết bạn đang chạy Compose từ thư mục mong muốn.

Tôi không thể tạo tài khoản khác.

Si SIGNUPS_ALLOWED đang ở falseHành vi này là chính xác. Hãy gửi lời mời từ bảng điều khiển hoặc tạm thời chỉ cho phép đăng ký trong khi bạn tạo tài khoản.

Mã băm ADMIN_TOKEN không hoạt động.

Kiểm tra phép nội suy của các dấu hiệu $Sử dụng tệp .env Sử dụng dấu ngoặc đơn hoặc dấu ngoặc kép nếu bạn chèn chuỗi trực tiếp vào Compose.

Các biến số môi trường dường như bị bỏ qua.

Kiểm tra xem nó có tồn tại hay không. vw-data/config.jsonCác tùy chọn được lưu từ bảng điều khiển có thể ghi đè lên các biến được định nghĩa trong compose.yml.

Chứng chỉ hoạt động trên trình duyệt, nhưng không hoạt động trên thiết bị di động.

Thiết bị có thể không tin tưởng toàn bộ chuỗi chứng chỉ. Hãy sử dụng cơ quan cấp chứng chỉ được công nhận hoặc cài đặt đúng cách cơ quan cấp chứng chỉ riêng của bạn và các chứng chỉ của nó.

Tệp đính kèm bị lỗi

Kiểm tra điều đó DOMAIN Hãy đảm bảo địa chỉ IP bên ngoài khớp với địa chỉ IP của máy chủ proxy và cho phép kích thước yêu cầu cần thiết. Đồng thời kiểm tra dung lượng trống và quyền truy cập. vw-data.

Vaultwarden không thể ghi dữ liệu vào thư mục vw-data.

Thư mục máy chủ có quyền truy cập không tương thích. Hãy kiểm tra chủ sở hữu và quyền truy cập dựa trên lỗi hiển thị trong nhật ký. Không sử dụng chmod 777 như một giải pháp lâu dài.

Fail2ban chặn địa chỉ không chính xác

Máy chủ proxy không truyền địa chỉ IP thực hoặc Fail2ban đang đọc sai trường thông tin. Hãy cấu hình lại cho đúng. X-Real-IP hoặc tiêu đề tương ứng với máy chủ proxy của bạn.

Bản sao được khôi phục không chứa các tệp đính kèm.

Chỉ có SQLite được sao lưu. Vui lòng khôi phục cả các thư mục. attachments y sendsNgoài cấu hình và khóa RSA.

Vaultwarden cho phép bạn sử dụng các tổ chức và bộ sưu tập để chia sẻ mật khẩu gia đình Sử dụng các ứng dụng khách tương thích. Trước khi thêm người dùng khác, hãy xác minh rằng HTTPS, xác thực hai bước và sao lưu hoạt động chính xác.

Kết quả có thể là một trình quản lý mật khẩu nhanh, riêng tư và linh hoạt, nhưng tính bảo mật của nó phụ thuộc vào việc bảo trì. Việc kiểm soát máy chủ chỉ có lợi khi đi kèm với các bản cập nhật, quyền truy cập bị hạn chế và một chiến lược khôi phục đã được chứng minh.

Cách chia sẻ mật khẩu an toàn với gia đình mà không cần gửi tệp
Bài viết liên quan:
Cách chia sẻ mật khẩu an toàn với gia đình mà không cần gửi tệp