Bạn đang dùng trình duyệt đã lỗi thời. Trình duyệt có thể không hiển thị đúng trang web này hoặc các trang web khác. Bạn nên nâng cấp hoặc dùng một trình duyệt khác.
kiến thứcHướng dẫn selfhost Bitwarden miễn phí bằng Fly.io
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 file docker-compose.yml
Bash:
vi docker-compose.yml
Paste nội dung sau:
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
Ấn ESC 1 lần, gõ :x và enter để lưu lại file.
- 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.
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:
Đú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.
@hoanganh.pro thay tên miền là được thím. Nhớ sang bên kia chỉnh cả SSL nữa.
Trường hợp vẫn Internal Error thì thím check giúp em lệnh này xem ra cái gì nhé:
Bash:
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
Lúc này sẽ hiển thị ra id container của nginx và vaultwarden. Bác lấy id của nginx container, cụ thể ở đây là 7f14a3d8b7bd.
Tiếp theo dùng lệnh này để vào container của nó:
Bash:
docker exec -it 7f14a3d8b7bd sh
curl http://vaultwarden:80
Nếu nó hiển thị HTML có chữ "Vaultwarden Web Vault" như này thì là vault đã chạy rồi này. Lúc này vấn đề ở con nginx chưa trỏ đúng host thôiXem tệp đính kèm 2181946
Nếu sài docker thì mặc định nó sẽ override các thiết lập của iptables nên việc bật ufw cũng k có tác dụng lắm khi sài docker. Nêu nếu như bài viết là cài docker dưới quyền root thì nên sài thêm script
Em vừa check thì link VPS 11$ đã bỏ (chắc qua 11.11) hiện tại còn loại rẻ nhất là 10.18$, nhưng với cấu hình này (768MB RAM) thì chạy Vault trên Ubuntu 22 có ổn ko ạ?
Em vừa check thì link VPS 11$ đã bỏ (chắc qua 11.11) hiện tại còn loại rẻ nhất là 10.18$, nhưng với cấu hình này (768MB RAM) thì chạy Vault trên Ubuntu 22 có ổn ko ạ? Xem tệp đính kèm 2182530
Nếu sài docker thì mặc định nó sẽ override các thiết lập của iptables nên việc bật ufw cũng k có tác dụng lắm khi sài docker. Nêu nếu như bài viết là cài docker dưới quyền root thì nên sài thêm script
Theo bài hướng dẫn của thím @ntth và sự giúp đỡ của các thím mình đã vận dụng và Self-Hosted thành công VaultWarden với Máy ảo EC2 trên AWS Cloud. Tổng thiệt hại 22k:
1. Tên miền *.click mua 22k
2. Máy ảo EC2 trên AWS - Free 750h/12 tháng (các bạn nên lưu ý đọc chính sách của AWS)
--- Các bước chính:
1. Link đăng ký AWS: Cloud Computing Services - Amazon Web Services (AWS) (https://aws.amazon.com)
2. Link tải PowerShell7: https://hoangtuan.net/s/31
3. Cài đặt Giao diện dòng lệnh AWS (AWS CLI): https://hoangtuan.net/s/32
4. Mở PowerShell và gõ các dòng lệnh:
- Kết nối với máy chủ:
Trong đó:
"C....key1.pem" - Là đường dẫn file key của bạn đã lưu.
ec2....amazonaws.com là địa chỉ tên miền web của bạn copy trong EC2
InstancesAre you sure you want to continue connecting (yes/no/[fingerprint])? yes....
Hướng dẫn self-hosted vaultwarden (bitwarden) trên VPS.
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 file docker-compose.yml
Bash:
vi docker-compose.yml
Paste nội dung sau:
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
Ấn ESC 1 lần, gõ :x và enter để lưu lại file.
- 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.
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
Nhớ tick vào "Websockets Support" nhé các thím. 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.
Theo bài hướng dẫn của thím @ntth và sự giúp đỡ của các thím mình đã vận dụng và Self-Hosted thành công VaultWarden với Máy ảo EC2 trên AWS Cloud. Tổng thiệt hại 22k:
1. Tên miền *.click mua 22k
2. Máy ảo EC2 trên AWS - Free năm đầu (năm sau đăng ký/ hoặc tính sau)
--- Các bước chính:
1. Link đăng ký AWS: Cloud Computing Services - Amazon Web Services (AWS) (https://aws.amazon.com)
2. Link tải PowerShell7: https://hoangtuan.net/s/31
3. Cài đặt Giao diện dòng lệnh AWS (AWS CLI): https://hoangtuan.net/s/32
4. Mở PowerShell và gõ các dòng lệnh:
- Kết nối với máy chủ: