<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fega Suseno</title>
    <description>The latest articles on DEV Community by Fega Suseno (@seno21).</description>
    <link>https://dev.to/seno21</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1164666%2F01271790-6876-4b93-80f4-634480c4dba8.jpeg</url>
      <title>DEV Community: Fega Suseno</title>
      <link>https://dev.to/seno21</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/seno21"/>
    <language>en</language>
    <item>
      <title>Running App Using Supervisorctl</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Sat, 04 Apr 2026 04:04:57 +0000</pubDate>
      <link>https://dev.to/seno21/running-app-using-supervisorctl-9kh</link>
      <guid>https://dev.to/seno21/running-app-using-supervisorctl-9kh</guid>
      <description>&lt;h3&gt;
  
  
  Apa itu Supervisor?
&lt;/h3&gt;

&lt;p&gt;Supervisor adalah program yang berjalan sebagai daemon dan bertugas memantau serta mengelola proses-proses lain agar tetap berjalan. Jika suatu proses mati/crash, Supervisor bisa otomatis me-restart-nya.&lt;/p&gt;

&lt;h3&gt;
  
  
  Apa perbedaan dengan daemon?
&lt;/h3&gt;

&lt;p&gt;Berbeda dengan &lt;code&gt;daemon&lt;/code&gt;, supervisor adalah salah satu cara membuat proses berjalan seperti daemon — jadi keduanya bukan pilihan yang saling berlawanan, melainkan berbeda level.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kapan pakai Supervisor?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Kamu kelola banyak worker/proses sekaligus (misal 5 Celery worker)&lt;/li&gt;
&lt;li&gt;Tim developer perlu restart/stop proses tanpa akses root&lt;/li&gt;
&lt;li&gt;Ingin konfigurasi yang lebih simpel dibanding systemd&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Kapan pakai Systemd (daemon)?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Server production serius — systemd lebih robust dan terintegrasi dengan OS&lt;/li&gt;
&lt;li&gt;Butuh proses jalan sejak boot paling awal&lt;/li&gt;
&lt;li&gt;Sudah familiar dengan Linux system administration&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tutorial Setup Supervisorctl
&lt;/h3&gt;

&lt;p&gt;Install supervisor&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;supervisor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Setup aplikasi yang ingin di eksekusi misal &lt;code&gt;WebApp&lt;/code&gt;, copy dulu ke &lt;code&gt;/usr/local/bin&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cp &lt;/span&gt;WebApp /usr/local/bin/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Buat config supervisor&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano /etc/supervisor/conf.d/webapp.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;isi config&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;program:webapp]
&lt;span class="nb"&gt;command&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/local/bin/webapp
&lt;span class="nv"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;www-data
&lt;span class="nv"&gt;autostart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true
&lt;/span&gt;&lt;span class="nv"&gt;autorestart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true

&lt;/span&gt;&lt;span class="nv"&gt;stdout_logfile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/var/log/supervisor/webapp.log
&lt;span class="nv"&gt;stdout_logfile_maxbytes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;50MB    &lt;span class="p"&gt;;&lt;/span&gt; ukuran max sebelum rotate
&lt;span class="nv"&gt;stdout_logfile_backups&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3        &lt;span class="p"&gt;;&lt;/span&gt; jumlah file backup yang disimpan

&lt;span class="nv"&gt;stderr_logfile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/var/log/supervisor/webapp_error.log
&lt;span class="nv"&gt;stderr_logfile_maxbytes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;50MB
&lt;span class="nv"&gt;stderr_logfile_backups&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;reload konfigurasi&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;supervisorctl reread
supervisorctl update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Jalankan programnya&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;supervisorctl start webapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;pastikan statusnya running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;supervisorctl status webapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perintahnya hampir mirip denga &lt;code&gt;systemctl&lt;/code&gt;. &lt;br&gt;
Ok sampai disini, semoga bermanfaat dan selamat mencoba&lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>proxmox</category>
      <category>supervisor</category>
    </item>
    <item>
      <title>Setup Apache Exporter on Centos</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Thu, 02 Apr 2026 05:40:35 +0000</pubDate>
      <link>https://dev.to/seno21/setup-apache-exporter-on-ubuntu-centos-3jpn</link>
      <guid>https://dev.to/seno21/setup-apache-exporter-on-ubuntu-centos-3jpn</guid>
      <description>&lt;p&gt;Pada postingan ini kita akan membahas cara untuk install &lt;code&gt;apache_exporter&lt;/code&gt;untuk memonitoring web server. Dengan itu monitoring Apache menjadi jauh lebih mudah dengan Apache Exporter, yang dapat diintegrasikan dengan Prometheus untuk mendapatkan metrics secara real-time. Berikut langkah-langkah instalasi dan konfigurasi di CentOS 7.&lt;/p&gt;

&lt;h2&gt;
  
  
  Download binary terbaru
&lt;/h2&gt;

&lt;p&gt;Pola link:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/Lusitaniae/apache_exporter/releases/download/v{VERSI}/apache_exporter-{VERSI}.linux-amd64.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cek versi rilis:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Lusitaniae/apache_exporter/releases/latest" rel="noopener noreferrer"&gt;https://github.com/Lusitaniae/apache_exporter/releases/latest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eksekusi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget https://github.com/Lusitaniae/apache_exporter/releases/download/v1.0.12/apache_exporter-1.0.12.linux-amd64.tar.gz

&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-xzf&lt;/span&gt; apache_exporter-1.0.12.linux-amd64.tar.gz
&lt;span class="nb"&gt;cd &lt;/span&gt;apache_exporter-1.0.12.linux-amd64
&lt;span class="nb"&gt;cp &lt;/span&gt;apache_exporter /usr/sbin/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Menambahkan user
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;useradd apache_exporter &lt;span class="nt"&gt;-s&lt;/span&gt; /sbin/nologin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Membuat folder config
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/sysconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'OPTIONS="--scrape_uri=http://{IP Server}/server-status/?auto"'&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/sysconfig/apache_exporter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Buat service
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano /etc/systemd/system/apache_exporter.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="nn"&gt;[Unit]&lt;/span&gt;
&lt;span class="py"&gt;Description&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Apache Exporter&lt;/span&gt;
&lt;span class="py"&gt;After&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;network.target httpd.service&lt;/span&gt;

&lt;span class="nn"&gt;[Service]&lt;/span&gt;
&lt;span class="py"&gt;User&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;apache_exporter&lt;/span&gt;
&lt;span class="py"&gt;EnvironmentFile&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/etc/sysconfig/apache_exporter&lt;/span&gt;
&lt;span class="py"&gt;ExecStart&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/usr/sbin/apache_exporter $OPTIONS&lt;/span&gt;
&lt;span class="py"&gt;Restart&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;on-failure&lt;/span&gt;

&lt;span class="nn"&gt;[Install]&lt;/span&gt;
&lt;span class="py"&gt;WantedBy&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;multi-user.target&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Reload dan restart service
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl daemon-reload
systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;apache_exporter
systemctl start apache_exporter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Konfigurasi Apache
&lt;/h2&gt;

&lt;p&gt;File:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;/&lt;span class="n"&gt;etc&lt;/span&gt;/&lt;span class="n"&gt;httpd&lt;/span&gt;/&lt;span class="n"&gt;conf&lt;/span&gt;.&lt;span class="n"&gt;d&lt;/span&gt;/&lt;span class="n"&gt;server&lt;/span&gt;-&lt;span class="n"&gt;status&lt;/span&gt;.&lt;span class="n"&gt;conf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;ExtendedStatus&lt;/span&gt; &lt;span class="ss"&gt;On&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nl"&gt;Location&lt;/span&gt;&lt;span class="sr"&gt; "/server-status"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="nc"&gt;SetHandler&lt;/span&gt; server-status
    &lt;span class="nc"&gt;Require&lt;/span&gt; local
    &lt;span class="nc"&gt;Require&lt;/span&gt; ip 192.168.1.0/24
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nl"&gt;Location&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Jika &lt;code&gt;Require all granted&lt;/code&gt; aktif, maka endpoint bisa diakses dari mana saja. Jika menggunakan IP maka fokus ke ip user yg ingin mengaksesnya saja, contoh di atas &lt;code&gt;192.168.1.0/24&lt;/code&gt; maka sau subnet tersebut boleh akses&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Restart Apache
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl restart httpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Konfigurasi Firewall
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;firewall-cmd &lt;span class="nt"&gt;--permanent&lt;/span&gt; &lt;span class="nt"&gt;--zone&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;public &lt;span class="nt"&gt;--add-port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;9117/tcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;reload firewall&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;firewall-cmd &lt;span class="nt"&gt;--reload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Uji Coba
&lt;/h2&gt;

&lt;p&gt;untuk uji coba cukup akses metrics dari web browser&lt;br&gt;
&lt;code&gt;http://{ip_server}:9117&lt;/code&gt;&lt;br&gt;
nanti akan muncul kondisi server kita, tinggal di kombinasikan dengan prometheus.&lt;/p&gt;

&lt;p&gt;selamat mencoba, semoga bermanfaat.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>prometheus</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Setup NUT on Proxmox</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Mon, 09 Feb 2026 07:21:31 +0000</pubDate>
      <link>https://dev.to/seno21/setup-nut-on-proxmox-4b5n</link>
      <guid>https://dev.to/seno21/setup-nut-on-proxmox-4b5n</guid>
      <description>&lt;p&gt;Pada postingan ini, kita akan mencoba melakukan konfigurasi dan pengaturan NUT (Network UPS Tools) pada Proxmox. Tujuannya cukup sederhana, yaitu untuk melakukan monitoring status UPS, apakah dalam kondisi Online, On Battery, atau Low Battery.&lt;/p&gt;

&lt;p&gt;Alurnya adalah: ketika UPS berada pada salah satu kondisi tersebut, sistem akan mengirimkan notifikasi melalui Telegram ke Administrator dan auto action shutdown, sehingga dapat segera dilakukan pengecekan dan tindakan lebih lanjut.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup di UPS
&lt;/h2&gt;

&lt;p&gt;Langkah pertama pastikan UPS sudah terkoneksi dengan Jaringan. Pada kasus ini kita pakai &lt;code&gt;UPS APC SRT3000XLI 3000VA 230V Online UPS&lt;/code&gt; dengan tambahan modul NMC (Network Management Control) yang terpasang. Untuk tutorialnya bisa di cek disni&lt;br&gt;


  &lt;iframe src="https://www.youtube.com/embed/jZZcgq1CpwM"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;Berikutnya pastikan untuk mengkonfigurasi Timezone.&lt;br&gt;
Caranya pergi ke menu &lt;br&gt;
&lt;code&gt;Configuration &amp;gt; General &amp;gt; Date/Time &amp;gt; Mode&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3cprczxqh2unj6d96aw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3cprczxqh2unj6d96aw.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set ke NTP Pool &lt;a href="https://www.ntppool.org/en/zone/id" rel="noopener noreferrer"&gt;https://www.ntppool.org/en/zone/id&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jangan lupa juga untuk setting snmpv3, kita perlu enable dan membuat user, caranya pergi ke &lt;br&gt;
&lt;code&gt;Configuration-&amp;gt;Network-&amp;gt;SNMPv3&amp;gt;Access&lt;/code&gt; lalu centang &lt;code&gt;enable&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffm9qu6qu7zrraaivgdbg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffm9qu6qu7zrraaivgdbg.png" alt=" "&gt;&lt;/a&gt;&lt;br&gt;
Untuk membuat user access snmpnya ada di menu&lt;br&gt;
&lt;code&gt;Configuration&amp;gt;Network&amp;gt;SNMPv3&amp;gt;User Profile&lt;/code&gt;&lt;br&gt;
Defaultnya ada 4 user profile, kita pilih salah satu saja&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbewzyoqhs8c173ffk743.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbewzyoqhs8c173ffk743.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pastikan jug auntuk enable Access Controlnya pada bagian&lt;br&gt;
&lt;code&gt;Configuration&amp;gt;Network&amp;gt;SNMPv3&amp;gt;Access Control&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6na6hwek1b7g14p6gnj4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6na6hwek1b7g14p6gnj4.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jangan lupa juga untuk set delay jadi 20, konfignya ada pada &lt;code&gt;Configuration&amp;gt;Shutdown&lt;/code&gt; lalu pilih Low Battery Duration&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbgqv2gegdoi20r6h25dq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbgqv2gegdoi20r6h25dq.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Restart network config agar semua perubahan reload&lt;br&gt;
&lt;code&gt;Control&amp;gt;Network&amp;gt;Reset/Reboot&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Setup di Proxmox Host
&lt;/h2&gt;

&lt;p&gt;Kita mulai install tools untuk requirementnya, installkan NUT dan konek ke UPS&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;snmp nut nut-snmp &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Setelah terinstall lalu ganti mode&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano /etc/nut/nut.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ubah bagian mode ke &lt;code&gt;standalone&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;MODE&lt;/span&gt;=&lt;span class="n"&gt;standalone&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Konfigurasi UPS, gunakan perintah berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano /etc/nut/ups.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tambahkan script berikut, sesuiakan ini dengan user profile yang sudah dibuat sebelumnya.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="nn"&gt;[apcsrt]&lt;/span&gt;
    &lt;span class="py"&gt;driver&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;snmp-ups&lt;/span&gt;
    &lt;span class="py"&gt;port&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;10.0.3.136&lt;/span&gt;
    &lt;span class="py"&gt;snmp_version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;v3&lt;/span&gt;
    &lt;span class="py"&gt;secLevel&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;authPriv&lt;/span&gt;
    &lt;span class="py"&gt;secName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;apc_agent3&lt;/span&gt;
    &lt;span class="py"&gt;authProtocol&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;SHA&lt;/span&gt;
    &lt;span class="py"&gt;authPassword&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;farmcenter1009&lt;/span&gt;
    &lt;span class="py"&gt;privProtocol&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;AES&lt;/span&gt;
    &lt;span class="py"&gt;privPassword&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;farmcenter1009&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Buat juga user untuk NUT, konfig ada pada bagian berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano /etc/nut/upsd.users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tambahkan script berikut di bagian paling bawah, &lt;code&gt;ctrl+w&lt;/code&gt; lalu &lt;code&gt;ctrl+v&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;[&lt;span class="n"&gt;monuser&lt;/span&gt;]
       &lt;span class="n"&gt;password&lt;/span&gt;  = &lt;span class="n"&gt;passwordbebas&lt;/span&gt;
       &lt;span class="n"&gt;upsmon&lt;/span&gt; &lt;span class="n"&gt;primary&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Konfigurasi monitor untuk eksekusi shutdown server, modifikasi file berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano /etc/nut/upsmon.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pada bagian dibawah modifikasi seperti berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;# Example:
# NOTIFYCMD /usr/bin/notifyme
&lt;span class="gi"&gt;+NOTIFYCMD /usr/local/bin/nut-notif.sh
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;span class="p"&gt;NOTIFYFLAG ONBATT EXEC
NOTIFYFLAG LOWBATT EXEC
NOTIFYFLAG ONLINE EXEC
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kemudian pada bagian paling bawah tambahkan baris ini&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;MONITOR&lt;/span&gt; &lt;span class="n"&gt;apcsrt&lt;/span&gt;@&lt;span class="n"&gt;localhost&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="n"&gt;monuser&lt;/span&gt; &lt;span class="n"&gt;passwordbebas&lt;/span&gt; &lt;span class="n"&gt;primary&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;sesuaikan dengan password yang di buat di file &lt;code&gt;/etc/nut/upsd.users&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Restart semua servicenya&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl restart nut-server nut-monitor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Untuk mengecek apakah NUT server sudah konek dengan UPS jalankan perintah berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;upsc apcsrt@localhost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;upsc apcsrt@localhost | egrep &lt;span class="s2"&gt;"battery.charge|battery.runtime|ups.status|battery.runtime.low|battery.runtime"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;harusnya terbaca parameter ups nya&lt;/p&gt;

&lt;p&gt;lalu untuk &lt;code&gt;/usr/local/bin/nut-notif.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;isi kan script bash berikut ini&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;#!/bin/bash
&lt;span class="err"&gt;
&lt;/span&gt;# Setup variabel
&lt;span class="gi"&gt;+TOKEN="6495733192:AAEiztfp_bbesRB7uUWhpZV89KbpVQou_34"
+CHAT_ID="-1001768345645"
+TOPIC_ID="61033"
&lt;/span&gt;&lt;span class="p"&gt;EVENT="$NOTIFYTYPE"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;# Buat fungsi untuk kirim ke telegram
&lt;span class="p"&gt;send() {
&lt;/span&gt;  curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
    -d chat_id="${CHAT_ID}" \
    -d message_thread_id="${TOPIC_ID}" \
    -d parse_mode=HTML \
    --data-urlencode text="$1"
}
&lt;span class="err"&gt;
&lt;/span&gt;# Buat triger EVENT dari upsmon.conf
&lt;span class="p"&gt;case "$EVENT" in
&lt;/span&gt;  ONBATT)
    MSG=$(printf "UPS ON BATTERY \n\n%s" " ${DATE}")
    ;;
  LOWBATT)
    MSG=$(printf "UPS LOW BATTERY \n\n%s\nProd server Graceful Shutdown" "$DATE")
    ;;
  ONLINE)
    MSG=$(printf "UPS ONLINE \n\n%s" "${DATE}")
    ;;
  *)
    exit 0
    ;;
&lt;span class="p"&gt;esac
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;# Panggil fungsi dan parameter dari $MSG
&lt;span class="p"&gt;send "$MSG"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perlu di perhatikan pada bagian yg diberi warna hijau adalah token yg di dapat dari telegram bot, saya asumsikan sudah mensetting di botfather telegram masing-masing. &lt;/p&gt;

&lt;p&gt;Untuk uji cobanya script di atas gunakan ini&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;NOTIFYTYPE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ONLINE &lt;span class="nv"&gt;UPSNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;apcsrt@localhost /usr/local/bin/nut-notif.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;NOTIFYTYPE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ONBATT &lt;span class="nv"&gt;UPSNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;apcsrt@localhost /usr/local/bin/nut-notif.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;NOTIFYTYPE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;LOWBATT &lt;span class="nv"&gt;UPSNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;apcsrt@localhost /usr/local/bin/nut-notif.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Jika sesuai harusnya akan muncul pesan di telegram sesuai pesan yg kita buat. Kemudaian untuk uji coba tingkat lanjut bisa dengan mencabut power UPS dan tunggu sampai masuk mode Low Batt, jika konfig sesuai harusnya server otomatis mengeksekusi shutdown.&lt;/p&gt;

&lt;p&gt;Selamat mencoba, semoga bermanfaat.&lt;/p&gt;

</description>
      <category>sysadmin</category>
      <category>devops</category>
      <category>sre</category>
      <category>linux</category>
    </item>
    <item>
      <title>How to Use UFW (Uncomplicated Firewall)</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Wed, 07 Jan 2026 04:10:47 +0000</pubDate>
      <link>https://dev.to/seno21/how-to-use-ufw-uncomplicated-firewall-358f</link>
      <guid>https://dev.to/seno21/how-to-use-ufw-uncomplicated-firewall-358f</guid>
      <description>&lt;p&gt;Basic Penggunaan UFW di Ubuntu Server 24.04&lt;/p&gt;

&lt;p&gt;Pada postingan ini saya akan membahas basic penggunaan UFW (Uncomplicated Firewall) pada Ubuntu Server 24.04.&lt;/p&gt;

&lt;p&gt;UFW adalah firewall bawaan Ubuntu/Debian yang berfungsi untuk mengatur lalu lintas jaringan (port dan IP) agar server menjadi lebih aman.&lt;br&gt;
Kita langsung masuk ke dasar penggunaannya.&lt;/p&gt;
&lt;h3&gt;
  
  
  Cek Status UFW
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Secara default, pada instalasi baru Ubuntu Server, UFW belum aktif.&lt;/p&gt;
&lt;h3&gt;
  
  
  Mengaktifkan dan Menonaktifkan UFW
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw enable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Disable UFW&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw disable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Allow Port
&lt;/h3&gt;

&lt;p&gt;Untuk membuka port tertentu, misalnya SSH (port 22):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw allow 22/tcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Allow Port dari IP Tertentu, jika ingin membatasi akses hanya dari satu IP tertentu, misalnya port 22 hanya boleh diakses dari IP 10.10.10.5:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw allow from 10.10.10.5 to any port 22 proto tcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Allow Port dari Satu Subnet, jika ingin mengizinkan satu subnet (misalnya prefix /24):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw allow from 10.10.10.0/24 to any port 22 proto tcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Melihat Rule Aktif
&lt;/h3&gt;

&lt;p&gt;Untuk melihat semua rule yang sudah dibuat&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Jika ingin melihat urutan rule, gunakan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw status numbered
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Menghapus Rule
&lt;/h3&gt;

&lt;p&gt;Penghapusan rule menggunakan nomor urutan.&lt;br&gt;
Misalnya terdapat 5 rule dan port &lt;code&gt;22&lt;/code&gt; berada di urutan ke-2, maka perintahnya:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw delete 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kurang lebih seperti itulah basic penggunaan UFW di Ubuntu Server.&lt;br&gt;
Postingan ini akan saya update seiring bertambahnya pengalaman dalam menggunakan UFW, sekaligus sebagai catatan dan dokumentasi pribadi. Selamat mencoba dan semoga bermanfaat&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>linux</category>
      <category>devops</category>
      <category>firewal</category>
    </item>
    <item>
      <title>Migrate Root Dir Docker</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Fri, 12 Dec 2025 13:49:02 +0000</pubDate>
      <link>https://dev.to/seno21/migrate-root-dir-docker-3bin</link>
      <guid>https://dev.to/seno21/migrate-root-dir-docker-3bin</guid>
      <description>&lt;p&gt;Pada postingan ini kita akan membahas bagaimana cara migrate Document Root docker berdasarkan studi kasus.&lt;/p&gt;

&lt;h2&gt;
  
  
  Study Case
&lt;/h2&gt;

&lt;p&gt;Server production dengan kapasitas storage &lt;code&gt;500GB&lt;/code&gt;, menjalankan sekitar 6 container. Awalnya tidak ada masalah dengan storage ini, sampai akhirnya storage penuh! Pada tahap ini dilakukan pembelian storage server SAS ukuran &lt;code&gt;2TB x 2Dsisk&lt;/code&gt;. Pada sisi iDrac kedua disk ini di buatkan virtualdisk baru dengan konfigurasi &lt;code&gt;Raid 1&lt;/code&gt;. Setelahnya dilakukan formating dan mounting di path &lt;code&gt;/mnt/local&lt;/code&gt; dari sisi host operating systemnya. Kendalanya adalah kita harus memindahkan Document Root docker yang mana ini isinya adalah semua config dan storage di selain bind-mount. Tentu ini sangat crusial jika ada salah konfig atau bahkan hilang data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tutorial Migrate
&lt;/h2&gt;

&lt;p&gt;Dari study case di atas maka pada tutorial ini akan mencoba membahas langkah teknisya, berikut step yang perlu di kerjakan:&lt;br&gt;
Pertama stop service docker dan socket dengan syntak berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl restart docker.service docker.socket
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;lalu syncronize antara folder default document root docker &lt;code&gt;/var/lib/docker&lt;/code&gt; dan path baru document root docker &lt;code&gt;/mnt/local&lt;/code&gt;. Dengan menggunakan tools &lt;code&gt;rsync&lt;/code&gt;, ini memindahkan semua copy file beserta permission dan symlink&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo rsync -aP /var/lib/docker /mnt/local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;setelah itu buat configurasi pathnya, biasanya defaultnya tidak ada folder &lt;code&gt;docker&lt;/code&gt; di &lt;code&gt;etc&lt;/code&gt;, tambhakan manual dengan jalankan perintah ini&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir -p /etc/docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;buat file confignya&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/docker/daemon.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;isi kan dengan script berikut ini&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "data-root": "/mnt/local/docker"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;setelah selesai nyalakan kembali docker daemon dan servicenya&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl daemon-reload
sudo systemctl start docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;lalu untuk cek apakah Doc Root sudah pindah&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker info | grep "Docker Root Dir"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;pastikan pathnya pindah dan silakan start containernya lalu cek servicenya, seharusnya bisa running seperti biasa&lt;/p&gt;

</description>
      <category>docker</category>
      <category>container</category>
      <category>devops</category>
      <category>linux</category>
    </item>
    <item>
      <title>Managing User on Linux (Cheat Sheet)</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Tue, 11 Nov 2025 08:17:21 +0000</pubDate>
      <link>https://dev.to/seno21/managing-user-on-linux-cheat-sheet-50d</link>
      <guid>https://dev.to/seno21/managing-user-on-linux-cheat-sheet-50d</guid>
      <description>&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;No&lt;/th&gt;
&lt;th&gt;Perintah&lt;/th&gt;
&lt;th&gt;Deskripsi&lt;/th&gt;
&lt;th&gt;Contoh&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;useradd namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Membuat user baru tanpa home directory&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo useradd fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;useradd -m namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Membuat user baru &lt;strong&gt;dengan home dir otomatis&lt;/strong&gt; di &lt;code&gt;/home/namauser&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo useradd -m fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;useradd -m -s /bin/bash namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Membuat user baru dengan &lt;strong&gt;shell Bash&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo useradd -m -s /bin/bash fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;useradd -m -c "Nama Lengkap"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tambahkan komentar/nama lengkap user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo useradd -m -c "Fega Suseno" fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;useradd -m -d /mnt/LOCAL/namauser namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Menentukan &lt;strong&gt;lokasi home directory custom&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo useradd -m -d /mnt/LOCAL/fega fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;passwd namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mengatur atau mengganti password user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo passwd fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;id namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Melihat UID, GID, dan grup yang dimiliki user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;id fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;usermod -l baru lama&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mengganti nama user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo usermod -l fega2 fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;usermod -m -d /home/baru namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pindahkan home directory user ke lokasi baru&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo usermod -m -d /data/fega fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;usermod -s /bin/zsh namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ganti shell login user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo usermod -s /bin/zsh fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;usermod -c "Nama Baru" namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ganti komentar/nama lengkap user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo usermod -c "Fega S." fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;userdel namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hapus user (home dir tetap ada)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo userdel fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;userdel -r namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hapus user &lt;strong&gt;beserta home directory-nya&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo userdel -r fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;groupadd namagrup&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Membuat grup baru&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo groupadd adminteam&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;groupmod -n grupbaru gruplama&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ganti nama grup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo groupmod -n devops adminteam&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;groupdel namagrup&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hapus grup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo groupdel devops&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;17&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;usermod -aG namagrup namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tambahkan user ke grup tambahan&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo usermod -aG sudo fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpasswd -d namauser namagrup&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hapus user dari grup tertentu&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo gpasswd -d fega sudo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;19&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;groups namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Lihat daftar grup user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;groups fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;chown user:grup /path&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ubah pemilik dan grup file/folder&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo chown fega:adminteam /mnt/data&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;21&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;chmod 750 /path&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Atur izin akses (read/write/execute)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo chmod 750 /mnt/data&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;22&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ls -ld /home/namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cek hak akses folder home user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ls -ld /home/fega&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;23&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;getent passwd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Lihat semua user di sistem&lt;/td&gt;
&lt;td&gt;&lt;code&gt;getent passwd&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;24&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;getent group&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Lihat semua grup di sistem&lt;/td&gt;
&lt;td&gt;&lt;code&gt;getent group&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;25&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;su - namauser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Login sebagai user lain (subshell)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;su - fega&lt;/code&gt;   groupmod -g  &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>linux</category>
      <category>archlinux</category>
      <category>ubuntu</category>
      <category>devops</category>
    </item>
    <item>
      <title>Main Services Behind Proxmox PVE</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Fri, 07 Nov 2025 01:34:25 +0000</pubDate>
      <link>https://dev.to/seno21/main-services-behind-proxmox-pve-j2h</link>
      <guid>https://dev.to/seno21/main-services-behind-proxmox-pve-j2h</guid>
      <description>&lt;p&gt;Proxmox VE (Virtual Environment) adalah platform open-source untuk virtualisasi berbasis KVM dan LXC, lengkap dengan manajemen storage, jaringan, dan high availability (HA).&lt;br&gt;
Tapi, pernahkah kamu bertanya — apa saja service yang sebenarnya berjalan di belakang layar Proxmox?&lt;/p&gt;

&lt;h2&gt;
  
  
  Main Service
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Fungsi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pve-cluster&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mengelola &lt;em&gt;Proxmox Cluster File System&lt;/em&gt; (pmxcfs). Ini menjaga sinkronisasi konfigurasi antar node di cluster.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pvedaemon&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Service utama untuk menangani permintaan API dan perintah dari web GUI.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pveproxy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Web proxy untuk antarmuka web (port 8006). Mengatur autentikasi dan koneksi HTTPS.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pvestatd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mengumpulkan data statistik sistem seperti CPU, RAM, disk, dan jaringan.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pve-guests&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mengatur start/stop otomatis VM dan container berdasarkan konfigurasi cluster.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Service HA
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Fungsi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pve-ha-crm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Cluster Resource Manager&lt;/strong&gt; — memonitor seluruh node dan resource HA, menentukan VM mana yang harus dipindah jika node gagal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pve-ha-lrm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Local Resource Manager&lt;/strong&gt; — menjalankan instruksi dari &lt;code&gt;pve-ha-crm&lt;/code&gt; di tiap node, seperti start/stop VM lokal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;corosync&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Menyediakan &lt;em&gt;cluster communication layer&lt;/em&gt; (sinkronisasi dan quorum voting). Wajib untuk HA dan cluster.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Service Storage
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Fungsi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pve-storage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mengatur koneksi dan konfigurasi ke berbagai backend storage (LVM, ZFS, Ceph, NFS, iSCSI, dsb).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pvescheduler&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mengatur jadwal backup, snapshot, dan tugas otomatis lainnya.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pve-zsync&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sinkronisasi ZFS antar node untuk replikasi VM/CT berbasis ZFS.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;pve-backup&lt;/code&gt; &lt;em&gt;(opsional)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;Service dari &lt;strong&gt;Proxmox Backup Server&lt;/strong&gt; bila terhubung.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Container dan VM
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Fungsi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pve-container&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mengatur lifecycle LXC container (start/stop/migrate).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;qm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;CLI/daemon untuk manajemen KVM Virtual Machines.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;qemu-server&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Menjalankan VM berbasis KVM/QEMU, termasuk I/O, snapshot, dan migrasi.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  CCEPH Service
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Fungsi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ceph-mon@&amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Menyimpan metadata cluster Ceph dan status OSD.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ceph-mgr@&amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Memberikan data statistik, dashboard, dan modul monitoring Ceph.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ceph-osd@&amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Proses utama yang mengelola disk Ceph (Object Storage Daemon).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;ceph-mds@&amp;lt;id&amp;gt;&lt;/code&gt; &lt;em&gt;(opsional)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;Diperlukan jika menggunakan CephFS.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Support Service
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Fungsi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sshd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Akses remote ke server Proxmox via SSH.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;systemd-timesyncd&lt;/code&gt; atau &lt;code&gt;chronyd&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Sinkronisasi waktu antar node (penting untuk cluster).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;watchdog-mux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Menyediakan interface agar beberapa service dapat mengakses hardware watchdog (untuk HA fencing).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;spiceproxy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Digunakan untuk koneksi SPICE (VM console interaktif).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;novnc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Menyediakan koneksi web-console (HTML5 noVNC).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;rpcbind&lt;/code&gt;, &lt;code&gt;nfs-common&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Jika menggunakan NFS storage.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;iscsi&lt;/code&gt; atau &lt;code&gt;multipathd&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Jika storage berbasis iSCSI digunakan.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>proxmox</category>
      <category>devops</category>
      <category>debian</category>
      <category>linux</category>
    </item>
    <item>
      <title>Complete Guide to User and Group Management in Linux</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Wed, 22 Oct 2025 01:14:13 +0000</pubDate>
      <link>https://dev.to/seno21/complete-guide-to-user-and-group-management-in-linux-3c5o</link>
      <guid>https://dev.to/seno21/complete-guide-to-user-and-group-management-in-linux-3c5o</guid>
      <description>&lt;p&gt;Linux adalah sistem operasi multi-user, artinya banyak pengguna bisa masuk dan bekerja di satu sistem secara bersamaan. Karena itu, pengelolaan user dan group sangat penting untuk keamanan dan keteraturan sistem.&lt;/p&gt;

&lt;p&gt;Berikut saya buatkan rangkuman cheat sheet dari panduan manajemen user &amp;amp; group Linux&lt;/p&gt;

&lt;h1&gt;
  
  
  Manajemen User
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aksi&lt;/th&gt;
&lt;th&gt;Perintah&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tambah user baru&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo adduser nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tambah user tanpa interaktif&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo useradd -m -s /bin/bash nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Set password user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo passwd nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hapus user (tanpa home)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo deluser nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hapus user (dengan home)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo deluser --remove-home nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hapus user via &lt;code&gt;userdel&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo userdel -r nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kunci akun&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo passwd -l nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Buka kunci akun&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo passwd -u nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ubah nama user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo usermod -l nama_baru nama_lama&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ubah home directory&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo usermod -d /home/nama_baru -m nama_baru&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Manajemen Group
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aksi&lt;/th&gt;
&lt;th&gt;Perintah&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tambah group baru&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo addgroup nama_group&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hapus group&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo delgroup nama_group&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ubah nama group&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo groupmod -n group_baru group_lama&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tambah user ke group&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo usermod -aG nama_group nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hapus user dari group&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo gpasswd -d nama_user nama_group&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Cek Informasi User dan Group
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Info&lt;/th&gt;
&lt;th&gt;Perintah&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Daftar user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cat /etc/passwd&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Daftar group&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cat /etc/group&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Group user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;groups nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detail user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;id nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Siapa yang login&lt;/td&gt;
&lt;td&gt;&lt;code&gt;who&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info password &amp;amp; expired&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo chage -l nama_user&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Informasi mengenai cheat sheet di atas cukup lengkap untuk manajemen user dan group di linux. Semoga cukup membantu, selamat mencoba.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Proxmox Test Reference Values</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Wed, 24 Sep 2025 07:42:22 +0000</pubDate>
      <link>https://dev.to/seno21/proxmox-test-reference-values-9m8</link>
      <guid>https://dev.to/seno21/proxmox-test-reference-values-9m8</guid>
      <description>&lt;p&gt;Berikut acuan kecepatan OSD&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;HDD (7200rpm)&lt;/th&gt;
&lt;th&gt;SSD SATA (Enterprise)&lt;/th&gt;
&lt;th&gt;NVMe Datacenter (Acuan)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IOPS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;100 – 300 IOPS&lt;/td&gt;
&lt;td&gt;50k – 100k IOPS&lt;/td&gt;
&lt;td&gt;500k – 1M IOPS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bandwidth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~2 MB/s (4K rand)&lt;/td&gt;
&lt;td&gt;400 – 550 MB/s&lt;/td&gt;
&lt;td&gt;2.5 – 3.5 GB/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Avg Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5 – 10 ms&lt;/td&gt;
&lt;td&gt;50 – 200 µs&lt;/td&gt;
&lt;td&gt;1 – 10 µs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;p99 Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20 – 50 ms&lt;/td&gt;
&lt;td&gt;1 – 5 ms&lt;/td&gt;
&lt;td&gt;&amp;lt;50 µs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Max Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&amp;gt;100 ms&lt;/td&gt;
&lt;td&gt;10 – 50 ms&lt;/td&gt;
&lt;td&gt;&amp;lt;100 µs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stabilitas BW&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sangat fluktuatif&lt;/td&gt;
&lt;td&gt;±10–20%&lt;/td&gt;
&lt;td&gt;&amp;lt;±10%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CPU Usage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Kecil (IO wait tinggi)&lt;/td&gt;
&lt;td&gt;Sedang&lt;/td&gt;
&lt;td&gt;Tinggi (sys/io)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Acuan RADOS Bench test&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Cluster HDD (normal)&lt;/th&gt;
&lt;th&gt;Cluster SSD/NVMe (normal)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bandwidth (MB/s)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;80 – 200 MB/s&lt;/td&gt;
&lt;td&gt;500 MB/s – &amp;gt;2 GB/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Average IOPS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20 – 50 IOPS (obj 4MB)&lt;/td&gt;
&lt;td&gt;100 – 500 IOPS (obj 4MB)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Average Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.3 – 1.0 s&lt;/td&gt;
&lt;td&gt;0.01 – 0.05 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Max Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;3 s masih wajar&lt;/td&gt;
&lt;td&gt;&amp;lt;0.1 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bandwidth Stability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fluktuasi wajar (±20%)&lt;/td&gt;
&lt;td&gt;Lebih stabil, stddev &amp;lt;10%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>proxmox</category>
      <category>devops</category>
      <category>linux</category>
      <category>virtualmachine</category>
    </item>
    <item>
      <title>From RADOS to Ceph Services: RBD, RGW, and CephFS</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Tue, 23 Sep 2025 03:29:01 +0000</pubDate>
      <link>https://dev.to/seno21/from-rados-to-ceph-services-rbd-rgw-and-cephfs-6ho</link>
      <guid>https://dev.to/seno21/from-rados-to-ceph-services-rbd-rgw-and-cephfs-6ho</guid>
      <description>&lt;p&gt;Di Ceph ada beberapa “layanan/fitur” utama&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RBD (RADOS Block Device)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Storage berbasis block device, bentuknya kayak harddisk virtual (mirip iSCSI atau LVM). Biasanya dipakai untuk disk VM / container di Proxmox.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CephFS (Ceph File System)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Storage berbasis file system terdistribusi, bisa di-mount seperti folder biasa (misalnya /mnt/cephfs). Cocok untuk backup, ISO, container templates, data share.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RGW (RADOS Gateway / Ceph Object Storage)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Storage berbasis object storage, compatible dengan Amazon S3 / Swift API. Biasanya dipakai untuk aplikasi yang butuh object storage (Nextcloud, MinIO, backup S3, dll.).&lt;/p&gt;

&lt;h3&gt;
  
  
  Lalu Apa Itu RADOS?
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;RADOS (Reliable Autonomic Distributed Object Store)&lt;/em&gt; adalah lapisan dasar dari Ceph yang bertanggung jawab menyimpan data dalam bentuk object di cluster. Sistem ini reliable karena menjamin keamanan data melalui mekanisme replikasi atau erasure coding, autonomic karena mampu melakukan self-healing dan self-managing tanpa perlu campur tangan manual dari admin, serta distributed karena data tersebar secara merata di banyak OSD dan node. Sebagai object store, RADOS menyimpan data bukan dalam bentuk block atau file langsung, melainkan sebagai object yang kemudian dipetakan ke OSD. Seluruh layanan Ceph—seperti &lt;u&gt;RBD untuk block storage, CephFS untuk filesystem, dan RGW untuk object/S3—berdiri di atas fondasi RADOS ini&lt;/u&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Komponen RADOS di CEPH
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;OSD (Object Storage Daemon)&lt;br&gt;
Proses yang menyimpan data object di disk, biasanya 1 disk = 1 OSD. contoh: &lt;code&gt;osd.0&lt;/code&gt;, &lt;code&gt;osd.1&lt;/code&gt;, &lt;code&gt;osd.2&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MON (Monitor)&lt;br&gt;
Menyimpan metadata cluster (map cluster, siapa up/down), wajib ada minimal 3 untuk quorum.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MGR (Manager)&lt;br&gt;
Tambahan dari MON, mengatur statistik &amp;amp; balancing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CRUSH Map&lt;br&gt;
Algoritma + peta yang menentukan object disimpan di OSD mana.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PG (Placement Group)&lt;br&gt;
Bucket logical yang jadi perantara antara object ke OSD dan Object ke PG lalu disebar ke beberapa OSD.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;baca juga:&lt;br&gt;
&lt;a href="https://dev.to/seno21/osd-pool-pg-on-ceph-proxmox-44di"&gt;https://dev.to/seno21/osd-pool-pg-on-ceph-proxmox-44di&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Cara Kerja RADOS di CEPH
&lt;/h3&gt;

&lt;p&gt;Object Store&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data tidak disimpan dalam bentuk file langsung, tapi dipecah menjadi object.&lt;/li&gt;
&lt;li&gt;Object disimpan di OSD (Object Storage Daemon) sesuai dengan aturan dari CRUSH Map.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Replication / Erasure Coding&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Saat kamu tulis data, RADOS akan otomatis mereplikasi ke beberapa OSD (default 3 copy) atau menggunakan erasure coding.&lt;/li&gt;
&lt;li&gt;Kalau ada OSD mati, data tetap aman karena copy ada di OSD lain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Self-healing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jika 1 OSD rusak, RADOS akan melakukan rebalancing dan menyalin ulang object ke OSD lain agar tetap sesuai dengan policy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consistency&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RADOS memastikan data tetap konsisten dengan protokol strong consistency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;RADOS menyimpan data dalam bentuk object, bukan file secara langsung. Setiap object tidak langsung ditempatkan ke OSD, melainkan terlebih dahulu dimasukkan ke dalam Placement Group (PG). PG ini dapat diibaratkan sebagai “bucket logical” yang berfungsi untuk mendistribusikan object ke OSD. Penempatan object ke OSD ditentukan oleh CRUSH Map yang mengatur distribusi data di dalam cluster.&lt;/p&gt;

&lt;p&gt;Sebagai contoh, dengan pengaturan replication &lt;code&gt;size = 3&lt;/code&gt;, satu object akan disalin ke tiga OSD yang berbeda. Misalnya, Object A ditempatkan di OSD1, OSD3, dan OSD5, sementara Object B ditempatkan di OSD2, OSD4, dan OSD6. Dengan demikian, setiap object memiliki tiga salinan, namun penyebarannya berbeda-beda sesuai aturan CRUSH Map, sehingga tidak semua OSD menyimpan data yang sama.&lt;/p&gt;

&lt;p&gt;Ketika salah satu OSD mati, misalnya OSD1, cluster melalui MON dan MGR akan segera mendeteksi kondisi ini. Status PG yang menyimpan object di OSD1 berubah menjadi degraded karena jumlah salinan berkurang. Ceph kemudian menjalankan proses rebalancing atau recovery dengan menghitung ulang CRUSH Map. Object-object yang kehilangan salinan akan dibuatkan replika baru di OSD lain, misalnya OSD7, sehingga distribusi tetap seimbang. Dalam contoh ini, sebelum OSD1 mati, Object A tersimpan di OSD1, OSD3, dan OSD5. Setelah OSD1 mati, salinan baru dibuat sehingga Object A tersimpan di OSD3, OSD5, dan OSD7.&lt;/p&gt;

&lt;p&gt;Hal penting untuk dipahami adalah yang di-balancing bukan seluruh data cluster, melainkan hanya object-object yang kehilangan replika. Ceph juga memastikan distribusi replika baru tersebar merata ke OSD lain, agar tidak terjadi penumpukan data pada satu OSD.&lt;/p&gt;

&lt;p&gt;Ketika OSD yang mati kembali hidup, Ceph akan mengecek apakah data di dalamnya masih valid. Jika valid, cluster dapat menghapus salinan tambahan yang sebelumnya dibuat atau melakukan sinkronisasi ulang. Setelah itu, status PG akan kembali menjadi active+clean, menandakan cluster dalam kondisi sehat.&lt;/p&gt;

&lt;p&gt;Kesimpulannya, data dalam Ceph tidak di-mirror ke semua OSD, melainkan disebarkan sesuai CRUSH Map dengan jumlah salinan tertentu. Saat OSD mati, Ceph hanya mereplikasi ulang object yang kehilangan salinan, dan proses inilah yang disebut rebalancing atau recovery. Dengan demikian, yang di-balancing adalah penempatan object di cluster, bukan seluruh data secara keseluruhan.&lt;/p&gt;

</description>
      <category>ceph</category>
      <category>proxmox</category>
      <category>linux</category>
      <category>devops</category>
    </item>
    <item>
      <title>Resize Disk on VM Proxmox Non-LVM</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Wed, 17 Sep 2025 06:55:27 +0000</pubDate>
      <link>https://dev.to/seno21/resize-disk-on-vm-proxmox-non-lvm-24oo</link>
      <guid>https://dev.to/seno21/resize-disk-on-vm-proxmox-non-lvm-24oo</guid>
      <description>&lt;p&gt;Hallo world!&lt;/p&gt;

&lt;p&gt;Pada postingan ini kita akan membahas gimana cara membedakan partisi LVM atau bukan. Pertama kita bisa menggunakan &lt;code&gt;lsblk&lt;/code&gt; tools. Jalankan perintah berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Jika outputnya ada &lt;code&gt;LVM2_member&lt;/code&gt;, berarti partisi itu dipakai LVM. tapi kalau langsung &lt;code&gt;ext4&lt;/code&gt;, &lt;code&gt;xfs&lt;/code&gt;, &lt;code&gt;btrfs&lt;/code&gt;, berarti bukan LVM.&lt;/p&gt;

&lt;p&gt;Atau berikutnya bisa menggunakan &lt;code&gt;pvdisplay&lt;/code&gt;, jalankan perintah berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pvdisplay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Jika ada output (nama PV, VG, LV), berarti ada LVM, tapi jika kosong maka sistem tidak pakai LVM.&lt;/p&gt;

&lt;p&gt;Oke selanjutnya kita akan bahas gimana cara resizenya. Kita samakan asumsi, disini saya ingin memperbesar partisi root dari 300GB ke 600GB. Sebelumnya saya sudah memperbesar size disknya via proxmox management web ui. Jadi seharusnya jika di cek dengan &lt;code&gt;fdisk&lt;/code&gt; akan ada perubahan size. Meskipun sizenya telah berubah tapi ini belum bisa di pakai. Karena jika di cek dengan &lt;code&gt;df -h&lt;/code&gt; size &lt;code&gt;/&lt;/code&gt; masih sama belum ada penambahan kapasitas. Ok, dari studi kasus di atas kita akan coba memperbesar kapasitasnya dan meminimalisir downtime. langsung saja ke caranya&lt;/p&gt;

&lt;p&gt;Pastikan partisi root, cek dengan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lsblk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lihat mana yang dipakai untuk &lt;code&gt;/&lt;/code&gt; (root), pada kasus ini root berada di &lt;code&gt;/dev/sda1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Lanjut resize partisi /dev/sda1, gunakan tool growpart, jika belum ada toolsnya install dulu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt install cloud-guest-utils -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;lalu jalankan&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;growpart /dev/sda 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Itu akan memperbesar partisi &lt;code&gt;/dev/sda1&lt;/code&gt; supaya sesuai dengan ukuran disk baru (600GB)&lt;/p&gt;

&lt;p&gt;Setelah resize partisi baru kita resize filesystem, jika filesystem kita &lt;code&gt;ext4&lt;/code&gt;, maka jalankan&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resize2fs /dev/sda1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tapi jika filesystem kita &lt;code&gt;xfs&lt;/code&gt;, maka jalankan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;xfs_growfs /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Untuk mengecek typenya bisa dengan perintah dibawah, perintah ini juga sekalian mengecek hasil apakah partisi sudah berubah atau belumnya&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df -Th
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sekarang harusnya kapasitas root berubah jadi 600GB.&lt;/p&gt;

&lt;p&gt;Ringkasnya:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proxmox GUI berhasil resize disk (600GB sudah terbaca).&lt;/li&gt;
&lt;li&gt;Ubuntu VM partisi root masih 300GB, harus di-extend manual dengan growpart + resize2fs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Semoga bermanfaat dan selamat mencoba.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>proxmox</category>
      <category>devops</category>
    </item>
    <item>
      <title>Best-Practice Setup VM on Proxmox</title>
      <dc:creator>Fega Suseno</dc:creator>
      <pubDate>Mon, 15 Sep 2025 03:46:28 +0000</pubDate>
      <link>https://dev.to/seno21/best-practice-setup-vm-on-proxmox-12oj</link>
      <guid>https://dev.to/seno21/best-practice-setup-vm-on-proxmox-12oj</guid>
      <description>&lt;p&gt;Postingan kali ini kita akan bahas best-practice setup vm di proxmox. oke, kadang di sebagian kasus kita cukup kesulitan menentukan standar setting default dari vm apalagi ketika ingin membuat template vm yang reusable. Baiklah, kita akan langsung saja ke rekomendasinya berdasarkan member forum resmi proxmox, bisa cek di sini&lt;/p&gt;

&lt;p&gt;&lt;a href="https://forum.proxmox.com/threads/best-practices-for-setting-up-ceph-in-a-proxmox-environment.148790/" rel="noopener noreferrer"&gt;https://forum.proxmox.com/threads/best-practices-for-setting-up-ceph-in-a-proxmox-environment.148790/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kita fokus pada jawaban no. 3&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You should really reconsider 3-nodes because of the single-node failure scenario. With that being said, I use the following optimization learned through trial-and-error and write IOPS are in the hundreds while read IOPS are 3x-5x (sometimes higher) than write IOPS. Again not hurting for IOPS for my production workloads.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set SAS HDD Write Cache Enable (WCE) (sdparm -s WCE=1 -S /dev/sd[x])&lt;/li&gt;
&lt;li&gt;Set VM Disk Cache to None if clustered, Writeback if standalone&lt;/li&gt;
&lt;li&gt;Set VM Disk controller to VirtIO-Single SCSI controller and enable IO Thread &amp;amp; Discard option&lt;/li&gt;
&lt;li&gt;Set VM CPU Type to 'Host'&lt;/li&gt;
&lt;li&gt;Set VM CPU NUMA on servers with 2 more physical CPU sockets&lt;/li&gt;
&lt;li&gt;Set VM Networking VirtIO Multiqueue to number of Cores/vCPUs&lt;/li&gt;
&lt;li&gt;Set VM Qemu-Guest-Agent software installed&lt;/li&gt;
&lt;li&gt;Set VM IO Scheduler to none/noop on Linux&lt;/li&gt;
&lt;li&gt;Set Ceph RBD pool to use 'krbd' option&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Oke, kita jelaskan ya.&lt;/p&gt;

&lt;h3&gt;
  
  
  Point Pertama
&lt;/h3&gt;

&lt;p&gt;SAS di sini maksudnya adalah Serial Attached SCSI. SAS adalah jenis interface/storage protocol untuk harddisk atau SSD (biasanya kelas enterprise/server). Bedanya dengan SATA:&lt;/p&gt;

&lt;p&gt;SAS → dipakai di server, lebih cepat, lebih andal, bisa full-duplex, dan biasanya dipasangkan di storage enterprise (misalnya Proxmox + Ceph pakai server-grade disk).&lt;/p&gt;

&lt;p&gt;SATA → lebih umum di PC/desktop/laptop, lebih murah, tapi performa dan keandalannya di bawah SAS.&lt;/p&gt;

&lt;p&gt;Jadi ketika ada instruksi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sdparm -s WCE=1 -S /dev/sdX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;itu artinya mengaktifkan Write Cache Enable (WCE) pada disk SAS tersebut. Dengan write cache aktif, disk bisa menampung data di cache sebelum ditulis permanen ke platter/flash, sehingga I/O jadi lebih cepat.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;u&gt;&lt;strong&gt;Tapi ini harus hati-hati&lt;/strong&gt;&lt;/u&gt;&lt;/em&gt;: kalau power loss dan tidak ada battery-backed cache (BBU) di RAID controller atau UPS, data bisa hilang sebelum sempat flush ke disk.&lt;/p&gt;

&lt;h3&gt;
  
  
  Point Kedua
&lt;/h3&gt;

&lt;p&gt;Nah, bagian ini maksudnya setting disk controller di VM Proxmox biar performa I/O makin optimal &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VirtIO-SCSI Single Controller&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;VirtIO-SCSI adalah driver disk yang sudah dioptimalkan untuk virtualisasi (lebih cepat daripada IDE/SATA emulated). Single controller artinya semua disk VM dipasang ke satu controller VirtIO-SCSI (bukan banyak controller). Lebih efisien (lebih sedikit overhead QEMU), cocok kalau VM punya banyak disk (misalnya database).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IO Thread&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kalau di-enable, setiap disk VM bisa punya thread I/O sendiri.&lt;br&gt;
Keuntungannya I/O bisa diproses paralel, tidak bottleneck di 1 thread. Sangat terasa kalau VM ada banyak disk, server host punya banyak core CPU, beban I/O tinggi (contoh: database, Ceph RBD).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discard Option (TRIM/UNMAP)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kalau aktif, ketika VM menghapus file, informasi &lt;em&gt;blok kosong&lt;/em&gt; diteruskan ke storage (Ceph, ZFS, SSD, dll). Hasilnya &lt;code&gt;space reclaim&lt;/code&gt; kapasitas di backend storage bisa balik dipakai dan juga&lt;br&gt;
SSD friendly karena performa SSD lebih terjaga (garbage collection lebih efektif).&lt;/p&gt;

&lt;h3&gt;
  
  
  Point Ketiga
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Set VM CPU Type to 'Host'&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Di Proxmox, saat bikin VM default biasanya kvm64 (aman &amp;amp; universal, tapi fitur CPU host banyak yang dimatikan). Kalau pilih host VM akan pakai instruksi CPU asli dari hardware server. Performa lebih tinggi terutama aplikasi yang sensitif CPU, misalnya database, compression, scientific computing.&lt;/p&gt;

&lt;p&gt;Tapi kekuranganya VM jadi kurang portable, kalau migrasi ke host Proxmox lain yang beda generasi CPU, bisa error. Jadi ini best practice kalau cluster kamu CPU-nya sama semua (homogen).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set VM CPU NUMA (Non-Uniform Memory Access)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Berlaku kalau server punya lebih dari 1 socket fisik CPU (misalnya 2x Intel Xeon atau AMD EPYC). NUMA itu cara akses memori di server multi-CPU, tiap CPU punya memory controller sendiri. Akses memori lokal lebih cepat daripada akses ke memori yang dikontrol CPU lain. Kalau NUMA diaktifkan maka VM akan aware tentang topologi NUMA, Hypervisor (Proxmox/QEMU) bisa mengalokasikan vCPU dan RAM sesuai node NUMA, performa lebih stabil dan latency rendah. Sangat berguna buat workload besar (database, aplikasi high I/O, VM dengan banyak core/RAM).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Solusi&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kalau server kamu 1 socket CPU → NUMA tidak perlu diaktifkan.&lt;/li&gt;
&lt;li&gt;Kalau server kamu ≥2 socket CPU → wajib aktifkan NUMA di setting VM.&lt;/li&gt;
&lt;li&gt;Pastikan jumlah vCPU untuk VM jangan lebih banyak dari core fisik per NUMA node.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Okeh, sementara itu dulu, selanjutanya akan kita update berkala.&lt;/p&gt;

</description>
      <category>proxmox</category>
      <category>devops</category>
      <category>linux</category>
      <category>sysadmin</category>
    </item>
  </channel>
</rss>
