Install Cockpit
sudo dnf install cockpit
Setelah proses install, kita akan aktifkan servicesnya dan akan membuatnya otomatis saat ada proses booting. Dan proses mengaktifkan pada proses boot tidak akan bisa dijalankan jika service cockpit belum berjalan, karena itu, yang harus dijalankan adalah service cockpit terlebih dahulu. Tidak sama seperti service lainnya yah, OK.
sudo systemctl start cockpit
sudo systemctl enable --now cockpit.socket
Untuk melihat apakah sudah running atau belum bisa melihat statusnya dengan perintah:
sudo systemctl status cockpit
Setelah itu buka di browser dengan URL IP Address-nya server dengan port 9090, https://192.168.0.248:9090, dan login dengan menggunakan password yang biasa dipakai untuk SSH non-root. Lihat caranya di Setelah Install Rocky Linux, Terus Ngapain?.
Oh iya, tidak sama seperti service lainnya, yang sebelumnya harus kita masukkan ke firewallD agar bisa diakses secara public, karena di Rocky Linux 9 service cockpit default sebagai service yang bertengger di exclude saat kita melakukan install Rocky Linux. Ini salah satu alasan kenapa saya mulai untuk install cockpit.
Anda juga bisa menambahkan komponen lainnya seperti virtual machines, file system browser, file sharing dan lainnya.
cockpit-composer.noarch : Composer GUI for use with Cockpit cockpit-file-sharing.noarch : Cockpit user interface for managing SMB and NFS file sharing. cockpit-machines.noarch : Cockpit user interface for virtual machines cockpit-navigator.noarch : A File System Browser for Cockpit cockpit-packagekit.noarch : Cockpit user interface for packages cockpit-pcp.x86_64 : Cockpit PCP integration cockpit-podman.noarch : Cockpit component for Podman containers cockpit-session-recording.noarch : Cockpit Session Recording cockpit-storaged.noarch : Cockpit user interface for storage, using udisks
Untuk mengaktifkan salah satu komponennya tinggal di install nama packagenya, seperti sudo dnf install cockpit-navigator.
Install Nginx
Karena nantinya server yang akan saya gunakan difungsikan juga sebagai web server maka saya memilih Nginx sebagai web servernya dan ini berkaitan juga dengan nantinya dalam pembuatan SSL dari Let’s Encrypt. Karena kalau kita memilih certonly –standalone nantinya akan kerepotan saat proses renewal SSL Let’s Encrypt, karena akan selalu error dikarenakan port 80 sedang digunakan oleh service lain.
Kita mulai dengan meng-install Nginx.
sudo dnf install nginx
Setelah itu kita akan mengaktifkan otomatis di proses booting dan menjalankan servicenya sekarang juga.
sudo systemctl enable nginx
sudo systemctl start nginx
Dan kemudian meng-enable-kan service http dan https di FirewallD.
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
Instal Certbot
sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx
SSL Certificate Let’s Encrypt
Ikuti prosesnya dari perintah berikut:
sudo certbot --nginx -d fileserver.kloningspoon.com
Nah, nanti akan ada pesan sudah berhasil mengambil certificate tetapi error saat proses deploy ke Nginx karena tidak diketemukan block dengan name server dengan domain yang kita request. Tapi santai aja, kita lanjut aja prosesnya, karena yang kita butuhkan adalah certificatenya, hehehe.
Mengaplikasikan SSL Let’s Encrypt Untuk Cockpit
Setelah proses request certificate, saatnya kita memasukan certificatenya untuk digunakan oleh cockpit, dengan perintah:
sudo bash -c "cat /etc/letsencrypt/live/fileserver.kloningspoon.com/fullchain.pem /etc/letsencrypt/live/fileserver.kloningspoon.com/privkey.pem > /etc/cockpit/ws-certs.d/fileserver.kloningspoon.com.cert"
Silakan dicoba lagi untuk web access cockpitnya dengan menggunakan domain yang sudah menggunakan SSL Let’s Encrypt, https://fileserver.kloningspoon.com:9090. Jreng, gak ada error lagi Your connection is not private.
Renewal Let’s Encrypt
Karena SSL Let’s Encrypt hanya berlaku untuk 3 bulan saja maka kita perlu untuk melakukan langkah otomatis agar kita tidak melakukan secara manual per 3 bulan untuk memperpanjang certificate SSL Let’s Encrypt domain kita.
Karena kita melakukan sebuah command khusus untuk certificate cockpit, maka kita perlu melakukan sebuah tambahan action sebelum dan sesudah proses renewal Let’s Encrypt.
sudo vim /etc/letsencrypt/renewal-hooks/pre/fileserver.kloningspoon.com.sh
#kita akan menghapus terlebih dahulu certificate yang telah dibuat sebelumnya
rm -f /etc/cockpit/ws-certs.d/fileserver.kloningspoon.com.cert
Kita akan merubah permission file yang baru kita buat agar nantinya bisa di eksekusi.
sudo chmod 755 /etc/letsencrypt/renewal-hooks/pre/fileserver.kloningspoon.sh
Setelah itu kita akan memasukkan perintah setelah proses renewal agar menggabungkan certificate yang dibutuhkan oleh cockpit.
sudo vim /etc/letsencrypt/renewal-hooks/post/fileserver.kloningspoon.com.sh
#menggabungkan fullchain dan privkey
cat /etc/letsencrypt/live/fileserver.kloningspoon.com/fullchain.pem /etc/letsencrypt/live/fileserver.kloningspoon.com/privkey.pem > /etc/cockpit/ws-certs.d/fileserver.kloningspoon.com.cert
#restart cockpit setelah proses penggabungan certificate
systemctl restart cockpit
Dan rubah file permission.
sudo chmod 755 /etc/letsencrypt/renewal-hooks/post/fileserver.kloningspoon.com.sh
Setelah itu kita akan mengedit crontab agar mengeksekusi renewal request 2x dalam sehari dengan jam yang berbeda.
sudo crontab -e
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew --quiet
OK, selesai. Semoga berhasil.