Hướng dẫn triển khai Vaultwarden lên Fly.io tận dụng gói miễn phí
Hướng dẫn triển khai Vaultwarden lên Fly.io tận dụng gói miễn phí - giải pháp quản lý mật khẩu self-hosted với chi phí gần như bằng 0
Nếu bạn đang tìm kiếm một giải pháp quản lý mật khẩu tự lưu trữ (self-hosted) vừa an toàn, nhẹ nhàng lại vừa có chi phí mức 0 đồng, thì Vaultwarden và Fly.io chính là giải pháp hoàn hảo.

Mình đã triển khai và chạy thử được hơn 1 năm, chưa bị downtime lần nào, chi phí hàng tháng dưới 1$.
Kiến trúc
Setup của mình khá đơn giản:
Bitwarden App / Browser Extension
↓
Fly.io Instance
↓
Vaultwarden
↓
SQLite Database
Cấu hình Fly.io: RAM-256MB, Volume-1GB, ServerLocation-Singapore
1. Cài đặt Fly CLI
Trước tiên cần tạo account Fly.io:
Sau đó cài Fly CLI:
curl -L https://fly.io/install.sh | sh
Login:
fly auth login
2. Khởi Tạo App
Tạo thư mục mới:
mkdir vaultwarden
cd vaultwarden
Khởi tạo app:
fly launch
Fly sẽ hỏi:
- App name
- Region
- Organization
Sau khi hoàn tất sẽ tạo file:
fly.toml
3. Cấu hình Vaultwarden
Sửa file fly.toml:
app = 'vault-yourname'
primary_region = 'sin'
[http_service]
internal_port = 80
force_https = true
auto_stop_machines = 'stop'
auto_start_machines = true
min_machines_running = 0
processes = ['app']
[env]
TZ = "Asia/Ho_Chi_Minh"
SIGNUPS_ALLOWED = "false"
DOMAIN = "https://vault.whitehouse.com" # Nếu có domain riêng
SMTP_HOST = "smtp.gmail.com"
SMTP_PORT = "465"
SMTP_SECURITY = "force_tls"
SMTP_USERNAME = "username@gmail.com"
SMTP_FROM = "username@gmail.com"
[build]
image = "vaultwarden/server:latest"
[mounts]
source = "vw_data"
destination = "/data"
[[vm]]
memory = '256mb'
cpu_kind = 'shared'
cpus = 1
4. Tạo Persistent Volume
Vaultwarden cần lưu database nên phải tạo volume:
fly volumes create vw_data --size 1
Tạo 1GB là đủ cho dùng miễn phí.
5. Deploy
Deploy ứng dụng:
fly deploy
Sau vài phút sẽ có URL dạng:
https://vault-username-id.fly.dev
Nếu mọi thứ đúng, bạn sẽ thấy trang login của Vaultwarden.
6. Kết Nối Với Bitwarden App
Bạn có thể tải và sử dụng qua:
- Browser extension (Google Chrome, Microsoft Edge, Firefox)
- Mobile app (Google Play, Apple Store)
- Desktop app (Windows, Linux)
Chọn:
Self-hosted
Sau đó nhập server URL của bạn.
Ví dụ:
https://vault-username-id.fly.dev
Đã xong.
Sau khi tạo account đầu tiên
Ngay sau khi tạo user đầu tiên, nên tắt signup public:
SIGNUPS_ALLOWED = "false"
Rồi deploy lại:
fly deploy
Điều này giúp giảm attack surface đáng kể.
Custom Domain
Mình không thích dùng domain .fly.dev.
Ví dụ mình muốn:
vault.whitehouse.com
Chỉ cần tạo:
CNAME
vault → my-vaultwarden.fly.dev
Sau đó thêm certificate:
fly certs add vault.whitehouse.com
Fly.io sẽ tự cấp SSL.
Backup
Toàn bộ dữ liệu nằm trong:
/data
Vaultwarden dùng SQLite nên backup rất dễ.
SSH vào container:
fly ssh console
Kiểm tra database:
ls /data
Mình backup bằng:
sqlite3 /data/db.sqlite3 '.backup /data/db.bak'
Sau đó tar lại toàn bộ /data.
Cập nhật Vaultwarden
Chỉ cần vào folder chạy:
fly deploy
Kết luận
Vaultwarden + Fly.io là một trong những setup self-host mình thích nhất.
Với vài lệnh CLI, bạn đã có password manager riêng hoạt động trên internet với HTTPS đầy đủ.
Và thật sự rất khó quay lại sau khi đã quen cảm giác tự kiểm soát toàn bộ dữ liệu của mình.
Tham Khảo
-
Vaultwarden https://github.com/dani-garcia/vaultwarden
-
Fly.io https://fly.io
-
Bitwarden https://bitwarden.com