Install Vaultwarden dengan Docker dan Cloudflare

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

1
2
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)
1
mkdir -p $HOME/.local/share/vaultwarden
  1. Buat file docker-compose.yml di dalam folder tersebut:
1
nano $HOME/.local/share/vaultwarden/docker-compose.yml
  1. Salin dan tempel konfigurasi berikut ke dalam file docker-compose.yml:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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

  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
DOMAIN

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

  1. Create a Tunnel & Pilih Clouflared

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

  1. Setelah di decode maka akan dapat format JSON seperti ini
1
{ "a": "MyAccountTag123", "t": "MyTunnelID123", "s": "MyTunnelSecret123" }

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
1
2
3
4
5
{
  "AccountTag": "MyAccountTag123",
  "TunnelID": "MyTunnelID123",
  "TunnelSecret": "MyTunnelSecret123"
}
token.json

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}

1
2
3
4
5
6
7
--- 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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
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
1
docker-compose up -d

Menjalankan vaultwarden di docker

Jika perintah diatas error, bisa menggunakan perintah dibawah ini

1
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

  1. Stop docker dengan CTRL+C lalu jalankan perintah
1
sudo docker compose down
  1. Edit file docker-compose.yml untuk menonaktifkan pendaftaran user baru Ganti dari SIGNUPS_ALLOWED: "true" menjadi SIGNUPS_ALLOWED: "false"
1
2
3
4
5
6
7
8
--- 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:
1
docker-compose up -d
  1. Untuk melihat log dari docker, bisa menggunakan perintah berikut:
1
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: Isi URL Vaultwarden Extension: Save

Extension: Isi email yang didaftarkan Extension: Isi password yang didaftkarkan 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.

Dibangun dengan Hugo
Tema Stack dirancang oleh Jimmy