Vaultwarden merupakan implementasi server Bitwarden tidak resmi yang ditulis ulang dalam bahasa Rust oleh komunitas open-source. Proyek ini kompatibel secara penuh dengan semua official Bitwarden clients, seperti ekstensi browser, aplikasi desktop, Android, serta iOS, sehingga pengalaman pengguna akhirnya identik dengan Bitwarden resmi.
Secara arsitektur, Vaultwarden berjalan sebagai satu binary ringan yang menyertakan antarmuka web vault, REST API, dan WebSocket server dalam satu container Docker. Database default yang digunakan adalah SQLite. Hal ini menjadikannya sangat mudah di-deploy dan di-backup tanpa dependensi eksternal.
Mengapa Memilih Vaultwarden?
Ada beberapa alasan kuat untuk menjalankan Vaultwarden di server sendiri dibandingkan bergantung pada layanan cloud pihak ketiga:
- Fitur premium gratis: Vaultwarden mengaktifkan semua fitur Bitwarden Premium secara gratis, yaitu TOTP Authenticator, Bitwarden Send, Emergency Access, File Attachments, serta Organizations/Sharing, tanpa biaya berlangganan.
- Hemat sumber daya: Konsumsi RAM Vaultwarden hanya sekitar 10–30 MB dalam kondisi idle. Hal ini jauh lebih efisien dibanding official Bitwarden Server yang membutuhkan stack .NET + MSSQL dengan kebutuhan RAM minimal 2 GB.
- Privasi penuh: Semua data terenkripsi tersimpan di server Anda sendiri. Tidak ada data yang dikirim ke Bitwarden, Inc. atau pihak ketiga mana pun.
- Kontrol penuh: Anda menentukan kebijakan registrasi, retention data, dan frekuensi backup sesuai kebutuhan.
| Aspek | Vaultwarden | Bitwarden Official (Self-Hosted) |
|---|---|---|
| Bahasa / Runtime | Rust (single binary) | .NET + ASP.NET Core |
| Database default | SQLite (opsional PostgreSQL/MySQL) | Microsoft SQL Server |
| Kebutuhan RAM minimum | ~256 MB (termasuk OS) | ~2 GB (stack penuh) |
| Fitur premium | Gratis, diaktifkan semua | Memerlukan lisensi berbayar |
| Status resmi | Tidak resmi, komunitas | Resmi dari Bitwarden, Inc. |
| Kompleksitas deploy | Satu container Docker | Multi-container (10+ layanan) |
| Audit keamanan | Ada (lihat wiki resmi) | Ada (internal + eksternal) |
Persiapan dan Persyaratan Sistem
Kebutuhan Perangkat Keras
Vaultwarden sangat ringan dan berjalan nyaman di berbagai hardware. Berikut adalah rekomendasi minimum berdasarkan skala penggunaan:
| Skenario | Hardware | Contoh perangkat |
|---|---|---|
| Personal / keluarga (<10 user) | 1 vCPU, 512 MB RAM, 5 GB storage | VPS entry-level, Raspberry Pi 2+, Synology NAS |
| Tim kecil (10–50 user) | 1 vCPU, 1 GB RAM, 20 GB storage | VPS cloud standar |
| Organisasi (50+ user) | 2 vCPU, 2 GB RAM, 40 GB storage | VPS cloud medium, bare metal |
Kebutuhan Perangkat Lunak
Pastikan sistem operasi Anda (Ubuntu 24.04 LTS atau Debian 13 direkomendasikan) telah memiliki paket berikut yang terinstal:
- Docker Engine versi 24.0 atau lebih baru.
- Docker Compose plugin versi 2.x (terintegrasi dalam Docker Engine modern).
curldanopenssluntuk keperluan konfigurasi.
Instal Docker Engine
Jalankan perintah berikut untuk menginstal Docker Engine:
sudo sh -c "curl -fsSL https://get.docker.com/ | sh"Persyaratan Domain dan SSL
HTTPS adalah persyaratan wajib untuk menjalankan Vaultwarden secara fungsional. Bitwarden clients (ekstensi browser, aplikasi mobile) memerlukan koneksi HTTPS untuk mengakses server. Fitur-fitur seperti sinkronisasi, notifikasi push, dan autentikasi dua faktor tidak akan berfungsi tanpa SSL.
Ada dua pendekatan utama untuk mendapatkan HTTPS:
- Domain + Reverse Proxy + Let's Encrypt: Metode ini paling direkomendasikan. Gunakan Nginx Proxy Manager atau Traefik untuk mengelola sertifikat SSL otomatis melalui Let's Encrypt.
- Cloudflare Tunnel: Metode ini merupakan alternatif tanpa perlu membuka port 80/443 di firewall server. Cara ini cocok untuk jaringan di balik NAT atau tanpa IP publik.
Pastikan Anda sudah memiliki nama domain yang aktif (contoh: vault.example.com) dan akses ke panel DNS sebelum melanjutkan ke tahap instalasi.
Langkah-Langkah Instalasi Vaultwarden
Langkah 1: Membuat File docker-compose.yml
Buat direktori khusus untuk Vaultwarden. Pemisahan direktori ini penting agar proses backup lebih mudah dan terisolasi dari layanan Docker lainnya.
sudo mkdir /opt/vaultwarden
cd /opt/vaultwardenKonfigurasi docker-compose.yml
Buat file docker-compose.yml di dalam direktori /opt/vaultwarden/.
sudo nano docker-compose.ymlMasukkan konfigurasinya:
services:
vaultwarden:
image: vaultwarden/server:1.35.7
container_name: vaultwarden
restart: unless-stopped
env_file:
- .env
volumes:
# Mount folder data ke dalam container
- ./vw-data:/data
ports:
# Binding ke localhost saja — tidak perlu ekspos ke public
# Port 80 untuk HTTP (reverse proxy yang handle HTTPS)
- "127.0.0.1:8080:80"
# Port WebSocket (wajib jika WEBSOCKET_ENABLED: true)
- "127.0.0.1:3012:3012"
networks:
- internal
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
npm:
image: jc21/nginx-proxy-manager:2.14.0
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- "80:80"
- "81:81"
- "443:443"
environment:
DB_SQLITE_FILE: "/data/database.sqlite"
volumes:
- ./npm-data:/data
- ./npm-letsencrypt:/etc/letsencrypt
depends_on:
- vaultwarden
networks:
- internal
networks:
internal:Konfigurasi .env untuk Vaultwarden
Sebelum membuat file .env, buatlah ADMIN_TOKEN menggunakan argon2. Vaultwarden versi terbaru menyarankan token dalam format Argon2id yang di-hash untuk keamanan yang lebih baik:
# Install argon2 jika belum ada
sudo apt install -y argon2
# Generate token: ganti 'password_rahasia_anda' dengan kata sandi kuat
echo -n "password_rahasia_anda" \
| argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4Salin output hash Argon2id yang dihasilkan (formatnya diawali dengan $argon2id$v=...). Hash ini yang akan digunakan sebagai nilai ADMIN_TOKEN.
Membuat file .env:
sudo nano .envMasukkan konfigurasinya:
# URL publik Vaultwarden — wajib diisi dengan domain Anda
DOMAIN: "https://vault.example.com"
# Admin panel — isi dengan hash Argon2id yang sudah digenerate
# Akses admin panel: https://vault.example.com/admin
ADMIN_TOKEN: '$argon2id$v=19$m=65540,t=3,p=4$...'
# Matikan pendaftaran akun baru setelah buat akun pertama
SIGNUPS_ALLOWED: "false"
# Matikan fitur undangan (opsional, untuk keamanan ekstra)
INVITATIONS_ALLOWED: "false"
# Aktifkan WebSocket untuk notifikasi real-time di browser/desktop
WEBSOCKET_ENABLED: "true"
# Zona waktu server
TZ: "Asia/Jakarta"
# Log level (gunakan "warn" di production untuk mengurangi noise)
LOG_LEVEL: "warn"Langkah 2: Menjalankan Docker Compose
Jalankan docker compose:
sudo docker compose up -dCek status container yang ada di docker compose:
sudo docker compose psOutput terlihat seperti ini:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
nginx-proxy-manager jc21/nginx-proxy-manager:2.14.0 "/init" npm 33 minutes ago Up 33 minutes 0.0.0.0:80-81->80-81/tcp, [::]:80-81->80-81/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp
vaultwarden vaultwarden/server:1.35.7 "/start.sh" vaultwarden 33 minutes ago Up 33 minutes (healthy) 127.0.0.1:3012->3012/tcp, 127.0.0.1:8080->80/tcpCek log container vaultwarden:
sudo docker logs vaultwardenOutput log terlihat seperti ini:
/--------------------------------------------------------------------\
| Starting Vaultwarden |
| Version 1.35.7 |
|--------------------------------------------------------------------|
| This is an *unofficial* Bitwarden implementation, DO NOT use the |
| official channels to report bugs/features, regardless of client. |
| Send usage/configuration questions or feature requests to: |
| https://github.com/dani-garcia/vaultwarden/discussions or |
| https://vaultwarden.discourse.group/ |
| Report suspected bugs/issues in the software itself at: |
| https://github.com/dani-garcia/vaultwarden/issues/new |
\--------------------------------------------------------------------/Cek log container nginx-proxy-manager:
sudo docker logs nginx-proxy-managerOutput log terlihat seperti ini:
-------------------------------------
_ _ ____ __ __
| \ | | _ \| \/ |
| \| | |_) | |\/| |
| |\ | __/| | | |
|_| \_|_| |_| |_|
-------------------------------------
User: npm PUID:0 ID:0 GROUP:0
Group: npm PGID:0 ID:0
-------------------------------------
❯ Starting nginx ...
❯ Starting backend ...Verifikasi binding port di level host:
ss -tulnp | grep -E '80|81|443|8080|3012'Output terlihat seperti ini:
tcp LISTEN 0 4096 0.0.0.0:81 0.0.0.0:*
tcp LISTEN 0 4096 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 4096 0.0.0.0:443 0.0.0.0:*
tcp LISTEN 0 4096 127.0.0.1:8080 0.0.0.0:*
tcp LISTEN 0 4096 127.0.0.1:3012 0.0.0.0:*
tcp LISTEN 0 4096 [::]:81 [::]:*
tcp LISTEN 0 4096 [::]:80 [::]:*
tcp LISTEN 0 4096 [::]:443 [::]:*Langkah 3: Konfigurasi Proxy Host
Konfigurasi Proxy Host untuk Vaultwarden di NPM:
- Login ke dashboard NPM di
http://IP_SERVER:81. - Klik
Proxy Hosts → Add Proxy Host. - Isi
Domain Names: vault.example.com. - Isi
Forward Hostname/IP: vaultwarden. - Isi
Forward Port: 80. - Centang
Websockets Support(wajib untuk sync real-time). - Di tab SSL, pilih
Request a new SSL Certificate, lalu aktifkanForce SSLdanHTTP/2 Support. - Di tab
Settings, masukkan konfigurasi kustom Nginx untuk websocket:
location /notifications/hub {
proxy_pass http://vaultwarden:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}Buka browser dan akses https://vault.example.com. Jika tampil halaman login Vaultwarden, instalasi berhasil.
Konfigurasi Awal dan Keamanan
Membuat Akun Pertama
Segera setelah instalasi, buat akun administrator Anda sebelum menonaktifkan registrasi publik:
- Buka https://vault.example.com di browser.
- Klik Create Account.
- Isi alamat email, nama, dan master password yang kuat (minimal 12 karakter, kombinasi huruf besar/kecil, angka, serta simbol).
- Klik Submit. Akun langsung aktif tanpa verifikasi email secara default.
Peringatan: Master password tidak bisa dipulihkan jika lupa. Simpanlah di tempat yang aman secara offline. Bitwarden atau Vaultwarden menggunakan enkripsi end-to-end. Hal ini berarti administrator server sekalipun tidak bisa mengakses vault Anda jika tidak mengetahui master password.
Mengaktifkan dan Mengamankan Admin Panel
Admin panel Vaultwarden dapat diakses di https://vault.example.com/admin menggunakan ADMIN_TOKEN yang sudah dikonfigurasi sebelumnya. Anda dapat mengelola user, melihat statistik, mengirim undangan, dan mengubah konfigurasi server secara real-time melalui admin panel.
Langkah-langkah pengamanan admin panel yang direkomendasikan:
- Gunakan token Argon2id (bukan plaintext) seperti yang sudah dikonfigurasi pada langkah sebelumnya.
- Batasi akses melalui IP pada level reverse proxy. Tambahkan aturan berikut di konfigurasi Nginx untuk membatasi akses /admin hanya dari IP tertentu:
# Tambahkan di dalam blok server Nginx (sebelum location /)
location /admin {
# Izinkan hanya IP admin Anda
allow 203.0.113.10; # Ganti dengan IP publik Anda
deny all;
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}- Nonaktifkan admin panel sepenuhnya jika tidak dibutuhkan dengan menghapus atau mengosongkan variabel
ADMIN_TOKENdidocker-compose.yml, lalu restart container.
Menonaktifkan Registrasi Akun Baru
Setelah semua akun yang dibutuhkan dibuat, nonaktifkan registrasi publik untuk mencegah orang asing mendaftar di server Anda. Pastikan nilai berikut sudah terdapat di konfigurasi .env:
# Nonaktifkan registrasi akun
SIGNUPS_ALLOWED: "false"
# Nonaktifkan juga fitur undangan (opsional, untuk keamanan ekstra)
INVITATIONS_ALLOWED: "false"Restart container agar perubahan berlaku setelah Anda mengubah konfigurasi:
sudo docker compose restart vaultwardenAktifkan kembali SIGNUPS_ALLOWED: "true" sementara jika Anda perlu menambah user baru di kemudian hari. Buat akun, lalu matikan lagi atau gunakan fitur undangan melalui admin panel.
Mengaktifkan Two-Factor Authentication (2FA)
2FA sangat direkomendasikan untuk setiap akun di server Vaultwarden Anda. Vaultwarden mendukung berbagai metode 2FA:
- Authenticator App (TOTP): Google Authenticator, Aegis (Android), Raivo (iOS).
- Email OTP: Membutuhkan konfigurasi SMTP.
- YubiKey OTP: Hardware security key.
- FIDO2 / WebAuthn: Passkeys, hardware keys (YubiKey 5, SoloKey).
- Duo: Integrasi layanan Duo Security.
Mengaktifkan 2FA melalui Authenticator App (TOTP)
- Login ke vault Anda di
https://vault.example.com. - Klik
nama profil → Account Settings. - Pilih tab
Security → Two-step Login. - Klik
Managedi barisAuthenticator App. Scan QR codedenganaplikasi authenticatordi ponsel Anda.- Masukkan
kode 6 digituntuk verifikasi, lalu klikEnable. Simpan kode recoverydi tempat yang aman secara offline.
Konfigurasi SMTP
Konfigurasi SMTP untuk notifikasi email, opsional tetapi direkomendasikan. Email diperlukan untuk fitur verifikasi email, notifikasi login baru, dan pengelolaan akun. Tambahkan variabel SMTP ke .env:
# ... variabel lainnya ...
SMTP_HOST: "smtp.gmail.com"
SMTP_FROM: "[email protected]"
SMTP_FROM_NAME: "Vaultwarden"
SMTP_SECURITY: "starttls" # Opsi: "starttls", "force_tls", "off"
SMTP_PORT: "587"
SMTP_USERNAME: "[email protected]"
SMTP_PASSWORD: "your-app-password" # Gunakan App Password Google
# Wajibkan verifikasi email sebelum akun aktif
REQUIRE_DEVICE_EMAIL: "true"Pasang Fail2Ban
Pasang Fail2Ban untuk memblokir IP yang melakukan brute-force login secara otomatis.
Install fail2ban:
sudo apt install -y fail2banBuat filter untuk Vaultwarden:
sudo tee /etc/fail2ban/filter.d/vaultwarden.conf <<'EOF'
[INCLUDES]
before = common.conf
[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$
ignoreregex =
journalmatch = _SYSTEMD_UNIT=docker.service
EOF
# Buat jail untuk Vaultwarden
sudo tee /etc/fail2ban/jail.d/vaultwarden.conf <<'EOF'
[vaultwarden]
enabled = true
port = 80,443,8080
filter = vaultwarden
logpath = /opt/vaultwarden/data/vaultwarden.log
maxretry = 5
bantime = 3600
findtime = 600
EOFRestart fail2ban:
sudo systemctl restart fail2ban
sudo fail2ban-client status vaultwardenMigrasi dan Penggunaan Sehari-hari
Impor Data dari Password Manager Lain
Vaultwarden menerima format impor yang sama dengan Bitwarden. Proses impor dilakukan melalui antarmuka web vault:
Dari Bitwarden Cloud
- Login ke
https://vault.bitwarden.com. - Klik
Tools → Export Vault. - Pilih format
JSON (Encrypted)untuk keamanan terbaik, atau JSON untuk impor langsung. - Login ke server
VaultwardenAnda, lalu klikTools → Import Data. - Pilih
Bitwarden (json)sebagai format, upload file, kemudian klikImport Data.
Dari Google Chrome Password Manager
- Buka
Chrome → Settings → Passwords. - Klik ikon
tiga titik di kanan → Export Passwords → simpan sebagai CSV. - Di vault Vaultwarden:
Tools → Import Data → pilih Chrome (csv) → upload file.
Dari LastPass
- Login ke
LastPass → Advanced Options → Export. Simpan file CSVyang diunduh.- Di Vaultwarden:
Tools → Import Data → pilih LastPass (csv) → upload.
Dari KeePass / KeePassX
- Ekspor database
KeePasske formatXML. - Di Vaultwarden:
Tools → Import Data → pilih KeePass 2 (xml) → upload.
Keamanan saat impor: File CSV dari Chrome atau LastPass berisi password dalam plaintext. Hapus file tersebut segera setelah proses impor selesai. Gunakan shred -u filename.csv di Linux untuk menghapus secara aman.
Setup Client: Menghubungkan ke Server Sendiri
Semua Bitwarden client resmi mendukung konfigurasi custom server URL. Berikut adalah cara menghubungkannya ke instance Vaultwarden Anda:
Ekstensi Browser (Chrome, Firefox, Edge, Safari)
- Install
ekstensi Bitwardendari toko ekstensi browser Anda. - Buka ekstensi, lalu klik ikon roda gigi (
Settings) atau klikregion serverdi layar login. - Pilih
Self-hosted. - Isi Server URL:
https://vault.example.com. - Klik
Save, kemudianlogindengan akun Anda.
Aplikasi Mobile (Android / iOS)
- Install aplikasi
BitwardendariGoogle Play StoreatauApple App Store. - Di layar login, ketuk
Logging in on: atau ikonSelf-hosted. - Isi Server URL:
https://vault.example.com. - Ketuk Save, lalu login.
Aplikasi Desktop (Windows, macOS, Linux)
- Download
Bitwarden Desktopdarihttps://bitwarden.com/download. - Di layar login, klik
Accessing: → Self-hosted. - Isi
Server URL, klikSave, lalulogin.
Fitur Organisasi dan Sharing Password
Vaultwarden mendukung fitur Bitwarden Organizations secara penuh. Hal ini ideal untuk berbagi password dalam keluarga atau tim kecil:
- Membuat Organisasi: Login ke web vault, klik nama profil → New Organization → isi nama dan email billing (dapat menggunakan email dummy untuk self-hosted).
- Mengundang Anggota: Di dashboard Organisasi, pilih tab Members → Invite Member → masukkan email anggota.
- Membuat Collection: Collection adalah folder bersama dalam Organisasi. Buatlah collection berdasarkan kategori, seperti "Keluarga", "Pekerjaan", atau "Server Credentials".
- Berbagi Item: Pilih Organisasi dan Collection yang sesuai saat menambah atau mengedit item vault agar item tersebut dapat diakses oleh seluruh anggota.
Pemeliharaan dan Backup
Cara Update Vaultwarden
Vaultwarden rutin merilis update dengan perbaikan keamanan serta fitur baru. Proses update menggunakan Docker sangat sederhana:
cd /opt/vaultwarden
# Pull image terbaru dari Docker Hub
sudo docker compose pull
# Recreate container dengan image baru (downtime sekitar 5–10 detik)
sudo docker compose up -d --remove-orphans
# Verifikasi container berjalan dengan image terbaru
sudo docker compose ps
sudo docker inspect vaultwarden | grep ImagePeriksa halaman Releases Vaultwarden sebelum update untuk membaca changelog dan memastikan tidak ada breaking changes yang memerlukan persiapan migrasi.
Strategi Backup Database
Bagian ini merupakan hal paling kritis dari pengelolaan Vaultwarden. Kehilangan data vault sama dengan kehilangan akses ke semua akun yang tersimpan.
Semua data Vaultwarden tersimpan di direktori /opt/vaultwarden dengan struktur:
/opt/vaultwarden
├── docker-compose.yml
├── npm-data
├── npm-letsencrypt
└── vw-data
├── db.sqlite3
├── db.sqlite3-shm
├── db.sqlite3-wal
├── rsa_key.pem
└── tmpSQLite memiliki mekanisme WAL (Write-Ahead Logging) yang memerlukan cara khusus untuk backup agar data konsisten. Gunakan perintah sqlite3 dengan mode backup online.
Install sqlite3:
sudo apt install -y sqlite3Membuat bash script backup:
sudo nano /opt/vaultwarden/backup.shMasukkan script:
#!/bin/bash
# /opt/vaultwarden/backup.sh
BACKUP_DIR="/backup/vaultwarden"
DATA_DIR="/opt/vaultwarden/vw-data"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/vaultwarden_$DATE.tar.gz"
# Buat direktori backup jika belum ada
mkdir -p "$BACKUP_DIR"
# Backup SQLite database secara online (aman saat container berjalan)
sqlite3 "$DATA_DIR/db.sqlite3" ".backup '$BACKUP_DIR/db_$DATE.sqlite3'"
# Buat arsip yang menyertakan database dan folder attachments
tar -czf "$BACKUP_FILE" \
-C "$BACKUP_DIR" "db_$DATE.sqlite3" \
-C "$DATA_DIR" .
# Hapus file db sementara
rm "$BACKUP_DIR/db_$DATE.sqlite3"
# Hapus backup lebih dari 30 hari
find "$BACKUP_DIR" -name "vaultwarden_*.tar.gz" -mtime +30 -delete
echo "Backup selesai: $BACKUP_FILE"
echo "Ukuran: $(du -sh "$BACKUP_FILE" | cut -f1)"Jalankan bash script:
# Beri permission eksekusi pada skrip
sudo chmod u+x /opt/vaultwarden/backup.sh
# Uji coba jalankan manual
sudo /opt/vaultwarden/backup.shJadwalkan backup otomatis setiap hari pukul 02:00 WIB:
# Edit crontab root
sudo crontab -e
# Tambahkan baris berikut:
0 2 * * * /opt/vaultwarden/backup.sh >> /var/log/vaultwarden-backup.log 2>&1Verifikasi Integritas Backup
Backup yang tidak pernah diuji sama dengan tidak memiliki backup. Lakukan uji restore secara berkala, minimal satu kali setiap bulan:
# Ekstrak backup ke direktori sementara
mkdir -p /tmp/vaultwarden-restore
tar -xzf /backup/vaultwarden/vaultwarden_YYYYMMDD_HHMMSS.tar.gz \
-C /tmp/vaultwarden-restore
# Verifikasi integritas database SQLite
sqlite3 /tmp/vaultwarden-restore/db_YYYYMMDD_HHMMSS.sqlite3 "PRAGMA integrity_check;"
# Output yang benar: "ok"
# Bersihkan direktori sementara
rm -rf /tmp/vaultwarden-restoreKesimpulan
Vaultwarden merupakan solusi self-hosted password manager yang unggul dalam efisiensi sumber daya, kelengkapan fitur, serta kemudahan pengelolaan. Anda mendapatkan seluruh ekosistem Bitwarden melalui arsitektur single-container berbasis Rust, termasuk fitur premium yang biasanya berbayar, hanya dengan biaya VPS entry-level.


