SSD Nodes Learn 🎉 VPS mulai $5.50/bln
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-13

Vaultwarden vs Bitwarden Self-Hosted: Mana yang Tepat?

Bitwarden resmi memerlukan sekitar selusin container dan RAM 2 GB, sedangkan Vaultwarden berjalan dalam satu container. Bandingkan pilihan server untuk VPS Anda.

Apa sebenarnya Vaultwarden dan Bitwarden self-hosted

Vaultwarden vs Bitwarden self-hosted adalah pilihan antara dua server yang menggunakan client API yang sama, bukan pilihan antara dua password manager. Stack milik Bitwarden menjalankan sekitar selusin container di belakang nginx, menyimpan semua data di Microsoft SQL Server, dan terikat pada installation ID yang Anda daftarkan menggunakan alamat email. Vaultwarden adalah implementasi ulang tidak resmi atas client API Bitwarden, ditulis dalam Rust, yang berjalan sebagai satu container menggunakan satu file SQLite. Ekstensi browser dan ponsel Anda tidak dapat membedakan keduanya karena keduanya merespons endpoint yang sama.

Enkripsi yang digunakan sama dalam kedua pilihan. Client Bitwarden mengenkripsi vault sebelum data meninggalkan perangkat, sehingga server menyimpan blob yang tidak dapat dibacanya. Format vault juga merupakan milik Bitwarden dalam kedua kasus. Perbedaannya terletak pada seberapa besar mesin yang perlu Anda sewa, siapa yang memelihara kode, fitur mana yang berbayar, dan data apa yang harus Anda cadangkan.

README Vaultwarden menjelaskan statusnya secara tegas: "This project is not associated with Bitwarden or Bitwarden, Inc." Proyek ini dikelola oleh sukarelawan, tanpa meja dukungan dan tanpa garansi. Salah satu maintainer aktif bekerja di Bitwarden dan berkontribusi pada waktu pribadi. Hal ini merupakan bentuk bantuan, bukan dukungan resmi.

Tiga stack yang dapat Anda instal

Sebagian besar perbandingan mengabaikan bahwa Bitwarden menyediakan dua produk self-hosted yang berbeda.

Bitwarden standard. Deployment dari vendor yang dijalankan melalui shell script.

curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" \
  && chmod 700 bitwarden.sh
./bitwarden.sh install

Installer meminta domain Anda, pilihan untuk meminta sertifikat Let's Encrypt, nama database, serta installation ID dan key yang Anda dapatkan dari https://bitwarden.com/host dengan memasukkan alamat email. ./bitwarden.sh start kemudian menarik image dan menjalankan stack. Bitwarden mendokumentasikan 2 GB RAM dan 12 GB storage sebagai minimum, 4 GB dan 25 GB sebagai rekomendasi, serta Docker Engine 26 atau yang lebih baru dengan Compose plugin. Database-nya menggunakan image MSSQL Express. Edisi tersebut membatasi database relasional hingga 10 GB, kecuali deployment diarahkan ke database eksternal.

Bitwarden lite. Ini adalah deployment yang sebelumnya bernama Bitwarden Unified. Deployment ini keluar dari status beta dan berganti nama pada Desember 2025. Satu application container dan database pilihan Anda:

services:
  bitwarden:
    depends_on:
      - db
    env_file:
      - settings.env
    image: ghcr.io/bitwarden/lite
    restart: always
    ports:
      - "80:8080"
    volumes:
      - bitwarden:/etc/bitwarden
  db:
    environment:
      MARIADB_USER: "bitwarden"
      MARIADB_PASSWORD: "super_strong_password"
      MARIADB_DATABASE: "bitwarden_vault"
      MARIADB_RANDOM_ROOT_PASSWORD: "true"
    image: mariadb:10
    restart: always
    volumes:
      - data:/var/lib/mysql
volumes:
  bitwarden:
  data:

Deployment ini menerima MariaDB atau MySQL, PostgreSQL, SQLite, dan MSSQL. Kebutuhannya adalah 200 MB RAM dan 1 GB storage. Ada dua catatan yang berasal dari dokumentasi Bitwarden sendiri. Deployment ini didokumentasikan untuk penggunaan pribadi dan home lab, bukan untuk penggunaan bisnis. Deployment ini juga tidak membuat backup database otomatis, sehingga tugas tersebut sepenuhnya menjadi tanggung jawab Anda.

Vaultwarden. Satu container, langsung dari README proyek:

docker run --detach --name vaultwarden \
  --env DOMAIN="https://vw.domain.tld" \
  --volume /vw-data/:/data/ \
  --restart unless-stopped \
  --publish 127.0.0.1:8000:80 \
  vaultwarden/server:latest

Baris publish tersebut mengikat port 8000 hanya ke loopback, dan ini memang disengaja. Vaultwarden menyediakan HTTP biasa dan mengharapkan reverse proxy menghentikan TLS (transport layer security) di depannya. TLS wajib digunakan di sini. Web vault melakukan enkripsi dengan WebCrypto API milik browser, yang hanya tersedia dalam secure context. Karena itu, melalui http biasa, halaman login gagal di browser sebelum server Anda menerima permintaan apa pun. Panduan instalasi Vaultwarden lengkap membahas proxy dan sertifikat.

Berapa banyak RAM yang digunakan Vaultwarden dibandingkan dengan Bitwarden yang di-host sendiri?

Persyaratan minimum vendor menunjukkan batas yang membuat installer menolak berjalan, bukan kebutuhan sumber daya aktual perangkat lunak. Baris di bawah ini berasal dari docker stats --no-stream pada instalasi yang idle, masing-masing dengan satu pengguna, vault kecil, dan tanpa lampiran, pada mesin Ubuntu 24.04 dengan RAM 4 GB. Penggunaan disk mencakup image dan direktori data setelah start pertama berhasil.

ChartIdle memory, container count and disk, measured on one Ubuntu 24.04 box
The data behind this chart
[
  {
    "label": "Vaultwarden (SQLite)",
    "idle_ram_mb": 58,
    "containers": 1,
    "disk_gb": 0.4
  },
  {
    "label": "Bitwarden lite + MariaDB",
    "idle_ram_mb": 470,
    "containers": 2,
    "disk_gb": 1.6
  },
  {
    "label": "Bitwarden standard (MSSQL)",
    "idle_ram_mb": "2,400",
    "containers": 12,
    "disk_gb": 6.5
  }
]

Vaultwarden menggunakan 58 MB saat idle dalam satu container. Stack Bitwarden standar menggunakan hampir 2,400 MB saat idle di 12 container, dan container MSSQL menggunakan sebagian besar RAM tersebut. Bitwarden lite menggunakan 470 MB, termasuk container MariaDB. Jalankan perintah yang sama pada mesin Anda sendiri sebelum mempercayai angka-angka ini, karena penggunaannya berubah sesuai jumlah pengguna, lampiran, dan trafik sinkronisasi. MSSQL juga memperbesar working set seiring waktu berjalan.

Untuk VPS kecil, kesimpulan praktisnya adalah Vaultwarden dengan SQLite dapat berjalan baik pada paket 1 GB, sedangkan stack Bitwarden standar tidak akan start di sana. Pada paket 2 GB, stack standar memenuhi minimum yang didokumentasikan dan menyisakan sangat sedikit RAM untuk sistem operasi. Karena itu, kernel out-of-memory killer dapat benar-benar aktif. Saat aktif, dmesg mencetak baris yang menyebutkan proses yang dihentikannya. Pada stack ini, proses tersebut biasanya sqlservr. Sediakan RAM 4 GB untuk deployment standar.

Fitur berbayar apa saja yang gratis di Vaultwarden?

Menjalankan server Bitwarden tidak dikenai biaya, tetapi fitur berbayar tetap terkunci sampai Anda mengunggah file lisensi. Akun individual Premium dan semua tingkat organisasi berbayar (Families, Teams, Enterprise) memerlukan lisensi. Anda dapat mengunduhnya dari cloud web vault, melalui Settings lalu Subscription untuk akun individual, atau melalui Admin Console, lalu Billing dan Subscription untuk organisasi, kemudian mengunggahnya ke instance Anda sendiri. Lisensi organisasi diterbitkan berdasarkan ID instalasi yang tersimpan di ./bwdata/env/global.override.env. Dengan demikian, organisasi yang di-host sendiri tetap memiliki langganan berbayar dan tetap terhubung ke cloud Bitwarden untuk penagihan.

Vaultwarden mengaktifkan fitur yang sama tanpa lisensi dan tanpa langganan. Wiki proyek mencantumkannya:

  • organisasi, koleksi, dan grup
  • lampiran file
  • login dua langkah dengan email, Duo, YubiKey, dan FIDO2
  • Emergency Access
  • Bitwarden Send
  • kunci API pribadi
  • SSO melalui OpenID Connect

SSO adalah fitur terbaru di antara fitur-fitur tersebut dan dikonfigurasi dengan SSO_ENABLED, SSO_AUTHORITY, SSO_CLIENT_ID, dan SSO_CLIENT_SECRET. Fitur ini hanya mengautentikasi login. Wiki menjelaskan secara tegas bahwa kata sandi utama tetap diperlukan dan tidak dikendalikan oleh penyedia identitas Anda, karena kata sandi tersebut menghasilkan kunci untuk mendekripsi vault. Arahkan SSO_AUTHORITY ke issuer discovery dari penyedia identitas Authentik yang di-host sendiri dan pengguna akan login di sana, lalu membuka kunci vault dengan kata sandi utama mereka. Nilainya harus sama dengan field issuer yang dikembalikan endpoint discovery, tanpa suffix /.well-known/openid-configuration di bagian akhir.

Hal yang tidak Anda dapatkan dari Vaultwarden adalah vendor. Bitwarden memiliki sertifikasi SOC 2 Type 2 dan ISO 27001, menerbitkan laporan audit pihak ketiga, serta menjalankan program bug bounty privat di HackerOne. Semua itu mencakup kode dan layanan Bitwarden, bukan server yang Anda instal. Namun, jika auditor menginginkan pemasok yang jelas di balik password manager Anda, implementasi ulang yang dikembangkan sukarelawan dapat menimbulkan pertanyaan sulit.

Apakah aplikasi resmi Bitwarden dapat digunakan dengan Vaultwarden?

Ya. Vaultwarden mengimplementasikan API klien, sehingga ekstensi browser, aplikasi desktop, aplikasi seluler, dan web vault bawaan semuanya dapat digunakan dengan Vaultwarden. Pada setiap klien, tetapkan URL server self-hosted pada layar lingkungan sebelum login, bukan setelahnya.

Satu fitur memerlukan konfigurasi tambahan: notifikasi push ke aplikasi seluler. Tanpa fitur tersebut, aplikasi melakukan sinkronisasi saat dibuka atau berdasarkan pengatur waktu internalnya. Akibatnya, perubahan kata sandi di laptop tidak muncul di ponsel sampai aplikasi dibuka. Vaultwarden dapat menggunakan relay push Bitwarden. Vaultwarden memerlukan ID instalasi dan kunci dari halaman https://bitwarden.com/host yang sama dengan yang digunakan installer resmi.

PUSH_ENABLED=true
PUSH_INSTALLATION_ID=<your installation id>
PUSH_INSTALLATION_KEY=<your installation key>

Server di wilayah EU juga memerlukan PUSH_RELAY_URI=https://api.bitwarden.eu dan PUSH_IDENTITY_URI=https://identity.bitwarden.eu. Wiki menjelaskan dua hal penting yang perlu diketahui sebelum Anda menghabiskan waktu satu jam untuk men-debug masalah ini. Aplikasi yang diinstal dari F-Droid atau Neo Store tidak memiliki dukungan Firebase dan tidak akan pernah menerima notifikasi push, apa pun yang dilakukan server. Aplikasi yang terhubung sebelum Vaultwarden 1.30.2 harus menghapus datanya agar dapat mendaftarkan token push.

Seberapa aman reimplementasi?

Riwayat audit Bitwarden panjang dan tersedia untuk umum. Cure53 meninjaunya pada 2018, 2021, 2022, dan 2023. IOActive dan Mandiant meninjau client pada 2024, Fracture Labs mencakup penilaian web dan jaringan sepanjang 2024 dan 2025, Unit 42 menilai aplikasi mobile pada 2025, dan ETH Zurich Applied Cryptography Group meninjau kriptografinya pada 2025.

Vaultwarden juga telah diperiksa oleh pihak eksternal, meskipun sebagian orang mengira tidak ada yang meninjaunya. Federal Office for Information Security (BSI) Jerman meminta mgm security partners mengujinya antara Februari dan Mei 2024 dalam proyek analisis kode Caos 3.0, dan peninjauan tersebut menilai dua temuan sebagai tingkat tinggi. Secara terpisah, ERNW melaporkan authentication bypass yang memengaruhi versi di bawah 1.32.5 (CVE-2024-55225), yang diperbaiki pada November 2024. Versi 1.37.0, pada Juli 2026, merilis perbaikan untuk SSRF (server side request forgery) melalui endpoint ikon, akses cipher lintas organisasi, dan bypass kebijakan organisasi pada impor direktori.

Riwayat tersebut menunjukkan proyek dengan proses pengungkapan kerentanan yang berjalan. Riwayat itu juga menunjukkan permukaan serangan yang terus muncul: halaman admin. Karena itu, perlakukan halaman tersebut sebagai komponen sensitif. Halaman ini tetap dinonaktifkan kecuali ADMIN_TOKEN ditetapkan, dan Anda sebaiknya menyimpan hash, bukan token dalam bentuk plaintext.

docker run --rm -it vaultwarden/server /vaultwarden hash

Perintah tersebut mencetak string Argon2 PHC (password hashing competition format) untuk ditempelkan ke ADMIN_TOKEN. Aktifkan HTTPS sebelum mengaktifkan halaman admin karena token dikirim dalam request. Token plaintext pada koneksi HTTP biasa dapat dibaca oleh apa pun yang berada di jalur jaringan. Jika memungkinkan, jangan biarkan /admin dapat diakses dari Internet publik. Terapkan juga hardening host yang umum, seperti membatasi akses SSH ke server.

Hal yang rusak ketika API resmi berubah

Ini adalah risiko yang sering diremehkan. Bitwarden merilis client, dan client tersebut memperbarui dirinya sendiri melalui app store pada malam hari. Vaultwarden harus mengikutinya. Ketika rilis client mengubah kontrak API, Vaultwarden yang belum diperbarui akan berhadapan dengan client yang sudah berpindah ke versi baru. Akibatnya, login atau sinkronisasi mulai gagal pada perangkat yang tidak Anda ubah.

Catatan rilis memuat contoh konkret. Vaultwarden 1.37.0 menyatakan: "Pembaruan ini diperlukan untuk dukungan terhadap client dengan versi 2026.7.0+; perbarui sebelum melaporkan masalah apa pun terkait client tersebut." Per Agustus 2026, rilis saat ini adalah 1.37.1, yang dipublikasikan pada 29 July 2026.

Dua kebiasaan dapat mencegah masalah ini. Tetapkan tag image tertentu, bukan latest, agar pull otomatis tidak memindahkan server Anda pada pukul 3am. Kemudian pantau feed rilis dan lakukan upgrade secara sengaja. Baca catatan rilis terlebih dahulu, karena perubahan yang tidak kompatibel dicantumkan di sana dan tidak di tempat lain. Sebagai contoh, versi 1.35.5 membatalkan setiap token remember two factor yang sudah ada saat upgrade. Akibatnya, pengguna logout dari langkah yang mereka kira sudah disimpan.

Deployment Bitwarden standar memiliki kebalikan dari masalah ini. Upgrade dijalankan melalui ./bitwarden.sh updateself dan ./bitwarden.sh update, dan pembaruan tersebut menerapkan migrasi database. Backup yang dibuat sebelum migrasi bukan rollback untuk schema setelah migrasi. Karena itu, buat backup dan catat versi saat backup tersebut dibuat.

Cadangan, yaitu bagian yang benar-benar menyebabkan orang kehilangan vault

Direktori data Vaultwarden adalah server itu sendiri. Simpan item berikut:

  • db.sqlite3
  • setiap file rsa_key*, termasuk rsa_key.pem dan rsa_key.der
  • attachments/
  • config.json
  • sends/

Jangan menyalin db.sqlite3 dengan cp saat container berjalan. SQLite mungkin sedang menulis data, sehingga salinan tersebut dapat menjadi database yang rusak meskipun tampak normal sampai dipulihkan. Gunakan API pencadangan online:

sqlite3 data/db.sqlite3 ".backup '/path/to/backups/db-$(date '+%Y%m%d-%H%M').sqlite3'"

Sejak 1.32.1, image ini juga menyediakan perintah bawaan /vaultwarden backup. Namun, snapshot tetap berada pada disk yang sama dengan data asli sampai dipindahkan. Karena itu, kirim snapshot ke luar server menggunakan snapshot restic ke penyimpanan di luar lokasi secara terjadwal. File rsa_key sama pentingnya dengan database. Server menandatangani token sesinya menggunakan key tersebut. Jika database dipulihkan bersama key yang baru dibuat, semua pengguna akan logout dan undangan organisasi yang sedang diproses akan gagal.

Bitwarden standard mencadangkan lebih banyak komponennya. Container mssql menulis cadangan database setiap malam ke ./bwdata/mssql/backups dan menyimpannya selama 30 hari, selama container berjalan. Anda juga dapat memaksa pencadangan:

docker exec -i bitwarden-mssql /backup-db.sh

Direktori yang harus disimpan adalah ./bwdata/env (variabel lingkungan, termasuk password database dan sertifikat), ./bwdata/core/attachments, ./bwdata/mssql/data, dan ./bwdata/core/aspnet-dataprotection. Direktori terakhir ini sering terlupakan. Direktori tersebut menyimpan material perlindungan data pada tingkat framework, termasuk token autentikasi dan beberapa kolom database. Karena itu, pemulihan database tanpa direktori tersebut membuat kolom yang dilindunginya tidak dapat dibaca. Bitwarden lite tidak membuat cadangan otomatis sama sekali. Jadi, memilih lite berarti Anda harus memiliki jadwal dump, sama seperti pada Vaultwarden.

Migrasi ke arah mana pun

Migrasi dilakukan melalui klien, bukan server, karena fitur ekspor dan impor tersedia pada klien. Oleh karena itu, kedua arah migrasi menggunakan prosedur yang sama.

Setiap pengguna mengekspor data dari web vault atau aplikasi desktop, membuat akun pada server baru, lalu mengimpor data tersebut. Format yang tersedia adalah plaintext .json, plaintext .csv, terenkripsi .json, dan .zip yang berisi JSON serta lampiran file untuk vault individual. Kartu, identitas, passkey tersimpan, dan kunci SSH hanya dipertahankan dalam format JSON. Karena itu, migrasi CSV akan menghapusnya tanpa pemberitahuan. Tidak ada format ekspor yang menyertakan item di trash atau Sends. Data milik organisasi juga tidak termasuk dalam ekspor individual.

Perlakukan ekspor plaintext sebagai secret aktif, karena memang demikian: seluruh vault Anda tersimpan dalam teks biasa di disk. Ekspor, impor, dan hapus file tersebut dalam satu sesi. Jangan pernah mengirimkannya melalui email atau chat.

Ada satu jebakan yang sering terjadi saat migrasi berlangsung. Ekspor terenkripsi yang terikat ke akun Anda tidak dapat diimpor ke akun lain. Migrasi server berarti menggunakan akun yang berbeda. Karena itu, pilih opsi ekspor yang dilindungi password agar file tersebut dapat dipindahkan.

Migrasi dari Vaultwarden ke Bitwarden standar lebih sulit karena struktur organisasi tidak ikut dipindahkan dalam ekspor. Buat ulang organisasi pada server baru, undang kembali para pengguna, lalu minta setiap pengguna mengimpor vault mereka sendiri. Jadwalkan maintenance window untuk proses ini. Jangan menunggu sampai hari pelaksanaan untuk menemukan kendala tersebut.

Mana yang sebaiknya Anda jalankan?

Jalankan Vaultwarden jika Anda adalah pengguna tunggal, keluarga, atau mengelola home lab pada VPS 1 GB atau 2 GB. Organisations, Emergency Access, dan Send tersedia gratis, penggunaan memori saat idle kira-kira setara dengan satu tab browser, dan pencadangan hanya memerlukan satu file SQLite serta satu direktori kecil. Kombinasi ini membuatnya menjadi pilihan utama untuk pengelolaan kata sandi self-hosted.

Jalankan server milik Bitwarden jika orang lain bergantung padanya untuk kebutuhan profesional: perusahaan yang memerlukan kontrak dukungan, persyaratan kepatuhan yang menetapkan vendor tertentu, atau fitur enterprise yang sudah Anda bayar. Sediakan 4 GB untuk deployment standar, dan perlakukan file lisensi serta installation ID sebagai bagian dari deployment, bukan sekadar dokumen administratif.

Bitwarden lite berada di posisi yang kurang jelas. Produk ini menggunakan kode vendor dengan kebutuhan sumber daya yang jauh lebih kecil, sehingga memang menarik. Namun, Bitwarden mendokumentasikannya untuk penggunaan pribadi dan home lab, dan produk ini tidak memiliki pencadangan otomatis. Anda tetap menanggung beban operasional Vaultwarden tanpa mendapatkan rangkaian fitur gratis Vaultwarden. Pilih opsi ini jika kode vendor lebih penting bagi Anda daripada fitur, dan Anda bersedia mengelola database sendiri.

Jika Anda masih menentukan layanan lain yang akan di-host pada server tersebut, daftar pilihan self-hosting yang lebih luas menempatkan pilihan ini di samping layanan lain yang menggunakan RAM yang sama.

FAQ

Apakah Vaultwarden cukup aman untuk digunakan sebagai pengelola kata sandi sungguhan?

Untuk penggunaan pribadi dan keluarga, ya, dengan beberapa syarat. Klien mengenkripsi vault sebelum data mencapai server, sehingga Vaultwarden tidak pernah melihat kata sandi utama atau data plaintext Anda. Keamanannya telah ditinjau secara eksternal: BSI meminta mitra keamanan mgm mengujinya antara Februari dan Mei 2024, dan ERNW melaporkan bypass autentikasi yang diperbaiki pada 1.32.5. Selalu gunakan versi terbaru, nonaktifkan halaman admin atau lindungi dengan ADMIN_TOKEN yang di-hash menggunakan Argon2, dan layani hanya melalui HTTPS. Organisasi yang memerlukan dukungan vendor atau dokumentasi audit sebaiknya menjalankan server milik Bitwarden sendiri.

Berapa RAM yang diperlukan Vaultwarden dibandingkan Bitwarden self-hosted?

Pada instalasi idle yang diukur dengan docker stats --no-stream, Vaultwarden dengan SQLite menggunakan sekitar 58 MB dalam satu container, sedangkan deployment standar Bitwarden menggunakan sekitar 2,400 MB pada 12 container. Sebagian besar penggunaan tersebut berasal dari database MSSQL. Bitwarden mendokumentasikan 2 GB sebagai minimum dan 4 GB sebagai rekomendasi untuk stack standar, serta 200 MB untuk Bitwarden lite. Vaultwarden dapat berjalan pada VPS 1 GB dengan sisa kapasitas yang cukup.

Apakah saya memerlukan lisensi Bitwarden untuk self-hosting?

Tidak untuk vault individual gratis. Menjalankan server tidak dikenai biaya. File lisensi diperlukan untuk membuka fitur premium individual dan paket organisasi berbayar, yang mencakup Families, Teams, dan Enterprise. Anda mengunduhnya dari cloud web vault lalu mengunggahnya ke instance Anda. Lisensi organisasi diterbitkan berdasarkan ID instalasi yang tersimpan di ./bwdata/env/global.override.env. Vaultwarden tidak memerlukan lisensi dan mengaktifkan sendiri fitur organisasi.

Dapatkah saya berpindah dari Vaultwarden ke Bitwarden nanti, atau sebaliknya?

Ya, keduanya dapat dilakukan melalui klien. Setiap pengguna mengekspor vault dari web vault atau aplikasi desktop, lalu mengimpornya ke server baru setelah membuat akun di sana. Ekspor .zip menyertakan lampiran untuk vault individual. Format JSON menyertakan kartu, identitas, passkey, dan kunci SSH. Item di Trash dan Sends tidak tersedia dalam format ekspor apa pun. Item milik organisasi harus diekspor secara terpisah oleh owner. Karena itu, rencanakan untuk membuat ulang organisasi dan mengundang kembali pengguna di server baru.

#vaultwarden#bitwarden#password-manager#self-hosting#docker