— sekitar 5 menit membaca

FreeBSD migrasi ke pkgbase vol.2: JAIL

Migrasi host sudah selesai dengan lancar dan baik, lalu bagaimana dengan jail? sedikit ruwet, kadang sampai putus asa, trial and error. Agak aneh tapi berhasil

Setelah sukses melakukan migrasi host #FreeBSD ke metode pkgbase dengan pkgbasify, maka sekarang saatnya untuk melakukan migrasi jail.

Ane berfikiran kalo caranya pasti sama yaitu dengan masuk ke dalam jail kemudian unduh file pkgbasify.lua, beri atribut eksekusi, dan jalankan, kemudian tunggu sampai selesai. Ternyata tidak! Saat menjalankan pkgbasify.lua dari dalam jail muncul banyak masalah termasuk diantaranya berkaitan dengan atribut, permission dan upgrade pkg.

Melakukan migrasi dari dalam jail tidak bisa dilakukan, apalagi jail ane bertipe thin jail yaitu jail yang system filesnya merupakan symbolic links atau symlinks dari system files di host yang didapat dengan proses bootstraping. Karena cuma berbentuk symlinks maka ukuran jail ini cukup kecil, ringan, dan bisa dibuat dengan cepat.

Selain itu thin jail memiliki keterbatasan hanya beberapa direktory tertentu yang bisa ditulisi, sehingga proses migrasi tidak akan selesai karena pkgbasify tidak bisa menimpa files di dalam jail. Ane sudah mencoba beberapa kali namun selalu terkena error saat mencoba menimpa files di folder /etc.

Permasalahan ini bisa diatasi dengan melakukan migrasi dari host dengan memanfaatkan opsi --jail dari pkgbasify namun ada beberapa hal yang harus diperhatikan, ini adalah catatan ane saat melakukan migrasi jail ke pkgbase.

Lakukan di host dan sabar #

Ane akan migrasi jail dengan nama postgres yaitu jail yang didedikasikan sebagai server database postgresql.

  1. Matikan semua service yang penting dan lakukan backup data!. Sebelum memulai ada baiknya untuk mematikan service secara “normal” dan melakukan pencadangan files maupun data penting. Ini untuk menghindari resiko terjadinya kegagalan saat proses, ingat pkgbasify masih bersifat eksperimen dan belum tentu selalu sukses!.

      $ mkdir -p /tmp/jail
      $ mdo bastille cmd postgres service postgresql stop
      $ mdo bastille stop postgres
      $ mdo bastille export --tgz postgresql /tmp/jail
    
  2. Rubah konfigurasi jail postgres untuk mengijinkan perubahan dan melunakkan tingkat keamanan atau security level.

      $ mdo bastille edit postgres
        postgres {
                  ...
                  allow.chflags;
                  securelevel = -1;
                  ...
        }
    

    tambahkan atau rubah konfigurasi jail postgres seperti kode di atas. Ane rubah securelevel= -1; untuk membuka proteksi untuk sementara.

  3. Lakukan update pkg di jail. Perintah ini bisa dilakukan di dalam jail atau dari host, namun pengalaman ane saat dijalankan dari host kemungkinan sukses untuk migrasi lebih besar.

      $ mdo pkg -j postgres update -f
      $ mdo pkg -j postgres upgrade -y
    

    Biasanya jika pkg di dalam jail jarang diperbarui maka, sistem akan melakukan update paket pkg baru melakukan update repository, jadi lakukan berulang sesuai dengan kebutuhan.

  4. Unduh pkgbasify dan mulai migrasi. Unduh aplikasi pkgbasify.lua dari host dan kemudian lakukan migrasi. Tidak perlu masuk ke dalam jail, peluang untuk sukses dan berhasil menimpa files dan folder lebih baik dilakukan dari host.

      $ mkdir -p /tmp/pkgbasify 
      $ cd /tmp/pkgbasify
      $ fetch https://github.com/FreeBSDFoundation/pkgbasify/raw/refs/heads/main/pkgbasify.lua
      pkgbasify.lua                           21 kB 11MBps    00s
      $ chmod +x pkgbasify.lua
      $ mdo ./pkgbasify.lua --jail postgres
      Running this tool will irreversibly modify your system to use pkgbase.
      This tool and pkgbase are experimental and may result in a broken system.
      It is highly recommended to backup your system before proceeding.
      Do you accept this risk and wish to continue? (y/n) y
    
  5. Tunggu sampai selesai dan kemudian restart jail. Namun pastikan apakah isi dari file konfigurasi password, groups, dan SSH sudah benar. Ane ga pakai konfigurasi ini jadi ane anggap benar saja.

        --
        After upgrading local-unbound, the configuration file should be regenerated
        by running "service local_unbound setup" before restarting the service.
        Restarting sshd
        Performing sanity check on sshd configuration.
        Stopping sshd.
        Waiting for PIDS: 62777.
        Performing sanity check on sshd configuration.
        Starting sshd.
        Conversion finished.
        
        Please verify that the contents of the following critical files are as expected:
        /etc/master.passwd
        /etc/group
        /etc/ssh/sshd_config
        
        After verifying those files, restart the system.
    
      $ mdo bastille restart postgres
      $ mdo pkg -j postgres which /bin/ls
        /bin/ls was installed by package FreeBSD-runtime-15.1p1
    

    pemeriksaan paket ls sudah menampilkan kalo paket tersebut dipasang oleh FreeBSD-runtime pkgbase. Sampai disini jail sudah sukses dimigrasi.

  6. Kembalikan konfigurasi jail terutama securelevel. Setelah migrasi benar telah selesai maka perlu mengembalikan pengaturan securelevel ketingkat lebih tinggi untuk keamanan. Kemudian restart jail untuk mengaplikasikan perubahan.

    $ mdo bastille edit postgres
      postgres {
                ...
                securelevel = 2;
                ...
      }
    $ mdo bastille restart postgres
    $ mdo bastille cmd postgress service postgresql start
    

Update PKGBase #

Jika sebelum PKGBase proses update dengan mempergunakan freebsd-update maka sekarang berubah. Semua proses bisa dilakukan dengan bantuan pkg.

$ mdo pkg -j [nama jail] update
$ mdo pkg -j [nama jail] upgrade -r FreeBSD-base

Namun untuk ini pengaturan securelevel harus tetap diatur di nilai -1.


Daftar Pustaka. #
  1. Dan Langille, Running pkgbasify on a FreeBSD 15.0 jail, Dan Langille’s Other Diary, 2026
  2. BastilleBSD, Converting to Pkgbase, BastilleBSD Docs, 2025
  3. The FreeBSD Foundation, pkgbasify convert a FreeBSD system to use pkgbase, Github, 2026
  4. The FreeBSD Foundation, FreeBSD Handbook chapter 16. Security: Secure Level, FreeBSD Handbook, 2026

Artikel terkait #freebsd

FreeBSD migrasi ke pkgbase vol.2: JAIL

Migrasi host sudah selesai dengan lancar dan baik, lalu bagaimana dengan jail? sedikit ruwet, kadang sampai putus asa, trial and error. Agak aneh tapi berhasil

FreeBSD migrasi ke pkgbase

masa depan proses update - upgrade FreeBSD yang akan menggantikan freebsd-update

Backup database dengan Litestream

Ane pakai untuk backup database sqlite3 dan sejauh ini, ini yang paling bagus meski sedikit ruwet.

Serba-serbi package manager di FreeBSD

untuk memperbarui package atau menambal celah keamanan.

Blocklistd: cara ampuh menghalau penyusup di FreeBSD

pasangkan dengan SSH Guard maka ane punya pertahanan berlapis.