hoanganh.pro
Senior Member
Thím làm đi, mình biên tập hướng dẫn lại đc màcuối tuần bận quá quên mất, chắc share config cho các thím build luôn docker thôi chứ hướng dẫn chi tiết thì không có thời gian viết![]()

Thím làm đi, mình biên tập hướng dẫn lại đc màcuối tuần bận quá quên mất, chắc share config cho các thím build luôn docker thôi chứ hướng dẫn chi tiết thì không có thời gian viết![]()

thế để tối này dành thời gian ra viết nhéThím làm đi, mình biên tập hướng dẫn lại đc mà![]()

Hướng dẫn gồm 2 phần:
1. Chuẩn bị trước khi cài
2. Cài đặt.
a. Chuẩn bị VPS
b. Cài đặt docker.
c. Cài đặt Nginx Proxy Manager.
d. Cài đặt bitwarden.
e. Config tên miền
c. Trỏ sẵn bản ghi A về IP của VPS đã mua ở trên. Trường hợp dùng Tunnel hoặc phương án khác thì bỏ qua hướng dẫn liên quan đến tên miền nhé.Ở đây em sẽ giới thiệu các nhà cung cấp rẻ location nước ngoài có rating tốt:
$11/year - RackNerd 1GB RAM / 12GB SSD. Mua xong vào đây comment được x2 băng thông.
sudo -i
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
docker compose version
Docker Compose version v2.21.0 # << Hiện version là oke.
docker network create -d bridge npm
- Tạo thư mục lưu configChỗ này trước em có dùng SSL free của cloudflare, nhưng bị trình trạng recaptcha nhiều nên kết nối giữa app và vault không ổn định, thỉnh thoảng không sync được khá phiền, nên trỏ thẳng luôn.
cd /opt/
mkdir docker-compose
cd docker-compose
mkdir nginx
cd nginx
docker-compose.ymlvi docker-compose.yml
version: "3"
services:
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
# Uncomment the next line if you uncomment anything in the section
environment:
# Uncomment this if you want to change the location of
# the SQLite DB file within the container
DB_SQLITE_FILE: "/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
DISABLE_IPV6: 'true'
volumes:
- '/opt/data/nginx/data:/data'
- '/opt/data/nginx/letsencrypt:/etc/letsencrypt'
networks:
- npm
networks:
npm:
external: true
docker compose up -d
#[+] Running 1/1
# ✔ Container nginx-nginx-proxy-manager-1 Started
cd /opt/docker-compose/
mkdir vaultwarden
cd vaultwarden
vi docker-compose.yml
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
DOMAIN: "https://ten-mien-co-https"
ADMIN_TOKEN: "mật khẩu để vào admin vaultwarden. Xoá luôn dòng này nếu như không cần admin"
#LOG_FILE: /data/log/vaultwarden.log
volumes:
- /opt/data/vaultwarden/vw-data:/data
#- /opt/data/vaultwarden/vw-data/log:/data/log
networks:
- npm
networks:
npm:
external: true
Chạy container bằng lệnh:Config environment khá nhiều, có thể tuỳ biến nhiều thứ. Tham khảo các key khác ở đây
docker compose up -d. Không báo lỗi gì là oke.[+] Running 7/7
✔ vaultwarden 6 layers [⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 12.3s
✔ 578acb154839 Pull complete
✔ 66d606b036ee Pull complete
✔ 79193564b982 Pull complete
✔ 9b60180a7faa Pull complete
✔ 12f58a7c9a51 Pull complete
✔ 44ce7cca8234 Pull complete
[+] Running 1/1
✔ Container vaultwarden Started
Vào trong sẽ yêu cầu đổi pass, nhớ ghi pass ra ngoài nhé.email: [email protected]
password: changeme
Toàn bộ dữ liệu của bạn sẽ được lưu tại /opt/data. Config thì lưu tại /opt/docker-compose/. Cần backup 2 khu vực này để khôi phục khi cần thiết.
Tuyệt vời thím. Để em ghim lên #1.Hướng dẫn self-hosted vaultwarden (bitwarden) trên VPS.
1. Chuẩn bị trước khi cài.
a. Tên miền để truy cập vault: Có thể mua 1 cái (rẻ nhất 30k/năm) hoặc đăng ký free (dot.tk).
b. Máy chủ ảo (VPS) cấu hình cỡ 1 core CPU, 1 GB RAM, disk 10GB trở lên cho chắc chắn. Rẻ là được, nhưng phải uy tín và uptime tốt. VPS downtime nhiều có thể ảnh hưởng đến việc sử dụng.
c. Trỏ sẵn bản ghi A về IP của VPS đã mua ở trên. Trường hợp dùng Tunnel hoặc phương án khác thì bỏ qua hướng dẫn liên quan đến tên miền nhé.
2. Cài đặt
a. Chuẩn bị VPS
- Hệ điều hành em sẽ hướng dẫn ở đây là Ubuntu 22. Các thím dùng cùng loại để có câu lệnh đúng nhất.
- Đảm bảo OS là sạch, chưa cài bất kì thứ gì để tránh lỗi. Mọi cài đặt sẽ liên quan đến docker, nên có sẵn docker thì thôi cứ vậy dùng.
b. Cài đặt docker.
- Có nhiều cách cài đặt docker, nhưng em sẽ hướng dẫn cách nhanh và dễ nhất là dùng script có sẵn:
Bash:sudo -i curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
- Kiểm tra xem đã có Docker Compose chưa. Docker Compose sẽ dùng file yml được soạn sẵn để tạo container nhanh gọn
Bash:docker compose version Docker Compose version v2.21.0 # << Hiện version là oke.
Tạo network:
Bash:docker network create -d bridge npm
c. Cài đặt NGINX Proxy Manager.
Cái này nó có nhiều tác dụng, trong trường hợp này sẽ dùng để trỏ tên miền vào đúng vaultwarden và hỗ trợ ký SSL Certificate luôn.
- Tạo thư mục lưu config
Bash:cd /opt/ mkdir docker-compose cd docker-compose mkdir nginx cd nginx
- Tạo filedocker-compose.yml
Paste nội dung sau:Bash:vi docker-compose.yml
Ấn ESC 1 lần, gõ :x và enter để lưu lại file.Bash:version: "3" services: nginx-proxy-manager: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' # Uncomment the next line if you uncomment anything in the section environment: # Uncomment this if you want to change the location of # the SQLite DB file within the container DB_SQLITE_FILE: "/data/database.sqlite" # Uncomment this if IPv6 is not enabled on your host DISABLE_IPV6: 'true' volumes: - '/opt/data/nginx/data:/data' - '/opt/data/nginx/letsencrypt:/etc/letsencrypt' networks: - npm networks: npm: external: true
- Tiếp theo, gõ lệnh để chạy container nginx proxy manager.
Bash:docker compose up -d #[+] Running 1/1 # ✔ Container nginx-nginx-proxy-manager-1 Started
d. Cài đặt vaultwarden.
- Tạo thư mục lưu config và tạo file docker compose.
Bash:cd /opt/docker-compose/ mkdir vaultwarden cd vaultwarden vi docker-compose.yml
Paste:
Bash:version: '3' services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden restart: always environment: DOMAIN: "https://ten-mien-co-https" ADMIN_TOKEN: "mật khẩu để vào admin vaultwarden. Xoá luôn dòng này nếu như không cần admin" #LOG_FILE: /data/log/vaultwarden.log volumes: - /opt/data/vaultwarden/vw-data:/data #- /opt/data/vaultwarden/vw-data/log:/data/log networks: - npm networks: npm: external: true
Chạy container bằng lệnh:docker compose up -d. Không báo lỗi gì là oke.
Bash:[+] Running 7/7 ✔ vaultwarden 6 layers [⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 12.3s ✔ 578acb154839 Pull complete ✔ 66d606b036ee Pull complete ✔ 79193564b982 Pull complete ✔ 9b60180a7faa Pull complete ✔ 12f58a7c9a51 Pull complete ✔ 44ce7cca8234 Pull complete [+] Running 1/1 ✔ Container vaultwarden Started
e. Config tên miền
- Truy cập admin page của Nginx Proxy Manager bằng cách sử dụng: http://ten-mien:81 (không phải https nhé)
Đăng nhập bằng mail pass mặc định:
Vào trong sẽ yêu cầu đổi pass, nhớ ghi pass ra ngoài nhé.
- Tại menu chọn Hosts -> Proxy Hosts. Thêm host như hình. Sau đó lưu lại.
Xem tệp đính kèm 2181550
Xem tệp đính kèm 2181551
Truy cập thử vault bằng tên miền. Hiện như hình là oke. Sau đó có thể tạo user đầu tiên và bắt đầu sử dụng.
Xem tệp đính kèm 2181552
Trong các bài tiếp theo, em sẽ hướng dẫn các thím backup, restore vaultwarden và bảo mật 1 phần VPS + hạn chế bruteforce vault bằng firewall.
fence vào trang quản lí tên miền của mình tạo 1 cái hostname trỏ về IP của vps xong vào nginx proxy manager cấu hình như trên bài viết là đượcThím ntth cho em hỏi ở mục 1. Tên miền để truy cập vault. Nếu em có 1 tên miền rồi, nhưng đang chạy pages free của github. Thì làm sao để em thêm 1 subdomain valut. hoặc .../vault để chạy vault được ạ.
Cảm ơn thím vì bài hướng dẫn rất chi tiết.
Thanks fen, mình vừa tạo 1 CNAME và tên là 'x' trong phần quản lý tên miền, giờ đi tìm mua host nữa!fence vào trang quản lí tên miền của mình tạo 1 cái hostname trỏ về IP của vps xong vào nginx proxy manager cấu hình như trên bài viết là được
trỏ về IPv4 thì A Record, IPv6 thì AAAA record nha fen. K phải CNAME record đâuThanks fen, mình vừa tạo 1 CNAME và tên là 'x' trong phần quản lý tên miền, giờ đi tìm mua host nữa!
A record thì phần tên có đặt là 'x' được ko fen tại thấy mấy mục cũ của nó đang đặt tên là '@'trỏ về IPv4 thì A Record, IPv6 thì AAAA record nha fen. K phải CNAME record đâu![]()
@ => domain hiện tại của fence. Ví dụ abc.com thì @ sẽ lấy là abc.comA record thì phần tên có đặt là 'x' được ko fen tại thấy mấy mục cũ của nó đang đặt tên là '@'
Xem tệp đính kèm 2181718
được thím. Nếu đã có tên miền thì mình có thể dùng subdomain cho vault cho tiết kiệm. Ví dụ như vault.ten-mien.com, hoặc x.ten-mien.com tuỳ thím.A record thì phần tên có đặt là 'x' được ko fen tại thấy mấy mục cũ của nó đang đặt tên là '@'
Xem tệp đính kèm 2181718
được thím. Nếu đã có tên miền thì mình có thể dùng subdomain cho vault cho tiết kiệm. Ví dụ như vault.ten-mien.com, hoặc x.ten-mien.com tuỳ thím.
Trong giao diện trên nếu thím trỏ A với name là x thì sẽ truy cập là x.ten-mien.com
Em vào nginx thím ạ! Để e mò thêm xem sao!trang admin của nginx hay của vault, port 81 là để vào trang quản lý của nginx thôi nhé.
bỏ https thay bằng http thôi nhé. Hoặc ip:81
Đúng rồi thím. Mặc định một số nhà cung cấp chưa có cài firewall, em sẽ bố trí viết sơ qua về phần này sớm.Mà dùng vps nên bật ufw lên để giới hạn port truy cập nhé, ko thì nó ddos ip con vps đến chết đó
sudo -i
docker ps
#e5872904eb92 vaultwarden/server:latest "/start.sh" 3 months ago Up 2 months (healthy) 80/tcp, 3012/tcp vaultwarden-vaultwarden-1
#7f14a3d8b7bd jc21/nginx-proxy-manager:latest "/init" 3 months ago Up 14 hours 0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx-nginx-proxy-manager-1
docker exec -it 7f14a3d8b7bd sh
curl http://vaultwarden:80