~/blog/#58
Index
#58··13 min read·vaultwarden

Mengenal Vaultwarden

Panduan lengkap self-hosted password manager Vaultwarden: mulai dari konsep dasar, perbandingan resource, setup Docker Compose & Nginx SSL, hardening keamanan, backup otomatis, sampai integrasi di semua perangkat.

Pernah gak sih kamu punya puluhan sampai ratusan akun di internet, terus pas mau login malah bengong karena lupa password-nya apa? Kebiasaan klasik kebanyakan orang (termasuk aku zaman dulu) biasanya menyamakan satu password buat semua akun, atau paling mentok cuma dibedain angka atau tanda seru di ujungnya.

Masalahnya, begitu ada satu website antah-berantah tempat kamu pernah daftar database-nya bocor, akun email utama, medsos, sampai akun penting lainnya bakal langsung dihajar serangan credential stuffing. Hacker tinggal bikin bot buat nyobain kombinasi email dan password bocor itu ke semua layanan populer.

Grandma Finds The Internet
sc: officesolutionsit.com.au

Solusi paling bener jelas pakai password manager. Tapi kalau langganan layanan cloud komersial, tiap bulan mesti bayar sekian dolar cuma buat fitur sinkronisasi atau nyimpen TOTP. Belum lagi urusan privasi: brankas rahasia hidup kita mesti kita titipin di server milik korporasi pihak ketiga.

Nah, di sinilah Vaultwarden jadi jawaban paling pas buat kamu yang pengen brankas password level dewa, enteng banget di server, kontrol data 100% di tangan sendiri, dan gak perlu keluar duit langganan sepeser pun.


Apa Sih Vaultwarden Itu Sebenarnya?

Singkatnya, Vaultwarden itu backend alternatif buat Bitwarden yang ditulis ulang dari nol pakai bahasa pemrograman Rust. Proyek ini sifatnya open-source dan didesain supaya kompatibel penuh sama semua aplikasi resmi Bitwarden — mulai dari ekstensi Chrome/Firefox, aplikasi desktop Windows/macOS/Linux, CLI, sampai aplikasi HP di Android dan iOS.

Vaultwarden Logo
sc: github.com/dani-garcia/vaultwarden

Jadi di sisi client, kamu tetep pakai aplikasi Bitwarden yang udah teruji dan tampilannya rapi. Tapi di sisi server, backend-nya bukan lagi server Bitwarden resmi yang rakus resource, melainkan Vaultwarden yang kita jalankan sendiri di server pribadi, VPS murah, atau homelab mini kayak Raspberry Pi.


Gimana Cara Kerjanya? (Zero-Knowledge Encryption)

Prinsip dasar yang bikin Vaultwarden aman banget adalah zero-knowledge encryption:

  1. Tiap kali kamu bikin atau edit password di browser atau HP, datanya langsung dienkripsi duluan di perangkat lokal kamu pakai algoritma AES-CBC 256-bit.
  2. Kunci enkripsinya diturunkan langsung dari master password kamu lewat proses hashing berat (PBKDF2 atau Argon2id).
  3. Yang dikirim dan disimpen ke server Vaultwarden cuma tumpukan teks acak hasil enkripsi (ciphertext).

Artinya apa? Bahkan kalau server VPS kamu dijebol hacker atau database-nya dicuri orang (amit-amit), yang mereka dapet cuma tumpukan karakter acak yang gak bisa dibaca sama sekali tanpa master password milik kamu. Server sama sekali gak tahu apa isi password kamu.


Kenapa Harus Vaultwarden? Bukan Bitwarden Resmi?

Mungkin ada yang nanya: "Bitwarden resmi kan juga nyediain versi self-hosted, kenapa repot-repot milih Vaultwarden?"

Jawabannya simpel: kebutuhan resource server bumi dan langit.

Backend resmi Bitwarden dibangun pakai arsitektur enterprise berbasis C# (.NET Core) dan Microsoft SQL Server / PostgreSQL. Buat jalanin itu semua, kamu butuh belasan container Docker yang jalan barengan. Buat pengguna rumahan atau sysadmin yang cuma pengen pake sendiri bareng keluarga/tim kecil, setup itu overkill banget dan boros server.

Sementara Vaultwarden ditulis pakai Rust, yang terkenal super kencang dan hemat memori sampai ke level binary.

Tabel Perbandingan Resource & Fitur

Hal yang DibandingkanVaultwarden (Self-host)Bitwarden Resmi (Self-host)Bitwarden Cloud Resmi
Stack TeknologiRust (1 container kecil)C# / .NET Core (10+ container)Managed Cloud
Konsumsi RAM Idle±20 – 50 MB (enteng parah)±1.5 – 3 GBGak perlu mikir
Kebutuhan CPUHampir 0% pas idle (1 vCPU cukup)Minimal 2 vCPUGak perlu mikir
Database BawaanSQLite (default) / PostgreSQLMSSQL / PostgreSQL wajibDikelola penyedia
Fitur Premium (TOTP, dll)Semua aktif gratisWajib bayar lisensiWajib bayar lisensi
Kebutuhan ServerVPS $3–$5 / Raspberry Pi cukupVPS minimal 4 GB RAMGak butuh server

Di Bitwarden cloud resmi, fitur asyik kayak built-in authenticator (bikin kode OTP 2FA langsung di dalam entri login), kirim teks/file rahasia via Bitwarden Send, dan laporan audit brankas itu dikunci di balik akun berbayar. Di Vaultwarden, semua fitur premium ini langsung kebuka dan bisa kamu nikmati secara gratis.


Bahan-Bahan yang Perlu Disiapin

Sebelum mulai instalasi, pastiin kamu udah siapin:

  1. VPS atau Server: Bisa pakai VPS paling murah (1 vCPU, RAM 1 GB, storage 20 GB) dengan OS Debian 12 atau Ubuntu 22.04/24.04.
  2. Domain atau Subdomain: Misalnya vault.domainkamu.com. Pastikan DNS Record tipe A-nya udah kamu arahkan ke IP publik server kamu.
  3. Akses SSH ke server: Akun user yang punya akses sudo.

Peringatan Wajib: Bitwarden web vault dan ekstensi browser mewajibkan koneksi HTTPS. Browser modern bakal otomatis ngeblokir Web Crypto API kalau dibuka lewat HTTP biasa tanpa SSL. Jadi domain dan sertifikat SSL itu hukumnya wajib, bukan opsional.


Langkah 1: Pasang Docker & Docker Compose

Kalau server kamu masih polosan dan belum ada Docker-nya, pasang dulu lewat repository resmi biar dapet versi paling stabil:

# Update repo dan install paket pendukung
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
 
# Pasang GPG key resmi Docker
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
 
# Tambah repo Docker ke sistem
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
sudo apt-get update
 
# Install Docker engine dan plugin compose
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
 
# Masukin user kamu ke group docker biar gak perlu ketik sudo melulu
sudo usermod -aG docker $USER

Kalau kamu pakai Ubuntu atau distro lain, tinggal sesuaikan link repo-nya atau intip dokumentasi resmi Docker.


Langkah 2: Deploy Container Vaultwarden

Biar rapi dan gampang dipindahin kalau suatu hari mau migrasi server, kita kumpulin semua file Vaultwarden di satu folder khusus.

1. Bikin Folder Project

mkdir -p ~/vaultwarden/data
cd ~/vaultwarden

2. Tulis File docker-compose.yml

Buka file konfigurasi pakai text editor favoritmu:

nano docker-compose.yml

Tempel konfigurasi ini:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      - DOMAIN=https://vault.domainkamu.com
      - SIGNUPS_ALLOWED=true      # Pasang true dulu buat daftar akun utama kamu
      - WEBSOCKET_ENABLED=true    # Wajib aktif biar perubahan password langsung sync tanpa refresh
      - LOG_FILE=/data/vaultwarden.log
      - SHOW_PASSWORD_HINT=false
    volumes:
      - ./data:/data
    ports:
      - "127.0.0.1:8080:80"       # Web vault (cuma nempel di localhost, aman!)
      - "127.0.0.1:3012:3012"     # WebSocket notifications

Kenapa port-nya diikat ke 127.0.0.1? Ini trik keamanan standar. Kita gak mau port container nembak langsung ke internet publik. Semua akses dari luar wajib lewat Nginx reverse proxy yang bakal kita pasang di langkah berikutnya.

3. Nyalain Container

Tinggal jalankan:

docker compose up -d

Cek statusnya:

docker compose ps

Kalau statusnya udah Up, berarti Vaultwarden udah aktif di internal server kamu.


Langkah 3: Setup Nginx Reverse Proxy & SSL (HTTPS)

Sekarang kita pasang Nginx di host server buat nerima traffic HTTPS dari internet, ngurus sertifikat SSL, lalu nerusin request-nya ke container Vaultwarden.

1. Install Nginx dan Certbot

sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx

2. Bikin Konfigurasi Virtual Host

Bikin file config baru di /etc/nginx/sites-available/vaultwarden.conf:

sudo nano /etc/nginx/sites-available/vaultwarden.conf

Isi dengan template berikut (jangan lupa ganti vault.domainkamu.com dengan domain milikmu):

server {
    listen 80;
    server_name vault.domainkamu.com;
 
    client_max_body_size 128M;
 
    # Akses Web Vault & API
    location / {
        proxy_pass http://127.0.0.1:8080;
        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;
    }
 
    # WebSocket Hub buat live notification & sync instan
    location /notifications/hub {
        proxy_pass http://127.0.0.1:3012;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
    }
 
    location /notifications/hub/negotiate {
        proxy_pass http://127.0.0.1:8080;
        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;
    }
}

Aktifkan file konfigurasi ini dan reload Nginx:

sudo ln -s /etc/nginx/sites-available/vaultwarden.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

3. Pasang SSL Gratis via Certbot

Tinggal minta sertifikat ke Let's Encrypt pakai satu baris command ini:

sudo certbot --nginx -d vault.domainkamu.com

Pilih opsi buat redirect HTTP ke HTTPS. Begitu selesai, buka browser kamu dan akses https://vault.domainkamu.com. Halaman login Bitwarden bakal langsung nongol dengan gembok hijau aman!

Vaultwarden Login
Tampilan Web Vaultwarden

Langkah 4: Hardening & Keamanan (Wajib!)

Server udah nyala, tapi jangan ditinggal dulu. Karena ini nyimpen kunci seluruh akun digital kamu, ada 4 hal wajib yang kudu langsung diberesin sekarang juga:

1. Bikin Akun Utama, Terus Tutup Pintu Registrasi!

Langkah pertama: langsung registrasi akun kamu lewat web vault. Bikin Master Password yang beneran panjang dan kuat. Saran aku: pakai kombinasi 4 sampai 5 kata acak yang gampang kamu ingat tapi mustahil ditebak orang (metode passphrase).

Begitu akun kamu udah jadi dan bisa login, langsung matikan fitur registrasi publik biar server kamu gak disusupi orang lain yang numpang nyimpen password.

Buka lagi docker-compose.yml:

    environment:
      - DOMAIN=https://vault.domainkamu.com
      - SIGNUPS_ALLOWED=false      # Wajib diubah jadi false!
      - INVITATIONS_ALLOWED=true   # Kalau mau undang orang rumah, bisa kirim invite lewat email

Restart container-nya buat menerapkan setelan baru:

docker compose up -d

Sekarang tombol "Create Account" di halaman depan bakal mati. Orang luar gak bakal bisa bikin akun baru lagi.

2. Nyalain Firewall Server (UFW)

Tutup semua port yang gak perlu. Yang boleh dibuka dari luar cuma SSH dan Web:

sudo apt install -y ufw
 
# Setel aturan default
sudo ufw default deny incoming
sudo ufw default allow outgoing
 
# Buka cuma yang kita butuhin
sudo ufw allow 22/tcp    # Port SSH
sudo ufw allow 80/tcp    # Port HTTP
sudo ufw allow 443/tcp   # Port HTTPS
 
# Aktifkan firewall
sudo ufw enable
sudo ufw status verbose

Port internal Vaultwarden (8080 & 3012) gak bakal bisa ditembak langsung dari internet karena udah dijaga UFW dan Nginx.

3. Pasang Cloudflare Proxy di Depan

Kalau domain kamu dikelola di Cloudflare, aktifkan tanda awan oranye (Proxy):

  • Sembunyiin IP Asli: IP asli VPS kamu gak bakal keliatan pas di-ping atau di-traceroute.
  • SSL Full (Strict): Setel encryption mode di Cloudflare ke Full (Strict) karena server kita udah punya sertifikat Let's Encrypt yang sah.
  • Proteksi DDoS & Bot: Serangan spam atau brute force login bakal difilter duluan di jaringan Cloudflare sebelum nyampe ke server kamu.

4. Wajibkan Two-Factor Authentication (2FA)

Login ke Web Vault > buka Settings > Security > Two-Step Login.

Langsung aktifkan 2FA pakai aplikasi authenticator (misal Aegis, Ente Auth, atau Google Authenticator), atau colok security key kayak YubiKey kalau punya. Jangan lupa simpen recovery code-nya di tempat aman fisik (catat di buku offline).


Langkah 5: Setup Backup Otomatis ke Cloud

Backup itu ibarat asuransi: kita berharap gak bakal pernah kepake, tapi kalau suatu hari storage VPS corrupt atau server kena musibah, file backup ini yang bakal nyelamatin hidup kamu.

Semua data Vaultwarden ada di dalam folder ~/vaultwarden/data/ (termasuk file database db.sqlite3 dan folder attachments). Jadi yang perlu kita amankan cuma folder itu doang.

Cara Praktis Backup Otomatis Pakai rclone

Biar gak perlu repot backup manual tiap minggu, kita otomatisasi backup-nya tiap tengah malam dan langsung lempar ke Google Drive, AWS S3, atau Backblaze B2 pakai tool sakti bernama rclone.

  1. Install rclone:

    sudo apt install -y rclone
    rclone config   # Ikuti panduannya buat nyambungin ke Google Drive atau S3
  2. Bikin script backup di /usr/local/bin/backup-vaultwarden.sh:

    sudo nano /usr/local/bin/backup-vaultwarden.sh

    Isi dengan script bash sederhana ini:

    #!/usr/bin/env bash
    set -euo pipefail
     
    BACKUP_DIR="/tmp/vw-backups"
    DATE=$(date +%Y%m%d_%H%M%S)
    BACKUP_FILE="${BACKUP_DIR}/vaultwarden_${DATE}.tar.gz"
    REMOTE_DEST="gdrive:/Backups/Vaultwarden"
     
    mkdir -p "$BACKUP_DIR"
     
    # Kompres folder data ke file tar.gz
    tar -czf "$BACKUP_FILE" -C /home/username/vaultwarden data/
     
    # Upload file backup ke cloud remote
    rclone copy "$BACKUP_FILE" "$REMOTE_DEST"
     
    # Hapus file sementara di server lokal
    rm -f "$BACKUP_FILE"
     
    # Hapus backup di cloud yang umurnya udah lebih dari 30 hari (biar gak menuhin storage)
    rclone delete --min-age 30d "$REMOTE_DEST"

    Kasih izin eksekusi:

    sudo chmod +x /usr/local/bin/backup-vaultwarden.sh
  3. Pasang di cron job biar jalan otomatis tiap jam 2 subuh:

    crontab -e

    Tambahin baris ini di paling bawah:

    0 2 * * * /usr/local/bin/backup-vaultwarden.sh >/dev/null 2>&1

Tidur pun jadi tenang karena data kamu selalu punya salinan fresh di tempat lain.


Langkah 6: Cara Pakai di Browser, Desktop, dan HP

Server udah beres, keamanan udah paten, backup udah jalan. Sekarang saatnya kita sambungin semua perangkat kerja kita.

Sekali lagi: kamu gak butuh aplikasi aneh-aneh. Unduh aja aplikasi resmi Bitwarden di platform mana pun yang kamu mau. Rahasia integrasinya cuma satu: ganti Server URL sebelum login.

1. Ekstensi Browser (Chrome, Firefox, Brave, Edge)

  1. Pasang ekstensi Bitwarden dari Chrome Web Store atau Firefox Add-ons.
  2. Klik icon Bitwarden di toolbar browser.
  3. Di pojok kiri atas jendela login, klik icon Gear / Gerigi (Settings).
  4. Di kolom Server URL, ketik alamat domain Vaultwarden kamu:
    https://vault.domainkamu.com
  5. Simpan, terus login pakai email dan master password kamu.
  6. Beres! Sekarang tiap kali kamu buka form login di website, Bitwarden bakal otomatis nawarin buat auto-fill password atau nyimpen akun baru.

2. Aplikasi Desktop (Windows, macOS, Linux)

  1. Download installer Bitwarden Desktop dari bitwarden.com/download.
  2. Pasang dan buka aplikasinya.
  3. Sebelum ketik email, klik icon Settings di layar awal.
  4. Masukin Server URL https://vault.domainkamu.com, simpan, lalu login.
  5. Kamu bisa aktifkan fitur biometrik (Windows Hello atau Touch ID di Mac) biar gak perlu ketik master password panjang setiap kali buka aplikasi.

3. Smartphone (Android & iOS)

  1. Download aplikasi Bitwarden dari Google Play Store atau App Store.
  2. Buka aplikasi, pilih tombol Log in.
  3. Di layar awal login, cari icon Gear (Settings) di pojok atas.
  4. Di opsi Self-hosted environment, isi kolom Server URL dengan domain kamu.
  5. Login seperti biasa dan aktifkan biometrik (Fingerprint / Face ID).
  6. Wajib aktifkan fitur Auto-fill bawaan HP:
    • Di Android: Buka Settings > Passwords & Accounts (atau Languages & Input) > pilih Autofill service > ganti ke Bitwarden.
    • Di iPhone / iPad: Buka Settings > Passwords > Password Options > centang Bitwarden.

Sekarang, tiap kali buka aplikasi apa pun di HP yang minta login, keyboard bakal otomatis nampilin tombol isi password dari Bitwarden.


Tips Sehari-hari Biar Brankas Tetep Bersih

Biar pengalaman pakai password manager kamu makin maksimal:

  • Selalu Pakai Password Generator: Jangan pernah ngarang password sendiri lagi. Tiap kali daftar akun baru di internet, klik kanan di form pendaftaran > Bitwarden > Generate password. Pasang panjang minimal 16–20 karakter acak.
  • Manfaatkan TOTP Bawaan: Kalau ada website yang nyediain 2FA, copy kode secret-nya ke kolom Authenticator Key (TOTP) di Vaultwarden. Jadi pas login, ekstensi bakal otomatis nyalin kode OTP 6-angka ke clipboard kamu. Praktis banget!
  • Kirim Rahasia Pakai Fitur Send: Kalau mau ngirim password WiFi ke tamu atau kirim token API sensitif ke temen kantor, pakai fitur Bitwarden Send. Kamu bisa setel link-nya otomatis hangus dan terhapus setelah 1 jam atau setelah sekali dibaca.
  • Cek Menu Reports Secara Berkala: Buka Web Vault dan intip tab Reports. Di situ kamu bisa liat apakah ada password lama kamu yang pernah bocor di internet (data breach), password yang lemah, atau akun penting yang belum kamu pasangin 2FA.

Kesimpulan: Worth It Gak Sih?

Bagi sebagian orang, nyiapin VPS, ngatur Nginx, dan ngurusin Docker mungkin kedengeran ada usahanya di awal. Tapi setelah semuanya jalan, kamu punya brankas password sekelas korporat enterprise yang:

  • Gak bergantung sama server pihak ketiga.
  • Ringan banget di server (RAM 50 MB doang!).
  • Semua fitur premium aktif gratis.
  • Privasi 100% milik kamu.

Sekali setup, kamu bisa nikmatin brankas password yang aman, nyaman, dan bikin hidup jauh lebih tenang tanpa drama lupa password lagi. Selamat mencoba dan selamat ngoprek!

Tags:#password-manager#self-host#security#docker#linux