sebelumnya memindahkan container tak pernah semudah dan secepat ini
Karena suatu alasan, saya perlu untuk migrasi VPS kembali setelah sebelumnya migrasi dari BiznetGio ke Vultr. Tidak ada masalah dengan Vultr, service mereka excellent tapi karena tidak setuju dengan TOS-nya membuat saya memikirkan untuk pindahan (meski TOS sudah diganti setelah viral).
Di VPS Vultr saya mempergunakan OS FreeBSD 14.0 dan membuat beberapa Jail’s untuk menaruh aplikasi web yang saya pergunakan, diantaranya adalah GotoSocial dan Snac2 untuk instance fediverse, kemudian untuk self host comment system , dan untuk landing page subdomain gratisan dari afraid.org (keduanya tidak aktif). Sebagai catatan semua jail’s tersebut saya buat dengan mempergunakan BastilleBSD dan proses perpindahan ini juga memanfaatkan fitur export
dan import
dari BastilleBSD.
Untuk pengguna jail management lainnya seperti ezjail, iocage, cbsd, dan sebagainya juga memiliki fitur yang sama (bisa merujuk ke masing - masing dokumentasinya).
$ doas pkg update
$ doas pkg install bastille
$ bastille --version
0.10.20231125
Secara garis besar prosesnya adalah melakukan archives terhadap container tersebut dengan perintah export
dan kemudian melakukan unachives dengan perintah import
. Perintah ini biasanya juga dipakai untuk mem-backup sebuah container.
Saya akan membagi 2 bagian untuk menandakan masing - masing VPS, yaitu VULTR untuk VPS Vultr dan NEVA untuk VPS NevaCloud.
Hal pertama yang perlu dilakukan adalah mendapatkan data jail yang tersedia, bisa dengan mempergunakan perintah sebagai berikut:
$ doas bastille list all
JID State IP Address Published Ports Hostname Release Path
kauaku Up 192.168.1.2 - kauaku 14.0-RELEASE-p6 /usr/local/bastille/jails/kauaku/root
snac2 Up 192.168.1.4 - keboh 14.0-RELEASE-p6 /usr/local/bastille/jails/snac2/root
Tersebut saya mempunya 2 container/jail’s yang sedang aktif (up
) dan sebagai contoh saya akan memindahkan jail kauaku
ke VPS NEVA. Sebelum memulai ekspor, container harus dimatikan dulu untuk menjaga integritas data.
$ doas bastille stop kauaku
[kauaku]:
kauaku: removed
$ doas bastille export --txz kauaku
Exporting 'kauaku' to a compressed .txz archive...
100 % 1100.7 MiB / 1230.0 MiB = 0.895 8.4 MiB/s 2:48
Exported '/usr/local/bastille/backups/kauaku-05-07-114627.txz' successfully.
Saya mempergunakan option —txz
untuk membuat archive dengan kompresi .txz
karena saya mempergunakan UFS sebagai file system, jika mempergunakan ZFS maka bisa mempergunakan gz
, raw
, maupun xz
. Hasil ekspor akan disimpan di folder backups
di /usr/local/bastille
.
Untuk mempermudah maka saya copy hasil ekspor tadi ke home folder.
$ cp /usr/local/bastille/backups/kauaku-05-07-114627.txz /home/poes
Sampai disini proses yang diharus dilakukan di dalam VPS VULTR sudah selesai.
Di Neva saya juga mempergunakan OS FreeBSD, bedanya adalah saya perlu mengupgrade secara manual karena di Neva hanya tersedia versi 13.0. Setelah selesai dan install BastilleBSD, maka yang harus dilakukan pertama kali adalah mengunduh file backup dari container/jail kauaku tadi. Disini saya pergunakan perintah scp
untuk mengunduh via ssh
$ mkdir container && cd container
$ scp poes@VULTR:/home/poes/kauaku-05-07-114627.txz .
poes@VULTR passwod:
Setelah selesai maka di folder container
akan tersedia file kauaku-05-07-114627.txz
dan proses ekstrak bisa dilakukan
$ ls
kauaku-05-07-114627.txz
$ doas bastille import /home/neva/container/kauaku-05-07-114627.txz
sebagai catatan bastille mengsyaratkan full path untuk menentukan file yang akan di import. Proses import akan segera berjalan dengan bastille mengurai file tersebut, Bastille BSD akan mengimpor semua file dan konfigurasi sama persis dengan aslinya. Saat selesai maka bisa dikonfirmasi apakah container kauaku sudah terdaftar dan bisa dijalankan.
$ doas bastille list all
JID State IP Address Published Ports Hostname Release Path
kauaku Up 192.168.1.2 - kauaku 14.0-RELEASE-p6 /usr/local/bastille/jails/kauaku/root
Selesai, proses migrasi container/jail sudah usai, tapi masih ada beberapa pekerjaan kecil untuk membetulkan konfigurasi terutama di bagian jaringan. Apalagi setiap VPS akan memiliki konfigurasi berbeda.
Jalankan dan chroot ke console container kauaku untuk melakukan sedikit perubahan nameserver
di file /etc/resolv.conf
.
$ doas bastille start kauaku
[kauaku]:
kauaku: created
$ doas bastille console kauaku
[root@kauaku] vim /etc/resolv.conf
# nameserver 9.9.9.9
# nameserver 1.1.1.1
[root@kauaku] pkg update
Jika VPS tidak menyediakan DNS lookup atau nameserver sendiri, saya merekomendasikan untuk pakai nameserver dari Quad9 maupun Cloudflare. Terakhir lakukan update dan upgrade package jika diperlukan.
BastilleBSD menyediakan cara yang mudah untuk migrasi dengan export
-import
ini. Sebelumnya saya memakai cara manual untuk migrasi yang tentu membutuhkan waktu yang lebih lama dan kemungkinan error lebih besar, dengan BastilleBSD semua hanya butuh waktu kurang dari 10 menit sampai container/jail terpasang dan bisa berjalan dengan baik.
Terakhir, agar situs/layanan bisa berjalan dengan baik saya perlu merubah DNS Record untuk domain yang terhubung. Bisa dilakukan di Domain Management. Perubahan ini tentu memerlukan waktu untuk propagansi, biasanya proses propagansi bisa dimonitor melalui DNSChecker.
Selain itu juga perlu mengatur load balancer/reverse proxy serta request sertifikat SSL/TLS yang bisa dilayani dengan gratis oleh CertBot. Saya pribadi mempergunakan nginx sebagai load balancer. Untuk tutorial yang bagus bisa merujuk ke tutorial di DigitalOcean
Berlangganan Artikel
dapatkan notifikasi saat artikel baru diterbitkan, langsung ke dalam inboxmu
Layanan ini didukung oleh Buttondown.