Vaultwarden adalah server kata sandi yang ringan dan kompatibel dengan Bitwarden. Anda memakai aplikasi dan ekstensi browser Bitwarden yang biasa, tetapi vault Anda berada di server yang Anda kendalikan. Penggunaan memorinya sangat kecil, jadi VPS kecil sudah cukup. Karena server ini menyimpan kata sandi Anda, siapkan dengan hati-hati.
Sebelum memulai
- VPS dengan Docker. Lihat menginstal Docker.
- Domain yang mengarah ke server. Lihat penjelasan record DNS.
- Rencana untuk mencadangkan data. Lihat cadangan VPS.
Latar belakang lebih lengkap ada di halaman Vaultwarden self-hosted kami.
Langkah 1: file Docker Compose
mkdir -p ~/vaultwarden && cd ~/vaultwarden
cat > compose.yaml <<'EOF'
services:
vaultwarden:
image: vaultwarden/server:latest
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "true" # switch to false after you create your account
ADMIN_TOKEN: "${ADMIN_TOKEN}"
volumes:
- ./data:/data
ports:
- "127.0.0.1:8081:80"
EOF
Langkah 2: buat token admin
Halaman admin memungkinkan Anda mengelola pengguna. Simpan token yang di-hash, bukan teks biasa. Image Vaultwarden menyertakan alat bantu:
docker run --rm -it vaultwarden/server /vaultwarden hash
# paste the result into a .env file as ADMIN_TOKEN='$argon2id$...'
Langkah 3: jalankan
docker compose up -d
docker compose logs -f
Langkah 4: HTTPS dengan Caddy
Klien Bitwarden mewajibkan HTTPS.
vault.example.com {
reverse_proxy 127.0.0.1:8081
}
Muat ulang Caddy dan buka situsnya. Buat akun Anda, lalu ubah SIGNUPS_ALLOWED menjadi false dan jalankan docker compose up -d lagi agar orang asing tidak bisa mendaftar.
Langkah 5: aktifkan login dua langkah
Di web vault, aktifkan login dua langkah dengan aplikasi autentikator atau kunci perangkat keras. Simpan kode pemulihan secara offline.
Cadangkan vault
Semua data ada di ./data, terutama database SQLite dan lampiran. Buat salinan yang konsisten secara terjadwal dan simpan di luar server:
sqlite3 data/db.sqlite3 ".backup '/backup/vaultwarden-$(date +%F).sqlite3'"
tar czf /backup/vw-files-$(date +%F).tgz data/attachments data/rsa_key*
Uji pemulihan setidaknya sekali. Cadangan yang tidak pernah diuji hanyalah harapan.