Logo eza.web.id

Install Vaultwarden dengan Docker dan Cloudflare

6 Maret 2025
7 menit untuk membaca
Table of Contents

Apa itu Vaultwarden?

Vaultwarden adalah implementasi ringan dan tidak resmi dari Bitwarden, yaitu layanan pengelola kata sandi sumber terbuka (open-source). Vaultwarden ditulis dalam bahasa Rust dan dirancang agar lebih hemat sumber daya dibandingkan dengan server resmi Bitwarden.

Vaultwarden sering digunakan oleh pengguna yang ingin menjalankan self-hosted Bitwarden di perangkat dengan spesifikasi rendah, seperti Raspberry Pi, VPS dengan spesifikasi yang rendah. Meskipun lebih ringan, Vaultwarden tetap kompatibel dengan aplikasi klien Bitwarden resmi (web, desktop, dan mobile), sehingga pengguna tetap dapat menyinkronkan dan mengelola kata sandi mereka dengan aman.

Keunggulan Vaultwarden

  • Lebih Ringan dan Lebih Cepat: Vaultwarden jauh lebih ringan karena menggunakan Rust, yang dikenal karena efisiensi sumber daya. Bitwarden, di sisi lain, membutuhkan lebih banyak sumber daya, terutama dalam hal CPU dan memori. Vaultwarden lebih cocok untuk digunakan di perangkat dengan keterbatasan sumber daya, seperti Raspberry Pi atau server pribadi kecil.
  • Hosting Sendiri (Self-Hosting): Vaultwarden memungkinkan untuk menghosting sendiri server Bitwarden di perangkat atau server pribadi. Ini memberi kontrol penuh atas data tanpa bergantung pada layanan cloud pihak ketiga. Jika ingin menggunakan Bitwarden dengan opsi self-hosting, Vaultwarden adalah pilihan yang lebih mudah diatur dan lebih ringan dibandingkan Bitwarden asli yang memerlukan server dengan kapasitas lebih besar.
  • Kompatibilitas dengan Bitwarden: Vaultwarden sepenuhnya kompatibel dengan klien resmi Bitwarden (aplikasi desktop, mobile, dan browser extension), sehingga masih dapat menikmati antarmuka dan fungsionalitas Bitwarden sambil meng-hosting server sendiri menggunakan Vaultwarden.
  • Biaya: Vaultwarden adalah proyek open-source yang dapat diunduh dan digunakan secara gratis tanpa biaya berlangganan. Bitwarden menawarkan model freemium di mana penggunaan dasar gratis, tetapi fitur premium seperti penyimpanan dua faktor, pelaporan pelanggaran, dan lainnya memerlukan langganan berbayar. Untuk orang yang hanya membutuhkan penyimpanan kata sandi pribadi dan tidak ingin membayar biaya langganan, Vaultwarden bisa menjadi pilihan yang lebih hemat biaya.
  • Kemudahan Pemasangan: Vaultwarden lebih mudah untuk dipasang di berbagai platform, seperti Docker, Raspberry Pi, atau server pribadi lainnya. Bitwarden, meskipun juga memiliki opsi self-hosting, bisa lebih kompleks dan membutuhkan lebih banyak konfigurasi.
  • Penggunaan Sumber Daya yang Efisien: Vaultwarden lebih hemat dalam penggunaan memori dan CPU karena lebih minimalis dalam hal kebutuhan sistem. Bitwarden membutuhkan lebih banyak sumber daya, terutama dalam kasus self-hosting dengan pengaturan database yang lebih besar.

Apa yang Dibutuhkan?

  1. Pastikan memiliki domain yang sudah terkoneksi dengan Cloudflare.
  2. Sistem Operasi Linux dengan distro Debian, tepatnya Debian 12 (bookworm).
  3. Docker, ini bisa di install dari repository Debian.

Install Vaultwarden

Untuk menginstall Vaultwarden, kita akan menggunakan Docker. Pastikan Docker sudah terinstall di sistem. Jika belum, bisa mengikuti langkah-langkah berikut:

Install Docker

Terminal window
sudo apt update
sudo apt install docker.io docker-compose

Docker Compose

Docker Compose adalah alat yang memungkinkan kita untuk mendefinisikan dan menjalankan aplikasi multi-kontainer Docker. Dengan Docker Compose, kita dapat menggunakan file YAML untuk mengkonfigurasi layanan aplikasi, termasuk kontainer, jaringan, dan volume yang diperlukan.

  1. Buat folder untuk menyimpan data Vaultwarden dan Cloudflare (disini disimpan di $HOME/.local/share/vaultwarden)
Terminal window
mkdir -p $HOME/.local/share/vaultwarden
  1. Buat file docker-compose.yml di dalam folder tersebut:
Terminal window
nano $HOME/.local/share/vaultwarden/docker-compose.yml
  1. Salin dan tempel konfigurasi berikut ke dalam file docker-compose.yml:
docker-compose.yml
services:
vaultwarden:
restart: unless-stopped
container_name: vaultwarden
image: vaultwarden/server:latest
environment:
DOMAIN: 'https://vaultwarden.example.org'
SIGNUPS_ALLOWED: 'true'
INVITATIONS_ALLOWED: 'false'
volumes:
- ./vw-data:/data
networks:
- vaultwarden-network
17 collapsed lines
cloudflared:
restart: unless-stopped
image: cloudflare/cloudflared:latest
container_name: vaultwarden-cloudflared
read_only: true
volumes:
- ./cloudflared-config:/root/.cloudflared/
command: ['tunnel', 'run', '${TUNNEL_ID']
user: root
depends_on:
- vaultwarden
networks:
- vaultwarden-network
networks:
vaultwarden-network:
name: vaultwarden-network
external: false

Ganti DOMAIN: https://vaultwarden.example.org dengan domain yang didaftarkan di Cloudflare.

Configurasi Cloudflare

Pastikan sudah login ke Cloudflare dan sudah membuat domain yang akan digunakan. Setelah itu, kita perlu membuat tunnel di Cloudflare untuk menghubungkan Vaultwarden dengan domain kita.

Membuat Tunnel di Zero Trust

  1. Login ke akun Cloudflare dan masuk ke bagian Zero Trust
  2. Klik pada bagian Networks dan pilih Tunnels
Cloudflare Zero Trust Dashboard
Cloudflare Zero Trust Dashboard
  1. Create a Tunnel & Pilih Clouflared
Create Tunnel di Zero Trust
Create Tunnel di Zero Trust
  1. Beri nama tunnel sesuai keinginan dan Save tunnel
  2. Copy token dan decode menggunakan base64
    Token dimulai dari eyJhIjoiMj…
Copy Token dari Tunnel yang baru dibuat
Copy Token dari Tunnel yang baru dibuat
  1. Setelah di decode maka akan dapat format JSON seperti ini
token.json
{ "a": "MyAccountTag123", "t": "MyTunnelID123", "s": "MyTunnelSecret123" }
Decode token menggunakan base64
Decode token menggunakan base64

Setting token.json

  1. Masuk ke $HOME/.local/share/vaultwarden/cloudlared-config/root/.cloudflared
  2. Buat file dengan nama token.json
  3. Masukan baris berikut
token.json
{
"AccountTag": "MyAccountTag123",
"TunnelID": "MyTunnelID123",
"TunnelSecret": "MyTunnelSecret123"
}

a diganti dengan AccountTag
t diganti dengan TunnelID
s diganti dengan TunnelSecret

Edit docker-compose.yml

Jangan lupa untuk edit docker-compose.yml untuk mengganti ${TUNNEL_ID}

docker-compose.yml
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -20,7 +20,7 @@
volumes:
- ./cloudflared-config:/root/.cloudflared/
- command: ["tunnel", "run", "${TUNNEL_ID"]
+ command: ["tunnel", "run", "MyTunnelID123"]

Settings Cloudflared

  1. Masuk ke $HOME/.local/share/vaultwarden/cloudlared-config
  2. Buat file dengan nama config.yml
  3. Copy dan Edit baris berikut lalu save
config.yml
tunnel: TunnelID # Ganti dengan TunnelID yang didapat pada langkah sebelumnya
credentials-file: /root/.cloudflared/token.json
originRequest:
noHappyEyeballs: true
disableChunkedEncoding: true
noTLSVerify: true
ingress:
- hostname: vaultwarden.example.org # Ganti domain dengan milik kalian
service: http_status:404
path: admin
- hostname: vaultwarden.example.org # Ganti domain dengan milik kalian
service: http://vaultwarden
- service: http_status:404

Menjalankan Vaultwarden

Jika semua langkah diatas sudah dijalankan, selanjutnya tinggal menjalankan Vaultwarden via Docker

  1. Masuk ke $HOME/.local/share/vaultwarden
  2. jalankan perintah berikut
Terminal window
docker-compose up -d
Menjalankan vaultwarden di docker
Menjalankan vaultwarden di docker

Jika perintah diatas error, bisa menggunakan perintah dibawah ini

Terminal window
sudo docker compose up
  1. Jika tidak ada error, buka domain yang di setting di docker-compose.yml
  2. Seharusnya halaman login Vaultwarden bisa terlihat dan daftarkan akun disana
Halaman awal Vaultwarden
Halaman awal Vaultwarden
  1. Stop docker dengan CTRL+C lalu jalankan perintah
Terminal window
sudo docker compose down
  1. Edit file docker-compose.yml untuk menonaktifkan pendaftaran user baru Ganti dari SIGNUPS_ALLOWED: "true" menjadi SIGNUPS_ALLOWED: "false"
docker-compose.yml
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -6,7 +6,7 @@
environment:
DOMAIN: 'https://vaultwarden.example.org'
- SIGNUPS_ALLOWED: 'true'
+ SIGNUPS_ALLOWED: 'false'
INVITATIONS_ALLOWED: 'false'
  1. Selanjutnya untuk menjalankan docker di background, bisa menggunakan perintah berikut:
Terminal window
docker-compose up -d
  1. Untuk melihat log dari docker, bisa menggunakan perintah berikut:
Terminal window
docker-compose logs -f

Menggunakan Vaultwarden di Ekstensi Bitwarden

  1. Pada Accessing pilih Self-hosted
  2. Isi URL dengan domain kalian dan harus memakai https:// Contoh: https://vaultwarden.example.org
  3. Login dengan akun Vaultwarden yang dibuat
  4. Selesai
Extension: Pilih menu Self-hosted
Extension: Pilih menu Self-hosted
Extension: Isi URL Vaultwarden
Extension: Isi URL Vaultwarden
Extension: Save
Extension: Save
Extension: Isi email yang didaftarkan
Extension: Isi email yang didaftarkan
Extension: Isi password yang didaftkarkan
Extension: Isi password yang didaftkarkan
Extension: Login
Extension: Login

Kesimpulan

Vaultwarden adalah solusi yang sangat baik untuk mengelola kata sandi secara mandiri. Dengan menggunakan Docker dan Cloudflare, kita dapat dengan mudah mengatur dan mengamankan Vaultwarden di server pribadi kita. Dengan langkah-langkah di atas, sekarang memiliki pengelola kata sandi yang aman dan efisien.

Beberapa hal penting yang perlu diperhatikan:

  1. Backup data secara rutin untuk menghindari kehilangan informasi penting.
  2. Keamanan sistem tetap terjaga dengan selalu memperbarui Docker, Vaultwarden, dan Debian.
  3. Konfigurasi Cloudflare dapat disesuaikan untuk memastikan perlindungan maksimal terhadap layanan yang digunakan.

Vaultwarden kini dapat diakses melalui domain yang telah dikonfigurasi di Cloudflare, baik melalui browser maupun aplikasi mobile, sehingga pengelolaan kata sandi menjadi lebih mudah dan aman.