A personal journal.

Vaultwarden di Fly.io: Deploy dan Nikmati

Published on: 28/08/2022 • Updated on: 13/05/2025 • 3 min read

{{< callout emoji=“💡” >}}

Untuk deploy yang lebih mudah, cek postingan v2 saya, post ini sebagai riwayat saja ;)

{{< /callout >}}

Dari alternatif yang saya dapatkan kemarin, saya memeriksa satu per satu dan ternyata hanya fly.io yang menyediakan layanan untuk men-deploy Docker ‘on-the-fly’. Tidak hanya itu, fly.io juga memberikan IP anycast untuk setiap aplikasi yang diunggah. Jadi, kita dapat dengan mudah menggunakan domain yang kita punya supaya lebih keren.

Jujur sebagai pemula, awalnya saya bingung bagaimana caranya menggunakan layanan dari fly.io, meskipun mereka memberikan dokumentasi, ternyata tidak mudah dipahami oleh awam seperti saya. Namun, pada akhirnya sekarang saya sudah bisa melakukan deploy dan menggunakannya.

Oke langsung lanjut ke tutorialnya saja:

Persiapan

Install flyctl tutorial bisa kamu lihat dari website Fly.io berikut.

Login dengan fly auth login (Kamu juga bisa mendaftar terlebih dahulu, apabila punya akun GitHub akan lebih mudah).

Lakukan clone Vaultwarden

git clone https://github.com/dani-garcia/vaultwarden.git

Inisialisasi project ke flyctl

Masuk ke dalam folder vaultwarden dan ketik fly launch, flyctl akan mendeteksi bahwa folder vaultwarden kita berupa Docker.

Kamu akan diminta untuk memberikan nama projectnya. Sama seperti di Heroku, nama project fly.io harus unik. Atau bisa juga langsung kamu enter untuk menggunakan nama yang auto-generated.

Bagian Select organization, cuma ada pilihan personal, skip.

Bagian ‘Region’ tentu pilih lokasi server yang paling dekat dengan Indonesia, yaitu ‘Singapore’.

flyctl menuliskan pengaturan deploynya ke file fly.toml. Setelah itu, kita akan ditanya apakah ingin deploy langsung atau tidak. Kebetulan secara default tidak, jadi kita bisa langsung pencet enter untuk lanjut ke langkah berikutnya.

Membuat persistent storage di fly

Menurut dokumentasi Vaultwarden, Vaultwarden secara default (dan disarankan) akan menggunakan database jenis SQLite. Menurut saya, database ini sudah cukup karena kita tidak perlu mengurus server MySQL/PostgreSQL. Meskipun fly.io juga menyediakan PostgreSQL, mengingat ada fitur send di Vaultwarden, saya pikir database jenis SQLite sudah OK.

Perintah untuk trial account friendly adalah berikut :

fly volumes create vaultdata --region sin --size 1

Penjelasannya :

vaultdata : nama volumenya, silahkan diganti.

--region sin : kode region Singapore, terdekat dengan Indonesia.

--size 1 : untuk akun free, fly.io hanya memberikan gratis 1 GB saja. Dimana kalau untuk ukuran database passoword saja sudah lebih dari cukup. Sedangkan yang sudah menambahkan CC, bisa mengubah angkanya menjadi 3.

Sama seperti ketika menginisialisasi proyek, kamu akan dimintai data nama volume dan lokasi server. Yang perlu diperhatikan menurut dokumentasi dari fly.io:

Volumes are, by default, created with encryption-at-rest enabled for additional protection of the data on the volume. Use –no-encryption to instead create an unencrypted volume for improved performance at deployment and runtime.

Silahkan bagi kamu yang ingin mengamankan volumenya, kalau tidak berarti kamu harus menambahkan --no-encryption setelah command diatas.

Setelah jadi, kita perlu menambahkan beberapa baris berikut ke fly.toml

[mounts]
source="vaultdata"
destination="/data"

Secara default, vaultwarden akan menyimpan datanya ke /data, jadi kita tinggal sesuaikan saja. Jika ingin menggunakan direktori lain, kamu bisa cek dokumentasi dari vaultwarden. Dari sini, volume sudah siap digunakan.

Persiapan deploy

Yang kurang dari langkah ini hanyalah, env yang dibutuhkan di Vaultwarden dan atur Dockerfile.

Untuk docker file saya, isinya hanya FROM vaultwarden/server:latest. Sedangkan dari fly.toml tambahan isinya mount di atas, dan beberapa env untuk vaultwarden. Setting minimal yang kamu butuhkah adalah untuk mengatur ADMIN_TOKEN (bagi yang ingin punya halaman admin), lebih baiknya ADMIN_TOKEN diatur di secrets, tapi untuk kali ini saya masukkan ke dalam fly.toml saja. secret nya besok ketika upgrade vaultwarden saja.

Kurang lebih isi dari fly.toml akan seperti ini

[env]
  ADMIN_TOKEN="Vy2VyYTTsKPv8W5aEOWUbB/Bt3DEKePbHmI4m9VcemUMS2rEviDowNAFqYi1xjmp" # contoh token dari github

Jika sudah simpan dan kamu sudah siap, langsung saja panggil fly deploy

Proses deploy.

Proses deploy tidaklah lama, hanya sekitar 3 menit, jika dibandingkan dengan menggunakan Heroku dengan repo dari sini yang memakan waktu sekitar 15 menit. Build pun dilakukan on-the-fly, tapi jika di perangkat kalian ada Docker, maka akan dibangun di lokal.

Setelah deploy, mesin dari fly.io akan mentransfer hasilnya ke dalam project kita, melakukan checking, dan memberikan subdomain, IPv4 maupun IPv6. Sungguh murah hati sekali fly.io ini. Selesai!

Dari sini, kamu bisa langsung menggunakan vaultwarden dari fly.io dan tentunya loadnya sangat cepat dibanding dengan heroku yang harus cold booting dyno nya.

Untuk tutorial mengganti domain (sebenarnya kita tidak bisa mengganti domain, cuma menggunakan domain lain ya, pointing saja) akan saya tuliskan di post berikutnya. Selamat mencoba!