Tutorial Self-Host Password Manager dengan Vaultwarden dan Docker Compose
FA
Faris Aksa

Dipublikasikan 23 Agustus 2026

Tutorial Self-Host Password Manager dengan Vaultwarden dan Docker Compose

Mengelola ratusan password untuk berbagai layanan digital menjadi tantangan nyata bagi developer dan profesional IT. Solusi commercial seperti 1Password atau LastPass menawarkan kemudahan, tetapi data kredensialmu disimpan di server pihak ketiga. Vaultwarden hadir sebagai alternatif self-hosted yang kompatibel dengan ekosistem Bitwarden, memungkinkanmu membangun password manager sendiri dengan biaya minimal dan kontrol penuh. Artikel ini membahas panduan lengkap setup Vaultwarden menggunakan Docker Compose.

Apa itu Vaultwarden?

Vaultwarden adalah implementasi alternatif dari server Bitwarden yang ditulis dalam Rust. Berbeda dengan server official Bitwarden yang membutuhkan minimal 2GB RAM dan menjalankan 6 container terpisah, Vaultwarden menjalankan seluruh fungsionalitas dalam satu binary yang menggunakan kurang dari 50MB RAM. Open Source Alternatives mencatat bahwa Vaultwarden telah mengumpulkan lebih dari 59.000 bintang di GitHub dan menjadi pilihan utama untuk self-hosted password manager individu maupun tim kecil.

Vaultwarden mendukung semua klien resmi Bitwarden: ekstensi browser, aplikasi mobile, desktop, dan CLI. Ini berarti kamu bisa menggunakannya tanpa mengorbankan user experience.

Persiapan VPS dan Domain

Untuk deployment production, siapkan VPS dengan spesifikasi minimal 1 vCPU dan 1GB RAM. Ubuntu 24.04 LTS adalah pilihan yang solid. Pastikan juga memiliki domain yang sudah diarahkan ke IP VPS melalui record A. HTTPS adalah keharusan untuk password manager, jadi domain publik menjadi prasyarat yang tidak bisa ditawar.

Sebelum melanjutkan, pastikan port 80 dan 443 terbuka di firewall. UFW (Uncomplicated Firewall) biasanya aktif secara default di Ubuntu, jadi konfigurasi yang tepat diperlukan nanti.

Langkah 2: Konfigurasi Docker Compose Vaultwarden

Buat direktori khusus untuk Vaultwarden dan buat file docker-compose.yml:

mkdir -p ~/vaultwarden && cd ~/vaultwarden
nano docker-compose.yml

Isi file dengan konfigurasi berikut:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      WEBSOCKET_ENABLED: "true"
      SIGNUPS_ALLOWED: "false"
      ADMIN_TOKEN: "$argon2id$v=19$m=65540,t=3,p=4$..."
    volumes:
      - ./vw-data:/data
    ports:
      - "8080:80"
    networks:
      - vaultwarden-net

networks:
  vaultwarden-net:
    driver: bridge

Sejak versi 1.30, WebSocket notifications sudah terintegrasi ke dalam server utama sehingga tidak perlu lagi mengekspos port 3012 secara terpisah. Ini menyederhanakan konfigurasi reverse proxy dibandingkan panduan lama.

Langkah 3: Setup Reverse Proxy dengan HTTPS

Vaultwarden harus diakses melalui HTTPS. Gunakan Caddy sebagai reverse proxy karena konfigurasinya yang sangat ringkas. Buat file Caddyfile di direktori yang sama:

password.example.com {
    reverse_proxy vaultwarden:80
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        X-Content-Type-Options "nosniff"
        X-Frame-Options "DENY"
    }
}

Tambahkan service Caddy ke docker-compose.yml:

  caddy:
    image: caddy:2-alpine
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    networks:
      - vaultwarden-net

volumes:
  caddy_data:
  caddy_config:

Caddy akan secara otomatis memprovisikan sertifikat Let us Encrypt untuk domainmu.

Langkah 4: Konfigurasi Admin Token dan Environment

Admin token digunakan untuk mengakses admin panel Vaultwarden. Gunakan Argon2id untuk menghasilkan hash yang aman:

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

Copy seluruh string hash yang dihasilkan, termasuk prefix $argon2id. Perhatian: tanda dollar dalam hash bersifat special untuk Docker Compose. Jika kamu memasukkannya langsung ke environment block, gandakan setiap tanda dollar ($ menjadi $$) agar Compose tidak mencoba melakukan interpolasi variabel.

Setelah konfigurasi selesai, jalankan stack:

docker compose up -d

Akses admin panel di https://password.example.com/admin. Di sana kamu bisa mengelola pengguna, melihat log, dan mengkonfigurasi kebijakan keamanan.

Kesimpulan

Vaultwarden memberikan solusi password manager yang powerful dengan resource footprint yang minimal. Dengan Docker Compose, seluruh stack bisa dideploy dalam hitungan menit dan direproduksi dengan mudah di environment lain. Kontrol penuh atas data kredensial adalah nilai tambah yang tidak ternilai, terutama bagi developer yang menghargai privasi dan security. Untuk dokumentasi resmi, kunjungi repository GitHub Vaultwarden.

Langkah 1: Instalasi Docker dan Docker Compose

SSH ke VPS dan update sistem terlebih dahulu. Jalankan perintah berikut secara berurutan:

apt update
apt upgrade -y

Install Docker Engine menggunakan official repository:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
usermod -aG docker \$USER

Verifikasi instalasi dengan docker --version dan docker compose version. Docker Compose V2 kini terintegrasi sebagai plugin sejak Docker Engine 24.0.

Langkah 5: Backup dan Penguatan Keamanan

Backup adalah aspek paling kritis dalam menjalankan password manager. Data Vaultwarden tersimpan di direktori vw-data. Buat script backup harian menggunakan cron:

#!/bin/bash
BACKUP_DIR="/opt/backups/vaultwarden"
mkdir -p \$BACKUP_DIR
tar czf \$BACKUP_DIR/vw-\$(date +%Y%m%d).tar.gz ~/vaultwarden/vw-data

Untuk membersihkan file backup lama, tambahkan perintah rotasi di akhir script. Aktifkan juga proteksi brute-force pada endpoint login menggunakan tools seperti fail2ban. Matikan pendaftaran publik setelah membuat akun utama dengan mengatur SIGNUPS_ALLOWED: "false".

Pastikan backup tersimpan di lokasi terpisah dari server utama. Gunakan object storage seperti AWS S3, Backblaze B2, atau rsync ke mesin lain. redundancy adalah kunci dalam melindungi data kredensial. Selain itu, aktifkan two-factor authentication untuk semua akun Vaultwarden dan gunakan master password yang kuat dengan minimal 16 karakter kombinasi huruf, angka, dan simbol.

Tips Penggunaan Vaultwarden Sehari-hari

Setelah deployment berjalan, ada beberapa praktik terbaik yang perlu diterapkan. Pertama, selalu gunakan generator password bawaan Vaultwarden untuk membuat password unik di setiap layanan. Hindari reuse password meskipun password tersebut terlihat kuat. Kedua, manfaatkan fitur collections untuk mengorganisir password berdasarkan klien atau proyek. Ini sangat berguna jika kamu bekerja dengan banyak tim atau klien freelance.

Ketiga, aktifkan emergency access untuk memberikan akses darurat kepada orang terpercaya. Fitur ini memungkinkan kontak darurat mengakses vault setelah periode tunggu tertentu. Keempat, rutin periksa laporan keamanan di admin panel untuk melihat apakah ada password yang terekspos dalam data breach. Vaultwarden mendukung integrasi dengan Have I Been Pwned untuk pemeriksaan ini.