Chuyển đến nội dung chính

Tự triển khai Bitwarden bằng Docker: Hướng dẫn cài đặt hoàn chỉnh

Hướng dẫn thực tế để tự vận hành hầm mật khẩu Bitwarden bằng Docker, từ thiết lập máy chủ ban đầu đến cấu hình, cập nhật và xử lý sự cố thường gặp.
· 15 phút đọc

Khám phá cùng AI

Trong bài viết này, tôi sẽ hướng dẫn bạn cài đặt Bitwarden với Docker trên một máy chủ Ubuntu mới, cấu hình HTTPS với Let's Encrypt và xử lý các vấn đề thiết lập thường gặp.

Nếu bạn mới bắt đầu với Docker, tốt hơn hết là đăng ký khóa học Giới thiệu về Docker hoặc Docker trung cấp – hãy nắm vững nền tảng trước khi quản lý các thiết lập nhiều container.

Triển khai Docker của Bitwarden là gì?

Bitwarden có một cài đặt chính thức dựa trên Docker cho phép bạn vận hành trình quản lý mật khẩu theo cách của riêng mình.

Bạn chỉ cần chạy một script cài đặt duy nhất. Không cần tự cài đặt cơ sở dữ liệu, máy chủ web hay viết bất kỳ mã nào. Docker sẽ kéo các container được cấu hình sẵn, thiết lập mạng giữa chúng và khởi chạy mọi thứ. Việc cập nhật cũng tương tự – chỉ cần chạy script cập nhật và Docker sẽ lo phần còn lại.

Thiết lập Docker của Bitwarden chạy dưới dạng nhiều container phối hợp với nhau. Bạn có một container web vault cho giao diện người dùng, một container API để xử lý yêu cầu, một container cơ sở dữ liệu để lưu dữ liệu hầm mã hóa, và các dịch vụ hỗ trợ cho tệp đính kèm và biểu tượng. Docker Compose điều phối các container này để chúng có thể giao tiếp với nhau.

Mọi thứ đều được cấu hình sẵn cho bạn.

Cách tiếp cận đa container này nghĩa là mỗi thành phần chạy cách ly. Nếu cần chỉnh sửa cơ sở dữ liệu, bạn có thể khởi động lại riêng container đó mà không ảnh hưởng đến giao diện web. Nếu muốn kiểm tra log, mỗi dịch vụ có luồng log riêng.

Triển khai chính thức dùng Docker Compose để quản lý tất cả thông qua một tệp cấu hình duy nhất, giúp toàn hệ thống dễ hiểu và dễ bảo trì hơn so với cách cài đặt máy chủ truyền thống.

Yêu cầu trước khi chạy Bitwarden với Docker

Bạn cần vài thứ trước khi chạy Bitwarden, nhưng không yêu cầu phần cứng doanh nghiệp hay thiết lập phức tạp.

Một máy chủ hoặc máy ảo Linux là điểm khởi đầu. Ubuntu Server là tất cả những gì bạn cần. Bạn có thể dùng máy chủ đám mây từ AWS, DigitalOcean, hoặc Linode. Một cấu hình cơ bản với 2GB RAM và 20GB lưu trữ là đủ để chạy Bitwarden cho cá nhân hoặc nhóm nhỏ.

Docker và Docker Compose sẽ xử lý việc cài đặt thực tế. Bạn sẽ cài Docker Engine (không phải Docker Desktop) và Docker Compose dưới dạng gói riêng. Hầu hết các bản phân phối Linux đều có cả hai trong trình quản lý gói.

Một tên miền là bắt buộc vì Bitwarden cần HTTPS để hoạt động. Bạn không thể chạy trên địa chỉ IP. Bạn sẽ phải trỏ tên miền của mình đến địa chỉ IP của máy chủ trước khi bắt đầu cài đặt.

Cổng 80 và 443 phải mở trên máy chủ của bạn. Cổng 80 xử lý lưu lượng HTTP và xác thực chứng chỉ, trong khi cổng 443 phục vụ lưu lượng HTTPS. Hãy cấu hình tường lửa và nhóm bảo mật của nhà cung cấp đám mây để cho phép kết nối đến trên cả hai cổng.

Bạn cũng cần kỹ năng dòng lệnh cơ bản. Bạn sẽ SSH vào máy chủ, chạy script cài đặt và chỉnh sửa tệp cấu hình. Nếu bạn biết cách di chuyển thư mục và chạy lệnh với sudo, bạn đã sẵn sàng.

Và thế là xong! Có một số điều bạn cần biết, nhưng hầu như ai am hiểu công nghệ một chút đều có thể làm được. Tiếp theo, tôi sẽ chỉ bạn cách thực hiện.

Cách cài đặt Bitwarden bằng Docker (Phương pháp chính thức)

Bài hướng dẫn này dùng một droplet Ubuntu của DigitalOcean và Cloudflare để quản lý tên miền và DNS. Bạn có thể dùng nhà cung cấp và dịch vụ khác – nhưng nếu muốn làm theo một cách nhẹ nhàng, tôi khuyên dùng tương tự.

Thiết lập môi trường

Đầu tiên, tạo một droplet DigitalOcean với Ubuntu 24.04 LTS. Gói Basic $12/tháng (2GB RAM, 1 CPU, 50GB SSD) chạy Bitwarden ổn cho cá nhân hoặc nhóm nhỏ. Chọn vùng trung tâm dữ liệu gần bạn để có độ trễ tốt hơn. Đừng quên thêm khóa SSH hiện có hoặc tạo khóa mới.

Sau khi droplet khởi động, ghi lại địa chỉ IP công khai từ bảng điều khiển DigitalOcean.

Chi tiết droplet DigitalOcean

Chi tiết droplet DigitalOcean

Tiếp theo, cấu hình DNS trên Cloudflare. Đăng nhập tài khoản Cloudflare và thêm một bản ghi A trỏ tên miền của bạn tới IP của droplet:

  • Type: A

  • Name: vault (hoặc subdomain bạn muốn)

  • IPv4 address: IP của droplet

  • Proxy status: Tắt (đám mây màu xám)

Tắt proxy của Cloudflare trong giai đoạn thiết lập ban đầu. Let's Encrypt cần truy cập trực tiếp máy chủ của bạn để xác minh quyền sở hữu tên miền. Bạn có thể bật lại proxy sau khi Bitwarden chạy và chứng chỉ đã được tạo.

Tôi đã dùng một tên miền đang hoạt động của mình cho bài viết này:

Thiết lập DNS Cloudflare

Thiết lập DNS Cloudflare

DNS cần vài phút để phân giải. Chạy lệnh shell sau để xác minh thay đổi đã hiển thị:

nslookup vault.yourdomain.com

Bạn sẽ thấy địa chỉ IP của droplet trong phản hồi.

Kết quả Nslookup

Kết quả Nslookup

Giờ bạn có thể kết nối đến droplet qua SSH:

ssh root@your-droplet-ip

Và bạn đã vào được máy chủ:

Kết nối tới phiên bản Ubuntu

Kết nối tới phiên bản Ubuntu

Việc đầu tiên cần làm là cập nhật các gói hệ thống. Chạy lệnh sau:

apt update && apt upgrade -y

Giờ bạn sẵn sàng cài Docker và Bitwarden.

Như đã đề cập, bạn sẽ cần cả Docker và Docker Compose. Chạy các lệnh sau để cài đặt:

sudo apt install docker.io docker-compose-v2 -y
sudo systemctl enable docker
sudo systemctl start docker

Và giờ hãy xác minh cài đặt:

docker --version
docker compose version

Bạn sẽ thấy số phiên bản cho cả hai lệnh.

Phiên bản Docker và Docker Compose

Phiên bản Docker và Docker Compose

Tiếp theo, tôi sẽ chỉ bạn cách cài đặt Bitwarden.

Tải và chuẩn bị trình cài đặt Bitwarden

Trình cài đặt chính thức của Bitwarden nằm trong kho GitHub của họ. Bạn có thể tải trực tiếp về máy chủ:

curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" && chmod +x bitwarden.sh

Lệnh này tải script cài đặt và cho phép thực thi. Script xử lý mọi thứ từ tải image Docker, tạo file cấu hình, đến thiết lập cấu trúc thư mục.

Bước tiếp theo là tạo một thư mục để Bitwarden lưu dữ liệu:

sudo mkdir /opt/bitwarden

Giờ bạn có thể di chuyển script cài đặt vào đó:

sudo mv bitwarden.sh /opt/bitwarden/
cd /opt/bitwarden

Và cuối cùng, chạy trình cài đặt:

sudo ./bitwarden.sh install

Script sẽ tạo thư mục bwdata chứa tất cả tệp cấu hình, chứng chỉ, log và tệp cơ sở dữ liệu của Bitwarden. Đây là nơi chứa mọi thứ, vì vậy hãy sao lưu thư mục này thường xuyên.

Chạy quá trình cài đặt

Trình cài đặt sẽ hỏi bạn một số câu. Hãy trả lời cẩn thận vì trả lời sai có thể phải làm lại từ đầu.

Nhập tên miền của bạn chính xác như trong bản ghi DNS. Nếu bạn thiết lập vault.yourdomain.com trên Cloudflare, hãy nhập đúng chuỗi đó. Đừng thêm https:// hoặc dấu gạch chéo cuối.

Chọn Let's Encrypt cho chứng chỉ SSL. Trình cài đặt sẽ tự động tạo và gia hạn chứng chỉ. Nếu bạn dùng proxy của Cloudflare (đám mây màu cam), có thể cần tắt tạm thời trong quá trình cài ban đầu để Let's Encrypt xác minh tên miền.

Nhập địa chỉ email của bạn. Đây là nơi bạn sẽ nhận thông báo sắp hết hạn chứng chỉ.

Cài đặt Bitwarden (1)

Cài đặt Bitwarden (1)

Bitwarden sau đó sẽ kéo các image Docker cần thiết. Mất khoảng một phút, rồi bạn sẽ có thêm một vòng hỏi đáp nữa.

Chọn tên cho cơ sở dữ liệu. Không cần sáng tạo, vault là quá ổn.

Cài đặt Bitwarden (2)

Cài đặt Bitwarden (2)

Sau đó quá trình cài đặt sẽ tiếp tục tải các image Docker bổ sung.

Lấy ID và khóa cài đặt. Mở trang Bitwarden Host và nhập email quản trị cùng khu vực. Bạn sẽ nhận được cả hai giá trị – sao chép/dán khi được hỏi trong lúc cài đặt.

ID và khóa cài đặt Bitwarden

ID và khóa cài đặt Bitwarden

Vậy là xong – cài đặt đã hoàn tất:

Cài đặt Bitwarden (3)

Cài đặt Bitwarden (3)

Script tạo các tệp cấu hình trong ./bwdata/config.yml và ./bwdata/env/global.override.env. Bạn có thể chỉnh các tệp này trực tiếp nếu cần thay đổi thiết lập sau này.

Việc còn lại là khởi động Bitwarden:

sudo ./bitwarden.sh start

Docker sẽ kéo tất cả image cần thiết và khởi chạy các container. Lần chạy đầu mất vài phút. Script hiển thị tiến trình khi từng container khởi động.

Cài đặt Bitwarden (4)

Cài đặt Bitwarden (4)

Sau vài phút, bạn sẽ thấy thông báo Bitwarden is up and running! in ra trong terminal. Nghĩa là cài đặt đã thành công và bạn sẵn sàng sang phần tiếp theo.

Cài đặt Bitwarden (5)

Cài đặt Bitwarden (5)

Xác minh cài đặt

Mở tên miền của bạn trên trình duyệt. Bạn sẽ thấy trang đăng nhập Bitwarden với chứng chỉ HTTPS hợp lệ.

Trang đăng nhập Bitwarden

Nếu thấy cảnh báo chứng chỉ, có thể Let's Encrypt chưa xác minh được tên miền. Hãy kiểm tra rằng:

  • Bản ghi DNS trỏ đúng địa chỉ IP
  • Cổng 80 và 443 được mở trên tường lửa
  • Nếu dùng proxy Cloudflare, thử tắt tạm thời

Nhấp "Create Account" để tạo người dùng đầu tiên. Tài khoản này sẽ là chủ sở hữu hầm, vì vậy hãy dùng mật khẩu chính mạnh và đừng quên. Bitwarden không thể khôi phục mật khẩu này – nếu bạn mất, dữ liệu trong hầm sẽ mất theo.

Tạo người dùng Bitwarden

Tạo người dùng Bitwarden

Sau khi tạo tài khoản, đăng nhập để xác minh mọi thứ hoạt động. Bạn có thể tạo một mục đăng nhập thử và đảm bảo nó được lưu đúng.

Thêm mục đăng nhập vào Bitwarden

Thêm mục đăng nhập vào Bitwarden

Mọi thứ hoạt động như mong đợi, tiếp theo tôi sẽ quay lại terminal để xác minh phía đó cũng ổn.

Chạy lệnh này để kiểm tra tất cả container đang chạy:

sudo docker ps

Bạn sẽ thấy nhiều container với tên như bitwarden-web, bitwarden-api, bitwarden-db, và các container khác.

Các container đang chạy

Các container đang chạy

Nếu có container nào hiển thị "Restarting" hoặc không xuất hiện, hãy kiểm tra log bằng các lệnh sau:

sudo docker logs bitwarden-api
sudo docker logs bitwarden-web

Nếu có vấn đề khởi động, thường do xung đột cổng hoặc quyền hạn.

Xung đột cổng xảy ra nếu có dịch vụ khác dùng cổng 80 hoặc 443. Hãy dừng dịch vụ xung đột hoặc đổi cổng của Bitwarden trong ./bwdata/config.yml.

Lỗi khởi tạo cơ sở dữ liệu thường là vấn đề quyền. Hãy kiểm tra người dùng Docker có quyền ghi vào thư mục bwdata:

sudo chown -R root:root /opt/bitwarden/bwdata
sudo chmod -R 755 /opt/bitwarden/bwdata

Lỗi tạo chứng chỉ nghĩa là Let's Encrypt không thể truy cập máy chủ của bạn. Hãy xác minh tên miền trỏ đúng IP và tường lửa cho phép lưu lượng đến cổng 80 và 443.

Nếu container liên tục khởi động lại, hãy kiểm tra dung lượng đĩa và bộ nhớ. Bitwarden cần tối thiểu 2GB RAM để chạy tất cả dịch vụ.

Cấu hình HTTPS và chứng chỉ

Bitwarden yêu cầu HTTPS cho mọi kết nối. Không có cách chạy trên HTTP thuần.

Các tiện ích mở rộng trình duyệt và ứng dụng di động của Bitwarden từ chối kết nối đến endpoint HTTP. Bản thân giao thức yêu cầu kết nối được mã hóa để bảo vệ dữ liệu hầm khi truyền.

Script cài đặt thiết lập chứng chỉ Let's Encrypt. Let's Encrypt là tổ chức cấp chứng chỉ miễn phí phát hành chứng chỉ SSL/TLS và xử lý gia hạn. Khi bạn nhập tên miền trong quá trình cài đặt, script đã cấu hình tự động tạo chứng chỉ qua giao thức ACME của Let's Encrypt.

Chứng chỉ hết hạn sau 90 ngày, nhưng thiết lập Docker của Bitwarden có sẵn tự động gia hạn. Một cron job kiểm tra chứng chỉ sắp hết hạn và gia hạn trước khi hết hạn. Bạn không cần làm gì thủ công.

Chứng chỉ tùy chỉnh có ý nghĩa trong vài tình huống. Nếu bạn chạy Bitwarden phía sau reverse proxy vốn đã xử lý SSL, bạn có thể tắt Let's Encrypt và để proxy quản lý chứng chỉ. Nếu tổ chức bạn có CA nội bộ, bạn có thể cấu hình Bitwarden dùng các chứng chỉ đó.

Để dùng chứng chỉ tùy chỉnh, chỉnh ./bwdata/config.yml và đặt ssl_certificate_path và ssl_key_path tới các tệp chứng chỉ của bạn.

Sử dụng chứng chỉ tùy chỉnh docker bitwarden

Sử dụng chứng chỉ tùy chỉnh

Sau đó khởi động lại Bitwarden:

sudo ./bitwarden.sh restart

Khi việc gia hạn chứng chỉ thất bại, trước tiên bạn nên kiểm tra log:

sudo docker logs bitwarden-nginx

Các lỗi gia hạn thường gặp khi:

  • DNS của tên miền đã thay đổi và không còn trỏ tới máy chủ
  • Proxy của Cloudflare được bật (đám mây màu cam), chặn xác minh của Let's Encrypt
  • Cổng 80 bị chặn, khiến ACME challenge không hoàn tất
  • Các tệp chứng chỉ có quyền không đúng

Khắc phục vấn đề gốc rễ, rồi kích hoạt gia hạn thủ công:

sudo docker exec bitwarden-nginx certbot renew

Nếu lệnh thành công, cron job tự động gia hạn sẽ hoạt động trong các lần sau.

Cấu hình Email (SMTP)

Bitwarden cần email để gửi lời mời người dùng, liên kết đặt lại mật khẩu và mã xác thực hai yếu tố.

Nếu không cấu hình SMTP, người dùng không thể đặt lại mật khẩu. Bạn không thể mời thành viên vào tổ chức. Yêu cầu truy cập khẩn cấp sẽ không hoạt động. Hệ thống vẫn chạy, nhưng bạn mất các tính năng quan trọng về khôi phục tài khoản và quản lý người dùng.

Thiết lập SMTP nằm trong ./bwdata/env/global.override.env.

Tệp cài đặt SMTP docker bitwarden

Tệp cài đặt SMTP

Mở tệp này và thêm cấu hình của nhà cung cấp email:

globalSettings__mail__replyToEmail=[email protected]
globalSettings__mail__smtp__host=smtp.gmail.com
globalSettings__mail__smtp__port=587
globalSettings__mail__smtp__ssl=false
globalSettings__mail__smtp__username=[email protected]
globalSettings__mail__smtp__password=your-app-password

Định dạng sử dụng hai dấu gạch dưới để biểu diễn cấu hình lồng nhau. Mỗi __ phân tách một cấp trong hệ thống thiết lập.

Sau khi chỉnh tệp, đừng quên khởi động lại Bitwarden:

sudo ./bitwarden.sh restart

Kiểm tra gửi email bằng cách yêu cầu đặt lại mật khẩu hoặc gửi email thử từ bảng quản trị.

Dưới đây là một số lỗi SMTP thường gặp bạn nên tránh:

  • Sử dụng mật khẩu email thông thường thay vì mật khẩu dành riêng cho ứng dụng. Hầu hết nhà cung cấp yêu cầu tạo mật khẩu riêng cho truy cập SMTP. Gmail gọi là "Mật khẩu ứng dụng", bạn tạo trong phần bảo mật tài khoản Google.

  • Sai số cổng. Cổng 587 dùng cho kết nối STARTTLS, cổng 465 cho SSL/TLS, và cổng 25 thường bị nhà cung cấp đám mây chặn. Nếu một cổng không hoạt động, thử cổng khác.

  • Nhầm lẫn SSL/TLS. Đặt ssl=false cho STARTTLS trên cổng 587, hoặc ssl=true cho SSL trực tiếp trên cổng 465. Trộn lẫn các thiết lập này sẽ gây lỗi kết nối.

  • Tường lửa chặn SMTP đi. Một số nhà cung cấp đám mây chặn cổng 25 theo mặc định. Hãy dùng cổng 587 hoặc 465, vốn hiếm khi bị chặn.

Nếu email không gửi được, hãy kiểm tra log của container API:

sudo docker logs bitwarden-api

Tìm lỗi kết nối SMTP hoặc xác thực. Log sẽ cho thấy chính xác điều gì sai với việc gửi email.

Cập nhật và sao lưu Bitwarden

Tự lưu trữ đồng nghĩa với việc phải sao lưu và cập nhật thủ công. May mắn thay, việc này khá dễ.

Cập nhật Bitwarden

Trước khi cập nhật, hãy dừng Bitwarden và sao lưu dữ liệu. Cập nhật có thể thất bại hoặc gây vấn đề, và bạn cần cách quay lại nếu có sự cố.

cd /opt/bitwarden
sudo ./bitwarden.sh stop

Sao lưu toàn bộ thư mục bwdata:

sudo tar -czf bitwarden-backup-$(date +%Y%m%d).tar.gz bwdata/

Di chuyển bản sao lưu tới nơi an toàn, như ổ ngoài hoặc máy chủ khác.

Giờ cập nhật Bitwarden bằng lệnh này:

sudo ./bitwarden.sh update

Script cập nhật sẽ kéo image Docker mới nhất, cập nhật tệp cấu hình nếu cần và khởi động lại tất cả container. Thường mất vài phút.

Cập nhật Bitwarden

Cập nhật Bitwarden

Sau khi cập nhật xong, đăng nhập vào web vault để xác minh mọi thứ hoạt động và dữ liệu còn nguyên.

Nếu cập nhật gây lỗi, chỉ cần khôi phục bản sao lưu:

sudo ./bitwarden.sh stop
sudo rm -rf bwdata/
sudo tar -xzf bitwarden-backup-YYYYMMDD.tar.gz
sudo ./bitwarden.sh start

Sao lưu

Thư mục bwdata chứa mọi thứ Bitwarden cần để chạy. Bạn nên sao lưu thường xuyên.

Thư mục này bao gồm:

  • Cơ sở dữ liệu hầm chứa toàn bộ mật khẩu đã mã hóa
  • Chứng chỉ SSL
  • Tệp cấu hình
  • Log và tệp đính kèm
  • Định nghĩa Docker Compose

Hãy dừng Bitwarden trước khi sao lưu để đảm bảo tính nhất quán dữ liệu:

sudo ./bitwarden.sh stop
sudo tar -czf bitwarden-backup-$(date +%Y%m%d).tar.gz bwdata/
sudo ./bitwarden.sh start

Lưu bản sao lưu ở nhiều nơi. Giữ một bản trên máy chủ, một bản trên máy khác và một bản trên lưu trữ đám mây nếu có thể.

Để khôi phục từ bản sao lưu, dừng Bitwarden, xóa thư mục bwdata hiện tại, giải nén bản sao lưu và khởi động lại. Quy trình tương tự như quay lui khi cập nhật lỗi.

Bạn thậm chí có thể tự động hóa sao lưu bằng cron job chạy hàng ngày hoặc hàng tuần, tùy theo tần suất thay đổi dữ liệu hầm.

Các vấn đề thường gặp khi chạy Bitwarden trong Docker

Ngay cả khi cài đặt sạch, bạn vẫn có thể gặp sự cố. Dưới đây là cách chẩn đoán các lỗi thường gặp nhất.

Xung đột cổng xảy ra khi dịch vụ khác đã dùng cổng 80 hoặc 443. Kiểm tra dịch vụ đang dùng các cổng này:

sudo netstat -tlnp | grep ':80\\|:443'

Nếu thấy Apache, Nginx, hoặc máy chủ web khác đang chạy, bạn cần dừng dịch vụ đó hoặc đổi cổng của Bitwarden. Để đổi cổng, chỉnh ./bwdata/config.yml và đặt http_port và https_port sang giá trị khác như 8080 và 8443. Sau đó khởi động lại:

sudo ./bitwarden.sh restart

Lỗi chứng chỉ xuất hiện dưới dạng cảnh báo trên trình duyệt hoặc Bitwarden từ chối khởi động. Kiểm tra log của container nginx bằng lệnh:

sudo docker logs bitwarden-nginx

Tìm lỗi ACME challenge hoặc xác thực chứng chỉ. Các nguyên nhân phổ biến:

  • DNS chưa trỏ tới máy chủ của bạn
  • Proxy Cloudflare chặn xác minh của Let's Encrypt
  • Cổng 80 bị chặn bởi tường lửa
  • Tên miền trong cấu hình không khớp bản ghi DNS

Khắc phục vấn đề DNS hoặc tường lửa, sau đó yêu cầu chứng chỉ thủ công:

sudo docker exec bitwarden-nginx certbot renew --force-renewal

Container không khởi động thường do vấn đề cơ sở dữ liệu hoặc thiếu tệp. Kiểm tra container đang chạy bằng lệnh này:

sudo docker ps -a

Container ở trạng thái "Exited" hoặc "Restarting" đang có vấn đề. Kiểm tra log của chúng:

sudo docker logs bitwarden-db
sudo docker logs bitwarden-api

Lỗi khởi tạo cơ sở dữ liệu nghĩa là thư mục bwdata gặp vấn đề quyền hạn. Sửa quyền:

sudo chown -R root:root /opt/bitwarden/bwdata
sudo chmod -R 755 /opt/bitwarden/bwdata

Nếu container vẫn không khởi động, kiểm tra dung lượng đĩa:

df -h

Hãy nhớ Bitwarden cần vài GB trống để chạy ổn định.

SMTP không hoạt động sẽ chặn đặt lại mật khẩu và lời mời người dùng. Kiểm tra cài đặt SMTP trước tiên bằng cách xem log API khi bạn thử gửi email:

sudo docker logs -f bitwarden-api

Kích hoạt thử đặt lại mật khẩu và theo dõi lỗi SMTP trong log. Các lỗi phổ biến:

  • Sai tên người dùng hoặc mật khẩu (hãy dùng mật khẩu ứng dụng, không dùng mật khẩu thông thường)
  • Sai cổng hoặc thiết lập SSL
  • Tường lửa chặn kết nối SMTP đi
  • Nhà cung cấp email yêu cầu các bước xác thực bổ sung

Bạn có thể xác minh cài đặt SMTP trong ./bwdata/env/global.override.env khớp chính xác tài liệu của nhà cung cấp. Chỉ một lỗi chính tả nhỏ trong hostname hoặc cổng cũng khiến email lỗi.

Sau khi sửa cài đặt SMTP, khởi động lại Bitwarden và thử lại.

Bitwarden so với Vaultwarden (Lựa chọn của người dùng Docker)

Vaultwarden là bản triển khai máy chủ Bitwarden không chính thức, do cộng đồng duy trì, viết bằng Rust.

Không liên kết với Bitwarden Inc., nhưng tương thích với mọi ứng dụng khách chính thức của Bitwarden. Bạn dùng cùng tiện ích trình duyệt, ứng dụng di động và máy tính. Khác biệt hoàn toàn nằm ở phía máy chủ.

Vì sao người dùng chọn Vaultwarden

  • Tiêu tốn tài nguyên thấp. Vaultwarden chạy trên một container nhẹ, cần dưới 100MB RAM. Bitwarden chính thức dùng nhiều container và cần ít nhất 2GB. Nếu bạn chạy trên VPS nhỏ hoặc Raspberry Pi, Vaultwarden hợp lý hơn.
  • Thiết lập đơn giản hơn. Một container nghĩa là ít thành phần chuyển động hơn. Không có container cơ sở dữ liệu riêng, cũng không có container web riêng. Bạn kéo một image, cấu hình một container, và xong.
  • Một số tính năng premium hoạt động mà không cần giấy phép trả phí. Vaultwarden bật các tính năng như tệp đính kèm và truy cập khẩn cấp, vốn yêu cầu thuê bao premium trên Bitwarden chính thức.

Đánh đổi khi dùng Vaultwarden

  • Đây là dự án cộng đồng. Bản cập nhật đến từ tình nguyện viên, không phải công ty có đội ngũ hỗ trợ chuyên trách.
  • Không có hỗ trợ chính thức. Bitwarden Inc. sẽ không hỗ trợ vấn đề của Vaultwarden. Bạn tự tìm kiếm trên diễn đàn cộng đồng và GitHub.
  • Nguy cơ không tương thích. Khi Bitwarden ra tính năng mới, Vaultwarden cần thời gian theo kịp. Thường có độ trễ trước khi chức năng mới hoạt động.

Bạn nên dùng cái nào?

Dùng Bitwarden chính thức nếu bạn muốn hỗ trợ doanh nghiệp, đảm bảo tương thích đầy đủ tính năng và có hậu thuẫn từ công ty phát triển ứng dụng khách. Yêu cầu tài nguyên không còn quan trọng nếu bạn dùng VPS có cấu hình phù hợp.

Chọn Vaultwarden nếu bạn chạy trên phần cứng hạn chế, muốn thiết lập đơn giản hơn hoặc cần tính năng premium mà không phải trả phí. Chỉ cần hiểu rằng bạn đánh đổi hỗ trợ chính thức lấy hiệu quả tài nguyên.

Cả hai đều hoạt động tốt cho tự lưu trữ và đều bảo vệ mật khẩu của bạn bằng cùng cơ chế mã hóa mà ứng dụng khách yêu cầu.

Thực hành bảo mật cơ bản

Điều hiển nhiên là Bitwarden lưu mật khẩu của bạn, nên bạn cần bảo vệ nhiều hơn là chỉ mã hóa. Dưới đây là một số thực hành tốt nên theo.

Giữ máy chủ luôn cập nhật. Bản vá bảo mật rất quan trọng, hãy cập nhật thường xuyên. Đây là lệnh để thực hiện:

sudo apt update && sudo apt upgrade -y

Bạn có thể thiết lập cập nhật bảo mật tự động để bản vá quan trọng được cài mà không cần can thiệp thủ công. Trên Ubuntu, cài unattended-upgrades:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

Hạn chế truy cập bảng quản trị. Giao diện quản trị của Bitwarden nằm ở /admin và dùng token quản trị riêng để xác thực. Tạo một token mạnh trong lúc cài đặt và lưu trữ an toàn. Tránh để bảng quản trị lộ ra internet công cộng nếu có thể.

Nếu cần truy cập quản trị từ xa, hãy dùng đường hầm SSH hoặc VPN thay vì để /admin truy cập công khai.

Dùng HTTPS ở mọi nơi. Không bao giờ tắt HTTPS hoặc bỏ qua cảnh báo chứng chỉ. Nếu chứng chỉ có vấn đề, hãy sửa thay vì lách. Ứng dụng khách Bitwarden từ chối kết nối qua HTTP là có lý do.

Theo dõi các bản phát hành của Bitwarden. Đăng ký theo dõi phát hành trên GitHub hoặc xem blog của họ để cập nhật bảo mật. Khi có phiên bản mới, đọc ghi chú phát hành trước khi cập nhật để hiểu những thay đổi.

Bật xác thực hai yếu tố cho tài khoản hầm của bạn. Ngay cả khi ai đó đánh cắp mật khẩu chính, 2FA vẫn ngăn truy cập trái phép. Hãy dùng ứng dụng xác thực hoặc khóa phần cứng.

Dùng tường lửa. Tham khảo, đây là cách cấu hình UFW để chỉ cho phép các cổng cần thiết:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Chặn mọi thứ khác theo mặc định.

Thỉnh thoảng kiểm tra log để phát hiện hoạt động bất thường. Tìm các lần đăng nhập thất bại hoặc lời gọi API bất ngờ:

sudo docker logs bitwarden-api | grep -i "failed\\|error"

Như bạn thấy, tự lưu trữ Bitwarden có nghĩa là thỉnh thoảng bạn phải làm chút việc. Đó là cái giá của việc có toàn quyền kiểm soát.

Kết luận

Docker giúp tự lưu trữ Bitwarden trở nên dễ dàng và bạn không cần hạ tầng doanh nghiệp.

Script cài đặt chính thức làm hết cho bạn. Bạn có cập nhật tự động, quản lý chứng chỉ và một hầm hoạt động chưa đến một giờ – với tôi, tổng thời gian khoảng 15 phút, bao gồm khởi tạo máy tính đám mây và thiết lập DNS. Hầu hết người dùng không cần gì hơn những gì tôi trình bày trong bài này.

Bắt đầu với thiết lập cơ bản trên một máy chủ. Làm quen với sao lưu, cập nhật và xử lý sự cố cơ bản trước khi thêm reverse proxy, cơ sở dữ liệu ngoài hoặc thiết lập sẵn sàng cao. Những cấu hình nâng cao đó giải quyết các vấn đề mà có thể bạn chưa gặp.

Nếu bạn không muốn tin tưởng bên thứ ba với mật khẩu của mình, đây là cách để làm. Nhưng cũng đừng làm phức tạp quá và khiến mọi thứ hỏng. Chạy triển khai Docker chính thức, sao lưu thường xuyên, là bạn đã có một trình quản lý mật khẩu vững vàng dưới quyền kiểm soát của mình.

Bạn đã sẵn sàng học thêm về Docker chưa? Bắt đầu với khóa học Khái niệm Containerization và Virtualization và sau đó xem thực hành với Docker và Kubernetes.

Dario Radečić

Tác giả

Dario Radečić

Chuyên gia Khoa học Dữ liệu Cấp cao, làm việc tại Croatia. Tác giả Công nghệ Hàng đầu với hơn 700 bài viết đã xuất bản, đạt trên 10 triệu lượt xem. Tác giả cuốn sách Tự động hóa Machine Learning với TPOT.

FAQs

Làm thế nào để đảm bảo tính sẵn sàng cao cho phiên bản Bitwarden tự lưu trữ?

Tính sẵn sàng cao yêu cầu chạy nhiều phiên bản Bitwarden phía sau một bộ cân bằng tải với cơ sở dữ liệu ngoài dùng chung như PostgreSQL hoặc MySQL. Bạn sẽ cần cấu hình mỗi phiên bản kết nối đến cùng cơ sở dữ liệu và dùng lưu trữ dùng chung cho tệp đính kèm. Với hầu hết triển khai cá nhân và nhóm nhỏ, sao lưu thường xuyên và quy trình khôi phục được tài liệu hóa là đủ mà không cần kiến trúc HA phức tạp.

Thực hành tốt nhất để cấu hình SMTP trong Bitwarden là gì?

Hãy dùng mật khẩu dành riêng cho ứng dụng thay vì mật khẩu email thông thường và xác minh cài đặt SMTP của bạn khớp chính xác tài liệu của nhà cung cấp. Luôn kiểm tra gửi email sau khi cấu hình bằng cách kích hoạt đặt lại mật khẩu hoặc dùng chức năng kiểm tra trong bảng quản trị. Lưu trữ thông tin xác thực SMTP an toàn trong tệp global.override.env và hạn chế quyền tệp để ngăn truy cập trái phép.

Làm sao khắc phục lỗi 502 Bad Gateway trong Bitwarden?

Kiểm tra tất cả container có đang chạy bằng sudo docker ps và tìm container nào ở trạng thái "Restarting". Xem log của nginx và API bằng sudo docker logs bitwarden-nginx và sudo docker logs bitwarden-api để xác định dịch vụ lỗi. Nguyên nhân phổ biến gồm container API không khởi động do lỗi kết nối cơ sở dữ liệu, thiếu bộ nhớ hoặc vấn đề chứng chỉ chặn reverse proxy.

Tôi có thể dùng cổng máy chủ tùy chỉnh với Bitwarden không?

Có, hãy chỉnh ./bwdata/config.yml và thay http_port và https_port thành giá trị bạn muốn, như 8080 và 8443. Sau khi đổi cổng, khởi động lại Bitwarden với sudo ./bitwarden.sh restart. Lưu ý dùng cổng không chuẩn nghĩa là bạn phải thêm số cổng vào URL khi truy cập hầm.

Làm sao bật ghi log vào syslog trong Bitwarden?

Container Docker của Bitwarden mặc định log ra stdout/stderr, Docker sẽ tự động thu thập. Bạn có thể chuyển tiếp log này sang syslog bằng cách cấu hình logging driver của Docker trong thiết lập container hoặc dùng công cụ gom log như Fluentd hay Logstash. Với tích hợp syslog đơn giản, dùng logging driver syslog của Docker bằng cách thêm --log-driver=syslog vào cấu hình container, dù cách này yêu cầu chỉnh thủ công tệp Docker Compose.

Chủ đề

Liên quan