systemd dan journalctl

openSUSE memakai systemd, jadi contekan ini juga berlaku di hampir semua distro modern. Service Perintah Fungsi systemctl status sshd Status service beserta potongan log terakhir systemctl start sshd Jalankan service systemctl stop sshd Hentikan service systemctl restart sshd Restart service systemctl reload sshd Muat ulang konfigurasi tanpa restart (kalau didukung) systemctl enable --now sshd Aktifkan saat boot sekaligus jalankan sekarang systemctl disable --now sshd Matikan saat boot sekaligus hentikan systemctl mask nama Blokir service supaya tidak bisa dijalankan sama sekali systemctl is-active sshd Cek cepat, cocok untuk script systemctl is-enabled sshd Cek apakah aktif saat boot Melihat dan mengubah unit Perintah Fungsi systemctl list-units --type=service Service yang sedang dimuat systemctl --failed Unit yang gagal systemctl list-unit-files --state=enabled Unit yang aktif saat boot systemctl list-timers Daftar timer (pengganti cron) systemctl cat sshd Lihat isi file unit systemctl edit sshd Buat override tanpa mengubah file aslinya systemctl daemon-reload Muat ulang unit setelah mengubah file secara manual Log dengan journalctl Perintah Fungsi journalctl -u sshd Log satu service journalctl -u sshd -f Ikuti log secara live journalctl -b Log sejak boot terakhir journalctl -b -1 Log boot sebelumnya, berguna setelah crash journalctl -p err -b Hanya error ke atas sejak boot journalctl --since "1 hour ago" Log satu jam terakhir journalctl -k Log kernel (seperti dmesg) journalctl --disk-usage Ukuran journal di disk journalctl --vacuum-time=2weeks Hapus log yang lebih lama dari dua minggu Pengaturan sistem Perintah Fungsi hostnamectl set-hostname nama-host Ganti hostname timedatectl set-timezone Asia/Jakarta Ganti zona waktu timedatectl Cek waktu dan status sinkronisasi NTP localectl set-keymap us Ganti layout keyboard di konsol systemctl reboot / systemctl poweroff Reboot / matikan Diagnosis boot Perintah Fungsi systemd-analyze Total waktu boot systemd-analyze blame Service yang paling lama saat boot systemd-analyze critical-chain Rantai service yang memperlambat boot Contoh override Misalnya kamu ingin service otomatis restart kalau mati: ...

9 Oktober 2026 · 2 menit · Rifki Affandi

Perintah Dasar Linux

Contekan umum yang berlaku di hampir semua distro, bukan cuma openSUSE. File dan direktori Perintah Fungsi ls -lah Daftar file lengkap dengan ukuran yang mudah dibaca cd - Kembali ke direktori sebelumnya cp -a sumber tujuan Salin dengan mempertahankan izin dan timestamp mv lama baru Pindah atau ganti nama rm -ri folder Hapus folder dengan konfirmasi mkdir -p a/b/c Buat direktori bertingkat find /etc -name "*.conf" -mtime -1 Cari file .conf yang berubah sehari terakhir grep -rn "teks" /etc Cari teks di dalam file secara rekursif tail -f /var/log/file.log Ikuti isi file log less file Baca file panjang (/ untuk cari, q keluar) Izin dan kepemilikan Perintah Fungsi chmod 644 file rw untuk pemilik, r untuk lainnya chmod 755 skrip.sh Bisa dieksekusi semua, hanya pemilik yang bisa ubah chmod +x skrip.sh Tambah izin eksekusi chown user:grup file Ganti pemilik chown -R user:grup folder Ganti pemilik secara rekursif sudo -i Masuk shell root id Lihat UID, GID, dan grup user Proses dan sumber daya Perintah Fungsi htop / top Monitor proses interaktif ps aux | grep nama Cari proses pgrep -a nama Cari PID beserta perintahnya kill PID / kill -9 PID Hentikan proses (halus / paksa) free -h Pemakaian RAM uptime Lama menyala dan load average lscpu Info CPU Disk Perintah Fungsi df -h Pemakaian per filesystem (di Btrfs, pakai btrfs filesystem usage /) du -sh * Ukuran tiap isi direktori du -h --max-depth=1 / | sort -h Cari direktori yang paling besar lsblk -f Daftar disk, partisi, filesystem, dan UUID mount | column -t Filesystem yang sedang di-mount Arsip dan kompresi Perintah Fungsi tar czf arsip.tar.gz folder/ Buat arsip gzip tar xzf arsip.tar.gz Ekstrak arsip gzip tar tf arsip.tar.gz Lihat isi arsip tanpa ekstrak zstd -19 file Kompres dengan zstd unzip file.zip -d tujuan Ekstrak zip ke folder tertentu Remote Perintah Fungsi ssh user@host Login SSH ssh-keygen -t ed25519 Buat SSH key baru ssh-copy-id user@host Pasang public key di server scp file user@host:/tujuan/ Salin file ke server rsync -avh --progress sumber/ user@host:/tujuan/ Sinkronisasi folder, bisa dilanjutkan kalau putus

9 Oktober 2026 · 2 menit · Rifki Affandi

Memperbesar Disk EC2 (EBS) Tanpa Downtime

Disk root salah satu server MongoDB production saya sudah terpakai 85% (68 dari 80 GB). Sebelum mentok, saya perbesar jadi 120 GB. Kabar baiknya, di EC2 ini bisa dilakukan online: tanpa reboot, tanpa stop MongoDB. Satu hal yang sering bikin bingung: setelah ukuran volume diubah di console, df tetap menunjukkan ukuran lama. Itu karena ada tiga lapisan yang harus diperbesar, dan AWS cuma mengurus lapisan pertama. ...

6 September 2026 · 4 menit · Rifki Affandi

openSUSE Tumbleweed di ThinkPad X1 Nano: Benerin Scaling GDM, Mikrofon, dan Speaker

Beberapa waktu lalu saya pasang openSUSE Tumbleweed dengan GNOME di ThinkPad X1 Nano Gen 1. Secara umum mulus, tapi ada tiga hal yang bikin saya cukup lama ngoprek: Layar login (GDM) tetap di-scale 150%, padahal sesi GNOME sudah 100%. Mikrofon hilang setelah pasang sof-firmware. X1 Nano punya 4 speaker, tapi yang “terdeteksi” cuma 2 dan suaranya pelan dibanding Windows. Tulisan ini merangkum apa yang ternyata jadi penyebab, termasuk jalan buntu yang sempat saya lewati. Siapa tahu kamu kena masalah yang sama. ...

26 Agustus 2026 · 7 menit · Rifki Affandi

Install POWERDNS di Ubuntu 18.04

POWERDNS adalah DNS Server berbasis MySQL, yang ditulis dalam C ++ dan berlisensi Under GPL. PowerDNS dapat dikelola melalui web base interface (PowerAdmin). Pada tutorial kali ini akan membahas bagaimana menginstall dan mengkonfigurasi POWERDNS pada Ubuntu 18.04. Persiapan Ubuntu 18.04 Domain Tahap Instalasi Update repositori pada Ubuntu 18.04 sudo apt update Install MariaDB sudo apt install mariadb-server mariadb-client -y mysql_secure_installation Edit konfigurasi pada MariaDB vim /etc/mysql/mariadb.conf/50-server.cnf ........ bind = 0.0.0.0 ----> ganti dengan ip lokal ........ Restart MariaDB sudo systemctl restart mariadb Buat database pada database sudo mysql -u root -p CREATE DATABASE powerdns CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'YOURPASSWORD'; GRANT ALL ON powerdns.* TO 'powerdns'@'%' IDENTIFIED BY 'YOURPASSWORD'; FLUSH PRIVILEGES; USE powerdns; CREATE TABLE domains ( id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, master VARCHAR(128) DEFAULT NULL, last_check INT DEFAULT NULL, type VARCHAR(6) NOT NULL, notified_serial INT DEFAULT NULL, account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE UNIQUE INDEX name_index ON domains(name); CREATE TABLE records ( id BIGINT AUTO_INCREMENT, domain_id INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, type VARCHAR(10) DEFAULT NULL, content VARCHAR(64000) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, change_date INT DEFAULT NULL, disabled TINYINT(1) DEFAULT 0, ordername VARCHAR(255) BINARY DEFAULT NULL, auth TINYINT(1) DEFAULT 1, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); CREATE INDEX ordername ON records (ordername); CREATE TABLE supermasters ( ip VARCHAR(64) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL, PRIMARY KEY (ip, nameserver) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE TABLE comments ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(10) NOT NULL, modified_at INT NOT NULL, account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, comment TEXT CHARACTER SET 'utf8' NOT NULL, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX comments_name_type_idx ON comments (name, type); CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); CREATE TABLE domainmetadata ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, kind VARCHAR(32), content TEXT, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind); CREATE TABLE cryptokeys ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, flags INT NOT NULL, active BOOL, content TEXT, PRIMARY KEY(id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX domainidindex ON cryptokeys(domain_id); CREATE TABLE tsigkeys ( id INT AUTO_INCREMENT, name VARCHAR(255), algorithm VARCHAR(50), secret VARCHAR(255), PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm); Disable systemd-resolved sudo su systemctl disable systemd-resolved systemctl stop systemd-resolved ls -lh /etc/resolv.conf rm /etc/resolv.conf echo "nameserver 8.8.8.8" > /etc/resolv.conf Install POWERDNS (versi 4.1.13) sudo su edit repositori vi /etc/apt/sources.list.d/pdns.list ............. deb [arch=amd64] http://repo.powerdns.com/ubuntu bionic-auth-41 main ............. vi /etc/apt/preferences.d/pdns ... Package: pdns-* Pin: origin repo.powerdns.com Pin-Priority: 600 ... Install powerdns beserta dependensi yang dibutuhkan curl https://repo.powerdns.com/FD380FBB-pub.asc | sudo apt-key add - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update sudo apt-get install pdns-server pdns-backend-mysql virtualenv python3-pip yarn -y apt-get install -y libmysqlclient-dev python3-mysqldb python-mysqldb libsasl2-dev libffi-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev pkg-config Setelah berhasil terinstall konfigurasi powerdns agar terhubung dengan backend mysql sudo vi /etc/powerdns/pdns.d/pdns.local.gmysql.conf ## Masukkan skrip berikut tanpa tanda # ...... launch=gmysql gmysql-host=#IPHOSTMYSQL gmysql-user=#USER gmysql-dbname=#YOURDB gmysql-password=#YOURPASSWORD gmysql-dnssec=yes Konfigurasi pdns.conf agar bisa dimonitoring echo 'api=yes' >> /etc/powerdns/pdns.conf echo 'api-key=YOURIPKEY' >> /etc/powerdns/pdns.conf echo 'webserver=yes' >> /etc/powerdns/pdns.conf echo 'webserver-address=0.0.0.0' >> /etc/powerdns/pdns.conf echo 'webserver-allow-from=0.0.0.0/0,::/0' >> /etc/powerdns/pdns.conf echo 'webserver-port=8081' >> /etc/powerdns/pdns.conf echo 'version-string=anonymous' >> /etc/powerdns/pdns.conf echo 'webserver-password=YOURPASSWORD' >> /etc/powerdns/pdns.conf Tes koneksi ke database /usr/sbin/pdns_server --daemon=no --guardian=no --loglevel=9 Jika berhasil restart pdns service sudo systemctl restart pdns Untuk tampilan GUI (POWERDNS Admin) di postingan selanjutnya ya! Salam Kebebasan!! Bye~ ...

14 September 2020 · 3 menit · Rifki Affandi

Setting Konfigurasi HAProxy Di OPNsense

OPNsense adalah proyek firewall berbasis open source berbasis FreeBSD OPNsense. Berikut adalah tutorial untuk mengkonfigurasi HAProxy di OPNsense. 1. Konfigurasi Firewall untuk HAProxy Buat 2 IP Forward pada konfigurasi firewall Firewall > NAT > Port Forward > + New Rule Interface : LAN TCP/IP Ver : IPv4 Protocol : TCP Source : any Destination port range : From - HTTP , to - HTTP Redirect target IP : #IPADDRESSOPNSENSE Redirect target port : HTTP SAVE Interface : LAN TCP/IP Ver : IPv4 Protocol : TCP Source : any Destination port range : From - HTTPS , to - HTTPS Redirect target IP : #IPADDRESSOPNSENSE Redirect target port : HTTP SAVE Buat Rule Floating Firewall > Rules Floating > + New Rule Action : Pass Interface : LAN Direction : in TCP/IP ver : IPv4 Protocol : TCP Source : any Destination : Lan Address Destination port range : From - HTTP , to - HTTP Action : Pass Interface : LAN Direction : in TCP/IP ver : IPv4 Protocol : TCP Source : any Destination : Lan Address Destination port range : From - HTTPS , to - HTTPS 2. Konfigurasi HAProxy Service > HAProxy > Setting Tambahkan Server Real Servers > Real Servers > + add Name : test-http FQDN or IP : #IPPUBLICSERVER Port : 80 SAVE Tambahkan Backend Pool Virtual Services > Backend Pool > + add Name : test_http Mode : Layer 7 Servers : test-http SAVE Tambahkan Conditions Rules and Check > Conditions > + add Name: test-http Condition type : Host Matches Host String : test-http Tambahkan Rules untuk frontend 443 Rules and Check > Rules > + add Name : pass_https_test_http Select Condition : test-http Execute function : Use specified Backend Pool Use backend pool : test_http Tambahkan Rules untuk frontend 80 (untuk redirect traffic ke https) Rules and Check > Rules > + add Name : redirect_to_https_http_test_nicolas_my_id Select Condition : test-http_nicolas_my_id Execute function : http-request redirect HTTP Redirect : scheme https Tambahkan frontend untuk port 80 Virtual Services > Public Services > + add Name : FrontEndHTTP Listent address : 0.0.0.0:80 Select Rules : redirect_to_https_http Tambahkan frontend untuk port 443 Virtual Services > Public Services > + add Name : FrontEndHTTPS Listent address : 0.0.0.0:443 Enable SSL offloading : (✓) Certificates : test-http # Pastikan sertifikat sudah di-import ke OPNsense Select Rules : pass_https_test_http

24 Agustus 2020 · 2 menit · Rifki Affandi

Membuat Blog Sederhana Dengan Hugo

Kenapa Hugo? Pertanyaan ini pasti muncul ketika melihat tulisan ini, kenapa mesti Hugo? apa hebatnya? kn ada wordpress dan blogger dan lain - lain, okelah jika dibandingkan dengan CMS tersebut web statis seperti Hugo ini tidak kalah powerful, tapi saya punya beberapa kendala ketika menggunakan wordpress, antara lain : Size storage di hosting saya sangat kecil (maklum belom jadi sultan), sehingga ketika mau upload gambar mesti mikir - mikir dulu beberapa parameter seperti size dan lain - lain. Kalau tidak ada Internet mau kustomisasi blog susah, ya walaupun kadang tinggal install LAMPP atau XAMPP si, tapi menurut saya hal tersebut mulai agak ribet. Hugo ini praktis, dulu pernah coba Jekyll tapi ya rada nganu, panjang kalo diceritain. Hugo ini enak, deploy cepet, gampang dipelajarin pula, walau belum bisa bahasa GO pun. Jika dikolaborasikan dengan GitHub Pages Hugo ini menyenangkan, build otomatis pake travis CI atau tools lain. pokoknya tinggal add -> commit -> push -> ngopi -> finish. Menulis konten di Hugo menggunakan MD (Markdown) yang mana format MD ini gampang banget dipelajarin, dokumentasi lengkap, dan tutorial banyak pula. Oke lanjut tutorial buat web dengan Hugo. ...

27 Mei 2020 · 2 menit · Rifki Affandi