Hướng Dẫn Triển Khai Vaultwarden Trên Nanocl
Bạn đã bao giờ lo lắng về việc quản lý mật khẩu của mình chưa? Hôm nay, chúng ta sẽ cùng nhau triển khai Vaultwarden trên Nanocl để bạn có thể kiểm soát mật khẩu của mình một cách an toàn và hiệu quả.
Giới Thiệu Về Vaultwarden
Vaultwarden là một giải pháp quản lý mật khẩu mã nguồn mở, là lựa chọn nhẹ cho Bitwarden. Nó được thiết kế để tự lưu trữ và cung cấp một cách an toàn để lưu trữ và quản lý mật khẩu, ghi chú và các thông tin nhạy cảm khác. Được xây dựng bằng ngôn ngữ Rust, Vaultwarden cung cấp giao diện web và tương thích với các tiện ích mở rộng và ứng dụng của Bitwarden.
Giới Thiệu Về Nanocl
Nanocl là một nền tảng quản lý container giúp bạn dễ dàng quản lý và triển khai các ứng dụng được container hóa. Nó cung cấp một cách hiệu quả để chạy các container trên hạ tầng của bạn, giúp việc quản lý và mở rộng các ứng dụng trở nên dễ dàng hơn.
Các Yêu Cầu Trước Khi Triển Khai
Trước khi bắt đầu, hãy đảm bảo rằng bạn đã chuẩn bị những yêu cầu sau:
Docker
Hãy làm theo hướng dẫn cài đặt Docker chính thức cho hệ điều hành Linux của bạn. Quá trình cài đặt rất nhanh và dễ dàng!
Nanocl
Tải xuống và cài đặt nhị phân CLI của Nanocl bằng lệnh sau:
bash
curl -fsSL https://download.next-hat.com/scripts/get-nanocl.sh | sh
Tiếp theo, hãy tạo một nhóm Nanocl và cài đặt các dịch vụ nội bộ của Nanocl:
bash
sudo groupadd nanocl
sudo usermod -aG nanocl $USER
newgrp nanocl
nanocl install
Để biết thêm thông tin, hãy tham khảo tài liệu của Nanocl.
Triển Khai Vaultwarden
Vì Vaultwarden sử dụng một ngữ cảnh bảo mật cho Web Crypto API, nên rất khuyến khích bạn sử dụng mã hóa SSL/TLS. Bạn có thể sử dụng chứng chỉ tự ký hoặc lấy một chứng chỉ từ một Cơ Quan Chứng Thực (CA) đáng tin cậy như Let's Encrypt. Trong hướng dẫn này, chúng ta sẽ sử dụng chứng chỉ tự ký.
Tạo Chứng Chỉ SSL Tự Ký (Cơ Bản)
Bạn có thể tạo một chứng chỉ SSL tự ký cơ bản cho miền của bạn bằng cách sử dụng file Statefile openssl-self-signed.yml đã sẵn sàng từ kho Nanocl. Thay thế <your-domain> bằng miền mà bạn muốn lưu trữ Vaultwarden.
bash
nanocl state apply -fs nr.next-hat.com/v0.17/openssl-self-signed.yml -- --domain <your-domain>
Lệnh này sẽ tạo một chứng chỉ SSL tự ký và lưu trữ nó dưới dạng một bí mật của Nanocl có tên tls.<your-domain>.
Tạo Chứng Chỉ SSL Tự Ký (Nâng Cao)
Nếu bạn muốn sử dụng ứng dụng desktop và ứng dụng Android/iOS, bạn cần một chứng chỉ tự ký được hệ điều hành của bạn tin cậy. Bạn có thể làm điều này bằng cách tạo một Cơ Quan Chứng Thực (CA) riêng và sau đó cấp một chứng chỉ cho miền của bạn được ký bởi CA đó. Sau đó, hãy nhập chứng chỉ CA vào kho tin cậy của hệ điều hành của bạn.
bash
# Tạo khóa riêng cho CA (4096-bit là tốt cho CA)
openssl genrsa -out myCA.key 4096
# Tạo chứng chỉ gốc tự ký (có hiệu lực 10 năm ở đây)
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 3650 \
-out myCA.pem -subj "/CN=Vaultwarden CA"
# Tạo khóa riêng cho máy chủ và yêu cầu ký chứng chỉ (2048-bit là tiêu chuẩn)
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/CN=<your-domain>"
# Tạo file cấu hình cho mở rộng SAN
echo """
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = <your-domain>
IP.1 = <your-ip-address>
""" > san.cnf
# Ký chứng chỉ máy chủ bằng CA (có hiệu lực 825 ngày ở đây)
openssl x509 -req -in server.csr -CA myCA.pem -CAkey myCA.key \
-CAcreateserial -out server.crt -days 825 -sha256 \
-extfile san.cnf -extensions v3_req
# Chuyển đổi sang định dạng DER cho các trình duyệt và kho tin cậy của OS
openssl x509 -outform der -in myCA.pem -out myCA.der
Tiếp theo, hãy tạo một bí mật Nanocl để lưu trữ chứng chỉ và khóa để sử dụng với proxy:
bash
nanocl secret create tls.<your-domain> tls --certificate-path ./server.crt --certificate-key-path ./server.key
Sau đó, nhập file myCA.der vào kho tin cậy của hệ điều hành của bạn.
Lưu ý: Chỉ nhập một CA riêng mà bạn hoàn toàn kiểm soát. Tin tưởng một CA có nghĩa là nó có quyền ký bất kỳ chứng chỉ nào cho hệ thống của bạn.
Áp Dụng Statefile Vaultwarden
Bây giờ bạn có thể triển khai Vaultwarden bằng cách sử dụng Statefile vaultwarden.yml từ kho Nanocl. Thay thế <your-domain> bằng miền của bạn và <your-network> bằng mạng Nanocl mà bạn muốn kết nối container (mặc định là All). Bạn có thể xem các tùy chọn có sẵn trong tài liệu Nanocl cho quy tắc proxy.
Hành vi mạng:
All: Gắn proxy vào tất cả các địa chỉ IP có sẵn trên máy chủ (có thể truy cập công khai nếu các cổng được mở).Internal: Chỉ gắn vào cổng nội bộ của Nanocl; dịch vụ chỉ có thể truy cập qua VPN mà bạn đã cấu hình (ví dụ: WireGuard).
bash
nanocl state apply -s nr.next-hat.com/v0.17/vaultwarden.yml -- --domain <your-domain> --secret-cert tls.<your-domain>
Nếu bạn muốn lưu trữ dữ liệu Vaultwarden ở một đường dẫn cụ thể trên máy chủ của mình, bạn có thể sử dụng tham số --data-path để chỉ định đường dẫn (mặc định là /opt/containers/vaultwarden).
bash
nanocl state apply -s nr.next-hat.com/v0.17/vaultwarden.yml -- --domain <your-domain> --secret-cert tls.<your-domain> --data-path /path/to/your/data
Một cách tổng quát hơn, bạn có thể xem tất cả các tham số có sẵn bằng cách chạy:
bash
anocl state man -s nr.next-hat.com/v0.17/vaultwarden.yml
Nếu bạn đã theo dõi blog trước đó về cách triển khai WireGuard trên Nanocl,
bạn có thể sử dụng tham số --network Internal để chỉ cho Vaultwarden có thể truy cập từ VPN WireGuard của bạn.
bash
nanocl state apply -s nr.next-hat.com/v0.17/vaultwarden.yml -- --domain <your-domain> --secret-cert tls.<your-domain> --network Internal
Và đó là tất cả! Bạn đã triển khai thành công Vaultwarden trên Nanocl.
Truy Cập Vaultwarden
Nếu bạn triển khai trên một miền công khai, hãy truy cập nó tại https://<your-domain> trong trình duyệt của bạn. Nếu bạn triển khai cục bộ, hãy thêm dòng này vào file /etc/hosts của bạn:
bash
127.0.0.1 <your-domain>
Sau đó, hãy điều hướng đến https://<your-domain> trong trình duyệt web của bạn.
Bạn có thể thấy một cảnh báo SSL nếu bạn đã sử dụng chứng chỉ tự ký cơ bản. Nếu bạn đã nhập CA riêng của mình, hãy khởi động lại trình duyệt để kho tin cậy được tải lại. Tiến hành tạo một tài khoản để đăng nhập.
Tiếp theo, tải xuống ứng dụng Bitwarden hoặc tiện ích mở rộng trình duyệt từ liên kết này và kết nối với phiên bản Vaultwarden tự lưu trữ của bạn. Chọn tùy chọn "Tự lưu trữ" và nhập miền của bạn.
Các Bước Tiếp Theo
Để tăng cường bảo mật và vận hành triển khai của bạn:
- Cấu hình sao lưu định kỳ ngoài máy chủ cho thư mục dữ liệu bằng cách sử dụng công việc định kỳ của Nanocl.
- Theo dõi nhật ký container định kỳ để phát hiện các cố gắng đăng nhập thất bại.
- Giữ cho hình ảnh của Nanocl và Vaultwarden luôn được cập nhật (kéo và áp dụng trạng thái định kỳ).
Kết Luận
Bạn đã triển khai Vaultwarden trên Nanocl với TLS bằng chứng chỉ tự ký nhanh chóng hoặc CA đáng tin cậy cục bộ. Cài đặt này giúp bạn giữ quyền kiểm soát đối với thông tin đăng nhập của mình trong khi vẫn tương thích với các khách hàng Bitwarden chính thức.