Hai, Sobat Jagoan! Vaultwarden merupakan alternatif server Bitwarden tidak resmi yang ditulis dalam bahasa Rust. Vaultwarden mendukung koneksi melalui klien Bitwaraden dan memerlukan sumber daya yang cukup ringan dibandingkan dengan layanan Bitwarden resmi.
Caddy sendiri adalah web server modern yang mudah digunakan dan dikenal karena kemampuan otomatisnya dalam mengelola HTTPS menggunakan Let’s Encrypt. Berbeda dengan web server seperti Nginx atau Apache yang memerlukan konfigurasi manual untuk sertifikat SSL, Caddy dapat secara otomatis mengunduh dan memperbarui sertifikat SSL tanpa campur tangan pengguna. Fitur ini sangat berguna untuk pengguna yang ingin mengamankan koneksi Vaultwarden dengan cepat dan tanpa kerumitan konfigurasi tambahan. Selain itu, Caddy mendukung reverse proxy bawaan, sehingga sangat cocok digunakan untuk mengarahkan lalu lintas HTTPS ke layanan Vaultwarden yang berjalan di container Docker.
Artikel kali ini akan membahas cara menginstal Vaultwarden di Ubuntu dengan Docker dan Docker Compose, serta mengamankan koneksi menggunakan Caddy sebagai reverse proxy.
Prasyarat
- Memiliki server VPS Ubuntu
- Memiliki akses user non-root dengan hak akses sudo
- Membuka koneksi port 443 pada UFW
- Memiliki domain yang diarahkan ke server VPS. Kalau belum tahu caranya bisa akses panduan Cara mengarahkan domain ke vps
Fyi, Sob layanan VPS Jagoan Hosting yang dipakai pada artikel ini yaitu Ubuntu versi 22.04.
Step 1: Buat Koneksi SSH VPS
Pertama, buat koneksi SSH ke VPS kamu melalui terminal. Jika menggunakan sistem operasi Windows, kamu bisa menggunakan PuTTY.
Detail informasi awal layanan kamu bisa diakses seperti pada Informasi Awal Layanan VM.
Step 2: Instalasi Docker
Kali ini menggunakan Docker sebagai portainer aplikasi Vaultwardenya, instal menggunakan perintah snap. Tapi, sebelumnya pastikan snapd sudah terpasang dan up-to-date.
Kalau belum terpasang, kamu pasang dulu dengan command:
sudo apt update
sudo apt install snapd
Kalau snap sudah terpasang pastikan up-to-date.
sudo snap install core; sudo snap refresh core
Selanjutnya, install Docker menggunakan snap.
sudo snap install docker
Untuk memastikan Docker terpasang, periksa versinya.
docker --version

Step 3: Konfigurasi dengan Docker Portainer
1. Buat direktori bernama ‘vaultwarden’ pada home direktori dan masuk ke dalamnya.
mkdir -p ~/vaultwarden/caddy
mkdir ~/vaultwarden/caddy-config
mkdir ~/vaultwarden/caddy-data
mkdir ~/vaultwarden/vw-data
cd ~/vaultwarden
Keterangan:
- caddy/ berisi Caddyfile
- caddy-config/, caddy-data/, dan vw-data/ untuk volume data container
2. Buat dan buka file docker-compose.yml.
nano docker-compose.yml
3. Tambahkan baris berikut ini:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
- WEBSOCKET_ENABLED=true
volumes:
- ./vw-data:/data
caddy:
image: caddy:2
container_name: caddy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy:/etc/caddy:ro
- ./caddy-config:/config
- ./caddy-data:/data
environment:
- DOMAIN=https://example.com
- EMAIL=user@example.com
- LOG_FILE=/data/access.log
4. Tambahkan domain atau subdomain kamu di bagian DOMAIN di bawah environment variabel Caddy.
environment:
- DOMAIN=https://example.com
5. Tambahkan alamat email untuk pendaftaran sertifikat TLS/SSL ke value EMAIL pada variabel environment Caddy.
environment:
- DOMAIN=https://example.com
- EMAIL=user@example.com
6. Simpan dan keluar dari editor dengan Ctrl+X, lalu Y dan Enter.
Step 4: Konfigurasi File Caddy
1. Buat dan edit file Caddyfile di dalam folder caddy/
nano ~/vaultwarden/caddy/Caddyfile
2. Kemudian, tambahkan konfigurasi berikut:
{$DOMAIN}:443 {
log {
level INFO
output file {$LOG_FILE} {
roll_size 10MB
roll_keep 10
}
}
# Get a cert by using the ACME HTTP-01 challenge.
tls {$EMAIL}
encode gzip
# Headers to improve security.
header {
# Enable HSTS
Strict-Transport-Security "max-age=31536000;"
# Enable cross-site filter (XSS)
X-XSS-Protection "1; mode=block"
# Disallow the site to be rendered within a frame (clickjacking protection)
X-Frame-Options "DENY"
# Prevent search engines from indexing
X-Robots-Tag "none"
# Remove Caddy branding
-Server
}
# Redirect notifications to the WebSocket.
reverse_proxy /notifications/hub vaultwarden:3012
reverse_proxy vaultwarden:80 {
header_up X-Real-IP {remote_host}
}
}
3. Simpan dan keluar dari editor dengan Ctrl+X, lalu Y dan Enter.
Caddyfile mengkonfigurasi Caddy untuk meneruskan permintaan HTTP dari port ke Vaultwarden dan menambahkan header tambahan untuk meningkatkan keamanan, seperti HTTP Strict Transport Security (HSTS) dan perlindungan Cross-Site Scripting (XSS).
Step 5: Jalankan Vaultwarden
1. Jalankan Vaultwarden menggunakan docker-compose dalam mode detached, proses ini mungkin memerlukan beberapa waktu.
sudo docker-compose up -d

2. Pastikan status Vaultwarden benar-benar berjalan di docker, periksa di kolom STATUS adalah Up.
sudo docker ps
Output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58265fa0914d vaultwarden/server:latest "/start.sh" 20 seconds ago Up 19 seconds (health: starting) 80/tcp vaultwarden
1342973dea62 caddy:2 "caddy run --config …" 20 seconds ago Up 19 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0 .0.0.0:443->443/tcp, :::443->443/tcp, 443/udp, 2019/tcp caddy
Step 6: Tambahan Konfigurasi Keamanan (Opsional)
Untuk meningkatkan kemanan, kamu bisa menerapkan konfigurasi tambahan berikut.
1. Menonaktifkan Registrasi
Secara default, siapapun yang bisa mengakses Vaultwarden kamu ia dapat membuat akun. Ini biasanya berlaku ketika pertama kali membuat instance. Tapi, dapat menimbulkan risiko kemanan di kemudian hari.
Setelah membuat akun, kamu bisa menonaktifkan registrasi dengan mengatur variabel environment SIGNUPS_ALLOWED menjadi false pada docker-compose.yml.
services:
vaultwarden:
... other configuration ...
environment:
- SIGNUPS_ALLOWED=false
... other configuration ...
2. Menonaktifkan Undangan (Invitation)
Vaultwarden memungkinkan pengguna terdaftar dapat mengundang pengguna baru lainnya untuk membuat akun di server. Fitur ini bukan merupakan risiko kemanan selama kamu mempercayai para pengguna. Tapi, kalau kamu satu-satunya pengguna mungkin perlu melakukannya.
Tinggal kamu atur variabel environment INVITATIONS_ALLOWED menjadi false pada docker-compose.yml.
services:
vaultwarden:
... other configuration ...
environment:
- INVITATIONS_ALLOWED=false
... other configuration ...
3. Menonaktifkan Petunjuk Kata Sandi
Petunjuk kata sandi pada Bitwarden biasanya dikirim melalui email. Namun, Vaultwarden dirancang untuk penggunaan pribadi, sehingga petunjuk kata sandi dapat diakses melalui halaman khusus. Fitur ini disediakan agar Anda tidak perlu mengatur layanan email.
Kalau kamu ingin menonaktifkan petunjuk kata sandi, atur variabel SHOW_PASSWORD_HINT menjadi false pada docker-compose.yml.
services:
vaultwarden:
... other configuration ...
environment:
- SHOW_PASSWORD_HINT=false
... other configuration ...
Step 7: Simpan Konfigurasi
Kalau kamu merubah konfigurasi variabel environment seperti pada step 6, kamu kamu restart Vaultwardenya dengan cara:
1. Stop Vaultwarden menggunakan docker-compose
sudo docker-compose down
2. Jalankan kembali Vaultwarden dalam mode detached.
sudo docker-compose up -d
Dengan begini, konfigurasi barumu akan diterapkan.
Step 8: Akses Vaultwarden
Akses domain kamu untuk mulai menggunakan Vaultwarden dan buat akun baru (kalau belum punya). Setelah berhasil masuk, kamu bisa mulai menambahkan data login dan kata sandi ke dalam vault kamu.

Troubleshooting
Kalau domain kamu tidak bisa menampilkan halaman login Vaultwardennya, pastikan:
- Ketika menjalankan ‘docker ps’ mengembalikan bahwa container vaultwarden dan caddy nya berjalan dengan benar.
- Kalau nomor 1 tidak ada masalah, coba pada bagian
{$DOMAIN}:443 {
di Caddyfile ganti menjadi:
domainkamu.com:443 {
Selamat! Langkah-langkah untuk menginstal Vaultwarden dan mengamankannya menggunakan Caddy telah selesai. Kalau ada yang masih bikin bingung, hubungi Tim Support Jagoan Hosting via Live Chat atau Open Ticket ya, Sob!
Hai, Sob! Buat kamu yang udah kepo sama cara pantau monitoring kinerja VPS kamu, yuk ikutin tutorialnya dibawah ini.Tapi, sebenernya Read more
Hai, Sob, kamu suka bingung gimana caranya migrasi file server website ke VPS tanpa cPanel? Yuk, kamu harus banget pantengin Read more
Kamu ingin melakukan login SSH secara otomatis? Gak perlu bingung karena kamu bisa ikutin tutorial di bawah ini untuk melakukan Read more
Hai, Sob! Tahukah kamu, Mengamankan akses ke VPS kamu sangat penting tak terkecuali untuk akses dari SSH. Wah, gimana tuh Read more