Phần mềm này hỗ trợ tính năng đồng bộ hóa trên nhiều thiết bị, cho phép người dùng truy cập vào kho dữ liệu của mình từ máy tính, điện thoại hoặc tablet. Vaultwarden cũng tương thích với nhiều loại trình duyệt và ứng dụng, làm cho nó trở nên thuận tiện và linh hoạt để sử dụng.
Ngoài ra, Vaultwarden cung cấp các tính năng bảo mật mạnh mẽ như mã hóa đầu cuối, xác thực hai yếu tố, và khả năng tự chủ trong việc lưu trữ dữ liệu, làm cho nó trở thành một giải pháp quản lý mật khẩu tốt cho cả cá nhân và doanh nghiệp muốn quản lý dữ liệu mật khẩu một cách độc lập.
Vaultwarden được đổi tên từ Bitwarden_rs, nhằm tránh nhầm lẫn với phiên bản self-hosted chính thức từ Bitwarden
Vaultwarden ban đầu mình đánh giá không cao, viết giới thiệu, cài đặt cơ bản, chủ yếu để tận dụng Oracle miễn phí, mà sau khi dùng khoảng 2 tuần, rất thích, nên quyết định sử dụng lâu dài, bài này được tổng hợp lại, lược bỏ các đoạn chém gió râu ria, tập trung vào nội dung của bài là cấu hình, bảo mật cho Vaultwarden, sau này có bạn nào google ra bài này thì làm theo là đủ, đỡ phải đọc nhiều
Cài đặt VPS
Tạo 1 VPS Oracle tại US, gói miễn phí VM.Standard.E2.1.Micro chạy Ubuntu 22.04, 1 GB RAM
Login với quyền root
- Cập nhập OS
sudo apt update && sudo apt upgrade -y && sudo reboot
- Bật BBR, tắt firewall, tạo 4G RAM ảo, cài đặt docker, docker-compose, rclone (nếu đã cài docker, docker-compose, có thể bỏ qua phần này)
sudo wget https://go.bibica.net/oracle-docker -O oracle-docker.sh && sudo chmod +x oracle-docker.sh && sudo ./oracle-docker.sh
- Bypass Oracle
# chỉ dành riêng cho Oracle VPS (không cần cài đặt nếu dùng VPS hãng khác) sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/NeverIdle-Oracle/master/VM.Standard.E2.1.Micro.sh -O /usr/local/bin/bypass_oracle.sh chmod +x /usr/local/bin/bypass_oracle.sh nohup /usr/local/bin/bypass_oracle.sh >> ./out 2>&1 <&- & crontab -l > bypass_oracle echo "@reboot nohup /usr/local/bin/bypass_oracle.sh >> ./out 2>&1 <&- &" >> bypass_oracle crontab bypass_oracle
Cài đặt Vaultwarden
Vaultwarden cài đặt rất đơn giản, mình hướng tới việc sử dụng thực tế hàng ngày, nên sẽ bổ xung thêm 1 ít tính năng cần thiết là push và gửi email, kèm theo đó là hướng tới bảo mật nhiều hơn, cụ thể là sẽ dùng thông qua Tunnels và WAF từ Clouflare, hạn chế lộ IP gốc của VPS, chặn nhiều bot, request, kết nối thừa thải
1. Bổ xung push từ Bitwarden
Đây là tính năng giúp các thiết bị di động như điện thoại cập nhập tức thời, tác giả của Vaultwarden không thích dùng, vì phải thông qua Bitwarden, trong trường hợp cơ sở hạ tầng Bitwarden gặp vấn đề, tính năng này năng này cũng sẽ gặp vấn đề, về mặt lý thuyết Bitwarden cũng sẽ biết được IP đó đang truy xuất tới trang nào, mình không quan trọng vấn đề này, nó giống như kiểu bạn dùng Cloudflare, thì Cloudflare có thể biết các user truy cập vào trang bạn tới từ đâu, rủi ro (nếu có) là cực nhỏ
Để lấy Id và Key, truy cập vào Bitwarden điền 1 email bất kì, data region chọn US, nó sẽ ra 2 giá trị INSTALLATION ID
và INSTALLATION KEY
, thay thế 2 giá trị này vào PUSH_INSTALLATION_ID
và PUSH_INSTALLATION_KEY
2. Cập nhập email thông báo
Nên dùng thêm SMTP để gửi email thông báo, giúp kiểm soát, quản lý việc login vào tài khoản tốt hơn
Bạn có thể dùng bất cứ dịch vụ SMTP nào tùy thích, có thể dùng SMTP2Go, miễn phí 1000 email gửi đi mỗi tháng
2 bước này là tùy chọn, không bắt buộc phải thêm vào trên Vaultwarden, có điều dùng rất hiệu quả, khuyến khích mọi người thêm vào
- Tạo thư mục lưu trữ và tạo file cấu hình
mkdir ./vaultwarden cd ./vaultwarden nano docker-compose.yml
- Nội dung bên trong điền vào
services: vaultwarden: image: vaultwarden/server:latest #image: vaultwarden/server:testing container_name: vaultwarden restart: always environment: - DOMAIN=https://pass.bibica.net - SIGNUPS_ALLOWED=true - WEB_VAULT_ENABLED=true - INCOMPLETE_2FA_TIME_LIMIT=1 - REQUIRE_DEVICE_EMAIL=true - IP_HEADER=X-Forwarded-For - PUSH_ENABLED=true - PUSH_INSTALLATION_ID=0000000-0000-0000-0000-0000 - PUSH_INSTALLATION_KEY=xxxxxxxxxxxxxxx - TZ=Asia/Ho_Chi_Minh - SMTP_HOST=smtp.mailgun.org - SMTP_FROM=xxxxx@xxx.com - SMTP_FROM_NAME=[BIBICA.NET] - SMTP_PORT=587 - SMTP_SECURITY=starttls - SMTP_USERNAME=xxxxx@xxx.com - SMTP_PASSWORD=xxxxxxxxxxxxx #- EXPERIMENTAL_CLIENT_FEATURE_FLAGS=autofill-overlay,autofill-v2,browser-fileless-import,fido2-vault-credentials ports: - '1254:80' volumes: - ./data:/data
Các dòng highlight sửa lại theo thông số của bạn tạo ra ở bước 1 và 2
Thay thế giá trị DOMAIN
bằng domain bạn muốn sử dụng
- Có thể thêm các environment để cấu hình bật, tắt các tùy chọn khác theo sở thích, trong trường hợp có commits mới bổ xung, sửa lỗi, thêm tính năng, bạn cần mà bản Releases chưa ra mắt, có thể sử dụng
image: vaultwarden/server:testing
(mặc định image này luôn là commits mới nhất), mình để sẵn vào file cấu hình, bạn chỉ cần bỏ dấu#
đằng trước nếu dùng là được - Các phiên bản releases mới nhất, theo mình đã đủ dùng cho phần lớn các nhu cầu hàng ngày, mình dùng khoảng 3-4 tháng vừa qua thì đều không gặp vấn đề gì cả
Điều chỉnh xong thì Ctrl+O -> Enter -> Ctrl+X để save và exit.
- Khởi tạo docker
docker compose up -d --build --remove-orphans --force-recreate
Cấu Hình Cloudflare Tunnels
Tạo tài khoản Cloudflare Zero Trust -> Networks -> Tunnels -> Create a tunnel -> Select Cloudflared -> Next -> Name your tunnel, đặt 1 tên cho dễ nhớ (Vaultwarden chẳng hạn) -> Install and run a connector
Sau đó tạo Public hostnames pass.bibica.net
tới localhost:1254
Lúc này bạn có thể truy cập vào subdomain pass.bibica.net
để tạo tài khoản và login vào sử dụng
- Để tăng tính bảo mật cho tài khoản Vaultwarden, có thể tham khảo bài viết này
- Quản lý client trên Windows, iOS, Andoird … thì có thể tham khảo bài viết này
2 bài này mình viết chuyên sâu hơn 1 chút, nếu bạn lười thì đọc thì cứ dùng như mặc định cũng đủ rồi
Bảo mật cấu hình Vaultwarden
Sau khi tạo tài khoản, cấu hình xong xuôi tất cả mọi thứ, có thể làm thêm bước này
- Tắt đăng kí thành viên mới
nano /root/vaultwarden/docker-compose.yml
Dòng SIGNUPS_ALLOWED
, sửa lại true
thành false
- SIGNUPS_ALLOWED=false
- Tắt giao diện web
Dòng WEB_VAULT_ENABLED
, sửa lại true
thành false
- WEB_VAULT_ENABLED=false
- Cập nhập lại docker để thay đổi có hiệu lực
cd vaultwarden docker compose up -d --build --remove-orphans --force-recreate
Bảo mật cho VPS chạy Vaultwarden
Mặc định sử dụng Cloudflare Tunnels đã tương đương cho việc dùng Tailscale (WireGuard) và Caddy để bảo mật hệ thống và tạo SSL rồi, ở cấp độ người dùng thổ thông đã rất hiệu quả rồi
Nếu lo xa, bạn có thể tăng thêm 1 chút bảo bật cho server này
- Bật firewall từ Oracle, chặn tất cả mọi thứ, chỉ mở duy nhất port 443 cho kết nối vào (lúc này là VPS sẽ cứng ngắc, tới bạn cũng không vào được VPS qua SSH thông thường luôn nhé)
- Bật firewall từ Cloudflare, chặn IP từ tất cả các quốc gia, trừ Việt Nam
Điền các giá trị như hình, thay pass.bibica.net
bằng domain của bạn
- Bypass IP ORACLE
Có thể kiểm ra log chặn, nếu thấy nó chặn nhầm IP nào của Oracle hoặc của bạn, thì có thể bypass IP này, cho nó đi qua
Giải pháp tối ưu nhất để bảo mật cho Vaultwarden theo mình là sử dụng mTLS, mỗi thiết bị của bạn sẽ cài thêm chứng chỉ máy khách từ Cloudflare, ai có chứng chí này thì mới truy cập được vào server của Vaultwarden, nó rất gần với chuyện quản lý theo MAC address trên các thiết bị ở mạng LAN
Khá tiếc là khi mình thử, trên Windows chạy tốt, Edge, Chrome, Firefox nhận chứng chỉ bình thường, mà trên iOS cài chứng chỉ vào nó …. không chịu nhận, ngáo ngáo sao đó
Phần về mTLS thì sau này Vaultwarden, Bitwarden có hỗ trợ hoặc mình tìm ra giải pháp khác thì sẽ cập nhập sau, tạm thì bạn cứ dùng theo như cấu hình trên cũng đủ rồi
Backup và restore
Oracle miễn phí có uptime cực tốt, thường ở mức 99.999% cho tới 100%, nên cũng không cần quá lo lắng về vấn đề backup hằng ngày, mình do dùng miễn phí, không chắc lúc nào Oracle thu lại tài nguyên, hoặc tệ hơn là xóa tài khoản, nên mới cấu hình để nó backup liên tục sẵn
Bạn có thể bỏ qua phần này, không cần làm để đỡ mất thời gian, backup thủ công thì thỉnh thoảng vào VPS download thư mục /root/vaultwarden
, lười hơn nữa thì chỉ cần vào web download các password cũng được
Ban đầu mình dùng Rclone lưu trữ các backup trên Google Drive, mà sau khi chạy trên đủ các loại VPS, thấy thi thoảng gặp thông báo kiểu Google API hết tài nguyên hay gì đó, không chấp nhận tải lên, vài tiếng sau thì chạy lại bình thường, khá lằng nhằng, nên đổi sang dùng Cloudflare R2 để lưu backup, cấu hình cũng đơn giản hơn, và kể cả bạn có upload cường độ cao nhất, 1 phút upload 1-2 bản backup, vẫn thừa tài nguyên Cloudflare R2 miễn phí
Backup
- Tạo 1 file bash để backup tương tự như sau
nano /root/vaultwarden/backup.sh
- Bên trong điền vào
tar -cvf vaultwarden.tar /root/vaultwarden rclone copy vaultwarden.tar cloudflare-r2:cdn-bibica-net/_vaultwarden_xxx --progress mv vaultwarden.tar vaultwarden_$(/bin/date +%d.%m.%Y).tar rclone copy vaultwarden_$(/bin/date +%d.%m.%Y).tar cloudflare-r2:cdn-bibica-net/_vaultwarden_xxx --progress rclone delete cloudflare-r2:cdn-bibica-net/_vaultwarden_xxx --min-age 31d --progress rm vaultwarden_$(/bin/date +%d.%m.%Y).tar
- Thay
cdn-bibica-net
bằng tên bucket của bạn _vaultwarden_xxx
là tên 1 thư mục tùy ý
Để an toàn cho dữ liệu, thì mình sẽ tạo 2 bản
vaultwarden.tar
bản mới nhất theo theo thời gian thựcvaultwarden_$(/bin/date +%d.%m.%Y).tar
bản theo ngày (lưu 31 bản cho 31 ngày gần nhất)
Ban đầu mình nghĩ lưu trữ 1 bản mới nhất là đủ, nhưng sau nghĩ lại thấy đôi lúc có thể vì nhiều nguyên nhân khách quan, bạn cần các bản backup cũ, thêm vào cho an tâm
Ctrl+O -> Enter -> Ctrl+X để save và exit
- Phân quyền
chmod +x /root/vaultwarden/backup.sh
- Tạo cron để tự chạy 1 phút 1 lần
crontab -l > vaultwarden_cron echo "* * * * * /root/vaultwarden/backup.sh" >> vaultwarden_cron crontab vaultwarden_cron
Các bước backup cơ bản là như thế, 1 phút cập nhập 1 lần theo mình cũng đủ tốt, xác xuất bạn vừa sửa lại password, rồi dùng cái VPS lăn quay ra chết hiếm lắm =))
Restore
Muốn restore trên VPS mới, thì các bước như sau
- Cài đặt docker tương tự như ban đầu
Copy cấu hình cũ Rclone
- Thường mình hay chép file cấu hình này ở 1 URL nào đó, sau đó wget thẳng vào VPS mới, hoặc cẩn thận hơn, có thể down file cấu hình Rclone về máy, sau đó load trực tiếp lên VPS mới, theo đường dẫn
/root/.config/rclone/rclone.conf
sudo wget https://bibica.net/rclone.conf -O /root/.config/rclone/rclone.conf
- Copy bản backup từ Cloudflare R2 xuống
rclone copyto cloudflare-r2:cdn-bibica-net/_vaultwarden_xxx vaultwarden.tar --progress
- Giải nén file backup
tar -xvf vaultwarden.tar
- Điều chỉnh lại đường dẫn cho phù hợp
mv /root/root/* /root rm -r /root/root
- Cài đặt lại Vaultwarden
cd vaultwarden docker-compose up -d --build --remove-orphans --force-recreate
- Cấu hình lại cron
chmod +x /root/vaultwarden/backup.sh crontab -l > vaultwarden_cron echo "* * * * * /root/vaultwarden/backup.sh" >> vaultwarden_cron crontab vaultwarden_cron
- Cấu hình lại Cloudflare Tunnels
- Xóa DNS records cũ
pass.bibica.net
trên Cloudflare - Xóa Tunnels cũ
pass.bibica.net
trên Cloudflare - Tạo Tunnels mới trên VPS mới
Trừ bước cuối cùng, phải login vào Cloudflare setup thủ công, các công đoạn còn lại của restore, có thể gom toàn bộ vào 1 file bash, sau này chuyển VPS mới chỉ cần chạy 1 lệnh là xong
Mình có thử restore lại trên VPS mới, tài khoản đã login trên nhiều thiết bị cũ hoạt động bình thường, không cần login lại, đồng bộ bình thường 🤗
Nâng cấp
Với ứng dụng quản lý mật khẩu tự quản lý như Vaultwarden, vấn đề bảo mật cần đặc biệt quan tâm, nhớ theo dõi, khi có bản mới, nếu có sửa các lỗi liên quan tới bảo mật, cần nâng cấp, cập nhập lên sớm, tránh các rủi ro có thể xảy ra
Để kiểm tra chính xác phiên bản đang sử dụng, có thể chạy lệnh bên dưới
docker exec -it vaultwarden /vaultwarden --version
Kiểm tra các release mới nhất tại đây, nếu đang sử dụng phiên bản hơi cũ, có thể nâng cấp phiên bản mới hơn
cd vaultwarden/ docker compose pull && docker compose up -d
Trong trường hợp bản mới có khi phát sinh lỗi, có thể quay lại bản cũ, bằng cách sửa lại chính xác phiên bản muốn dùng trong file docker-compose.yml
image: vaultwarden/server:latest
sửa lại thành image: vaultwarden/server:1.30.1
chẳng hạn
Hoạt động
Vaultwarden thực sự nhẹ, khi hoạt động sử dụng CPU, RAM, HDD rất ít, gần như không đáng quan tâm, mình có thử vài tool self-hosted password khác, khi import password vào thì thấy nó cào CPU khiếp lắm
Tổng VPS sau khi cài đặt như trong bài, thì nó sẽ na ná như sau
Chạy khoảng 270 ngày, tình trạng VPS cơ bản như sau
Bản thân Vaultwarden không làm gì cả, mọi thứ liên quan tới encrypted, decrypted đều là máy khách xử lý, Vaultwarden chỉ thuần túy trung gian, lưu trữ và chuyển các thông tin đã được mã hóa sang nhiều thiết bị khác nhau
Khi bạn login vào 1 thiết bị mới hoàn toàn, nó sẽ download toàn bộ database xuống, decrypted thông qua master password, sau đó đọc trực tiếp từ từ các thiết bị này, không kết nối tới server nữa, chỉ khi nào bạn tạo mới, cập nhập các tài khoản, dữ liệu mới gửi lên server, để tự đồng bộ sang tất cả thiết bị khác
- Trong trường hợp sử dụng thực tế, vì lý do nào đó, VPS của bạn sập do downtime …. cũng rất ít ảnh hưởng tới Vaultwarden, vì xác xuất bạn đang dùng, cập nhập hay tạo mới tài khoản, mà ngay thời điểm đó VPS gặp lỗi, cũng khá hiếm xảy ra
- Khi không đồng bộ được thì dữ liệu cũng được lưu lại trên thiết bị, chứ không bị mất đi, khi nào có mạng lại thì nó sẽ tự đồng bộ
Sau 1 thời gian sử dụng Vaultwarden, mình thích hơn so với bản server gốc Bitwarden chính thức, các tùy chỉnh nhỏ rất tuyệt, cụ thể nhất là từ phiên bản 2023.12.1, Bitwarden ra mắt tính năng inline auto-fill menu, dù khi dùng tính năng này, không tự copy được code 2FA nhưng hoạt động cơ bản khá tốt, mỗi cái trên 1 số trang mình đang dùng, vài form nó gây lỗi, password điền vào cái nó tự bị tắt đi
Trên Vaultwarden, để tránh các lỗi do tính năng quá mới này,mặc định sẽ tắt đi tính năng autofill-v2
, nhưng họ làm thêm tùy chọn nhỏ, để nếu thích, bạn có thể chọn bật / tắt các lựa chọn này EXPERIMENTAL_CLIENT_FEATURE_FLAGS=autofill-overlay,autofill-v2,browser-fileless-import,fido2-vault-credentials
Trên Bitwarden chính thức, phiên bản mới nhất v2024.1.2, mình vẫn gặp lỗi liên quan tới inline auto-fill, kể cả bạn có tắt hết các tính năng liên quan tới inline auto-fill bên trong client setting, khi chạy nó vẫn lỗi, trên Vaultwarden do có thể ngắt hoàn toàn option này, khi chạy không bị lỗi
Tất nhiên, lý do chính là Vaultwarden viết trên quan điểm 1 user, gia đình, nhóm nhỏ 5-10 sử dụng, thích làm gì thì tự sửa, Bitwarden viết để phục vụ cho cả trăm ngàn hay cả triệu người cùng dùng, phải tùy chỉnh rất nhiều thứ khác … chọn lựa bản server chính thức từ Bitwarden hay dùng bản server của Vaultwarden thì tùy nhu cầu sử dụng mỗi người
Mình cũng có ý định dùng bản Bitwarden chính thức, để luôn được cập nhập tất cả tính năng mới nhất, mà dùng thử thấy không hiệu quả lắm, ngoài chuyện nó ăn phần cứng khủng bố, các tinh chỉnh cũng rất khó khăn, vì các hướng dẫn chính thức từ hãng khá thiếu, chạy gặp vấn đề không biết sử lý làm sao luôn, theo mình dùng cá nhân thì Vaultwarden tổng thể hiệu quả hơn
Thời gian các bản release chính thức của Vaultwarden thì đôi khi ra hơi chậm, nhưng nếu so với Bitwarden self hosted thì nó còn nhiều tính năng hơn, thậm chí phiên bản testing của Vaultwarden, chỉ chậm 1 chút so với bản Bitwarden chính thức, họ cũng đã cập nhập lên v2024.1.2
Tổng kết
Vaultwarden chỉ thay thế phiên bản server của Bitwarden, bản thân nó chỉ lưu các thông tin đã mã hóa, vì kể cả bạn có bị hack VPS, mất database, cũng rất khó ai đó có thể biết được password của bạn, thực tế chuyện Vaultwarden có hơn 30.000 sao trên Github cũng đủ nói lên chất lượng tuyệt vời của sản phẩm này
Password của bạn sẽ nằm trong các app, plugin phía client, các bản client này do Bitwarden viết ra, bản thân Bitwarden mã hóa rất mạnh tất cả các thông tin này, mạnh tới mức chính Bitwarden cũng không thể giải mã nổi, về mặt lý thuyết, bạn dùng phiên bản server từ Vaultwarden, client từ Bitwarden đều rất an toàn
2 sản phẩm này đều công khai code trên github, có thể khẳng định Vaultwarden hay Bitwarden không can thiệp vào dữ liệu của bạn, chưa kể dữ liệu này lại do chính bạn quản lý và lưu trữ, tính riêng tư cũng sẽ tốt hơn
Thực tế có khá nhiều người, dùng miễn phí Vaultwarden và Bitwarden nhưng đăng kí gói premium, hoặc donate thẳng cho tác giả Vaultwarden để ủng hộ 2 dịch vụ này
Trong thời gian sử dụng Bitwarden thì mình có lượn lờ reddit, gặp 1 tình huống khá khó đánh giá là tốt hay xấu, cũng không chắc có thể liệt nó vào dạng lỗi bảo mật hay không? Nó không liên quan tới bản Vaultwarden ở bài này, mà nó lại liên quan tới bản client trên máy khách của Bitwarden
Bài đó mình đọc loáng thoáng, nên không nhớ rõ chi tiết lắm (sau khi lục lại thì chi tiết cụ thể tại đây), đại khái 1 thành viên đổi lại Master Password, vì lý do nào đó, khi họ nhập lại password thì báo sai, mà nếu không có Master Password thì bạn không thể export password ra được
Thế là anh ấy viết 1 script nhỏ, để đục thẳng vào addon trên trình duyệt, tự xuất tất cả password ra thành công luôn
Dễ hình dung thì nếu máy bạn đang cài Bitwarden trên trình duyệt, đang ở chế độ mở khóa (mà mặc định ông nào dùng chẳng để mở khóa) nếu ai có thể ngồi vào thiết bị của bạn (hoặc cài keylogger chẳng hạn), thì chỉ cần 3-5s, họ đã có thể lấy tất cả password hoàn chỉnh được lưu trữ trên client Bitwarden
Mấy thanh niên cứ hay gáy bẩn trình duyệt lưu trữ password không an toàn, mà Bitwarden cũng thế còn gì
Ban đầu mình tính dùng Bitwarden self hosted chính thức từ hãng, để luôn được cập nhập mới nhất, không phải lệ thuộc vào bên thứ 3 như Vaultwarden, mà sau khi dùng, cảm giác đúng là không hiệu quả, Bitwarden self hosted ngoài chuyện rất nặng, các tùy biến tinh chỉnh gần như không có, nhiều lỗi vặt vặt chẳng hiểu từ đâu ra …. rất không đáng dùng
Vaultwarden vẫn là chân ái nếu bạn muốn tự chạy Bitwarden self hosted 🍺
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!