Beranda Progammer Android Linux Server Troubleshooting Lengkap: 100 Masalah Ubuntu, Debian, CentOS, AlmaLinux dan Cara Mengatasinya

Linux Server Troubleshooting Lengkap: 100 Masalah Ubuntu, Debian, CentOS, AlmaLinux dan Cara Mengatasinya

0
Linux Server Troubleshooting Lengkap: 100 Masalah Ubuntu, Debian, CentOS, AlmaLinux dan Cara Mengatasinya
Linux Server Troubleshooting Lengkap: 100 Masalah Ubuntu, Debian, CentOS, AlmaLinux dan Cara Mengatasinya

Linux server banyak digunakan untuk menjalankan website, API, database, aplikasi internal, reverse proxy, mail server, container, hingga sistem monitoring. Distribusi seperti UbuntuDebianCentOS, dan AlmaLinux populer karena stabil, fleksibel, dan cocok untuk production.

Namun, server Linux juga bisa mengalami banyak masalah: SSH tidak bisa diakses, permission file salah, disk penuh, inode habis, RAM habis, CPU 100%, service gagal start, error

systemd

, log

journalctl

membengkak, Nginx gagal, Apache mati, MySQL tidak jalan, PHP-FPM down, swap tidak aktif, DNS gagal resolve, cron tidak berjalan, timezone salah, SSL error, firewall memblokir koneksi, hingga masalah update package dan network.

Artikel ini membahas 100 masalah Linux server yang paling sering terjadi, lengkap dengan penyebab, cara cek, solusi, dan cara mencegahnya. Fokus pembahasan mencakup Ubuntu, Debian, CentOS, AlmaLinux, dan distro Linux server lain yang memakai

systemd

.

Checklist Awal Saat Server Bermasalah
Sebelum masuk ke masing-masing masalah, lakukan pemeriksaan cepat berikut.

Cek Status Server

uptime

Perintah ini menampilkan waktu server aktif, jumlah user login, dan load average.

Cek Disk

df -h

Untuk inode:
df -i

Cek RAM

free -m

Cek CPU dan Proses

top

Atau:
htop

Jika

htop

belum tersedia:

sudo apt install htop

Ubuntu/Debian, atau:
sudo dnf install htop

CentOS/AlmaLinux.

Cek Service

systemctl status nama-service

Cek Log Systemd

journalctl -xe

Cek Port

ss -tulpn

Cek Koneksi Internet

ping 8.8.8.8 ping google.com

Jika ping IP berhasil tetapi domain gagal, kemungkinan masalah DNS.

1. SSH Connection Refused

SSH Connection Refused terjadi ketika client mencoba terhubung ke server, tetapi koneksi ditolak.

Penyebab

Service SSH belum berjalan.
Port SSH salah.
Firewall menutup port SSH.
SSH daemon crash.
Server menggunakan port custom, bukan 22.
IP server salah.
Provider cloud memblokir port melalui security group.

Cara Cek

Dari server, jika masih punya akses console:
sudo systemctl status ssh

Ubuntu/Debian biasanya memakai service:
ssh

CentOS/AlmaLinux biasanya:
sshd

Cek port listening:
sudo ss -tulpn | grep ssh

Solusi

Ubuntu/Debian:
sudo systemctl restart ssh sudo systemctl enable ssh

CentOS/AlmaLinux:
sudo systemctl restart sshd sudo systemctl enable sshd

Jika firewall aktif, buka port 22.
UFW:
sudo ufw allow 22/tcp sudo ufw reload

Firewalld:
sudo firewall-cmd –permanent –add-service=ssh sudo firewall-cmd –reload

Jika memakai port custom, misalnya 2222:
ssh -p 2222 user@ip-server

Pencegahan

Jangan menutup port SSH sebelum mengetes koneksi baru.
Simpan akses console dari provider VPS.
Dokumentasikan port SSH.
Gunakan firewall rule yang jelas.

2. SSH Permission Denied

Error ini muncul ketika koneksi SSH sampai ke server, tetapi login ditolak.

Penyebab

Password salah.
Public key belum terpasang.

Permission folder

.ssh

salah.

User tidak ada.
Login root dinonaktifkan.
PasswordAuthentication

dinonaktifkan.

Key private salah.

Cara Cek

Gunakan mode verbose:
ssh -v user@ip-server

Cek log server:
Ubuntu/Debian:
sudo tail -f /var/log/auth.log

CentOS/AlmaLinux:
sudo tail -f /var/log/secure

Solusi

Pastikan permission SSH benar:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

Pastikan owner benar:
chown -R user:user /home/user/.ssh

Jika memakai private key:
ssh -i ~/.ssh/id_rsa user@ip-server

Pencegahan

Gunakan SSH key, bukan password.
Jangan membagikan private key.
Simpan backup public key admin.
Tes login user baru sebelum menonaktifkan user lama.

3. SSH Timeout

SSH timeout berbeda dari connection refused. Timeout biasanya berarti koneksi tidak mendapat respons.

Penyebab

IP server salah.
Firewall drop paket.
Security group cloud belum membuka port.
Server mati.
Network provider bermasalah.
Routing bermasalah.

Cara Cek

ping ip-server

Cek port:
nc -vz ip-server 22

Atau:
telnet ip-server 22

Solusi

Cek status VPS dari panel provider.
Pastikan security group membuka port SSH.
Pastikan firewall server tidak drop koneksi.
Gunakan console provider jika SSH tidak bisa.

Pencegahan

Jangan mengubah firewall tanpa sesi SSH cadangan.
Buat rule allow untuk IP admin.
Gunakan monitoring uptime.

4. SSH Key Tidak Berfungsi

SSH key sering gagal karena file salah, permission terlalu terbuka, atau public key tidak sesuai.

Penyebab

Private key salah.

Public key belum masuk

authorized_keys

.

Permission private key terlalu terbuka.
Format key rusak.
User login berbeda.
PubkeyAuthentication

disabled.

Solusi

Di client:
chmod 600 ~/.ssh/id_rsa

Di server:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

Cek konfigurasi:
sudo nano /etc/ssh/sshd_config

Pastikan:
PubkeyAuthentication yes

Restart SSH:
sudo systemctl restart ssh

Atau:
sudo systemctl restart sshd

Pencegahan

Gunakan nama key yang jelas.
Jangan mengedit private key secara manual.
Simpan public key di password manager atau dokumentasi internal.

5. Root Login Ditolak

Banyak server menonaktifkan login root langsung demi keamanan.

Penyebab

PermitRootLogin no

.

Provider cloud menonaktifkan root login.
Root tidak punya password.
SSH key root tidak tersedia.

Solusi

Login sebagai user biasa lalu gunakan:
sudo -i

Jika benar-benar perlu mengaktifkan root login, edit:
sudo nano /etc/ssh/sshd_config

Namun untuk keamanan, lebih baik gunakan:
PermitRootLogin prohibit-password

Lalu restart SSH.

Pencegahan

Gunakan user admin dengan sudo.
Jangan mengaktifkan password login root.
Batasi SSH berdasarkan IP jika memungkinkan.

6. Permission Denied pada File atau Folder

Error Permission denied muncul ketika user atau service tidak punya izin membaca, menulis, atau mengeksekusi file.

Penyebab

Permission file terlalu ketat.
Owner file salah.
Service berjalan sebagai user berbeda.
Folder parent tidak punya execute permission.
SELinux memblokir akses.
File berada di filesystem read-only.

Cara Cek

ls -la /path/file

Cek user service:
ps aux | grep nama-service

Solusi

Ubah owner:
sudo chown -R user:group /path/folder

Ubah permission:
sudo chmod 755 /path/folder sudo chmod 644 /path/file

Untuk folder yang perlu ditulis web server:
Ubuntu/Debian:
sudo chown -R www-data:www-data /var/www/app/storage

CentOS/AlmaLinux:
sudo chown -R apache:apache /var/www/app/storage

Pencegahan

Jangan memakai

chmod 777

sebagai solusi permanen.

Pahami user yang menjalankan service.
Pisahkan folder read-only dan writable.

7. Ownership File Salah

Ownership salah sering terjadi setelah upload file menggunakan root atau deploy manual.

Penyebab

File dibuat oleh root.
Deploy memakai user berbeda.
Rsync mempertahankan owner lama.
Extract zip/tar sebagai root.

Solusi

Cek owner:
ls -la

Ubah owner project:
sudo chown -R deploy:deploy /var/www/app

Untuk folder tertentu yang perlu ditulis web server:
sudo chown -R www-data:www-data /var/www/app/storage

Pencegahan

Gunakan user deploy konsisten.
Jangan deploy aplikasi sebagai root jika tidak perlu.
Atur permission dalam script deployment.

8. File Tidak Bisa Dieksekusi

Script gagal dijalankan dengan pesan permission denied.

Penyebab

File tidak memiliki bit execute.
Shebang salah.
File memakai line ending Windows.

Filesystem mounted dengan opsi

noexec

.

Solusi

Tambahkan execute permission:
chmod +x script.sh

Cek shebang:
head -n 1 script.sh

Contoh:
#!/bin/bash

Jika line ending Windows:
dos2unix script.sh

Pencegahan

Simpan script dengan format LF.
Tambahkan permission executable di Git.

Hindari menjalankan script dari mount

noexec

.

9. Disk Full

Disk full adalah salah satu penyebab paling umum server down.

Gejala

Aplikasi gagal menulis log.
Database mati.
Upload gagal.
Package manager gagal.
Service tidak bisa start.

Muncul error

No space left on device

.

Cara Cek

df -h

Cari folder besar:
sudo du -h –max-depth=1 / | sort -h

Cek folder

/var

:

sudo du -h –max-depth=1 /var | sort -h

Solusi

Bersihkan cache package.
Ubuntu/Debian:
sudo apt clean sudo apt autoremove

CentOS/AlmaLinux:
sudo dnf clean all

Hapus log lama dengan hati-hati:
sudo journalctl –vacuum-time=7d

Cek Docker jika memakai Docker:
docker system df docker system prune

Pencegahan

Pasang monitoring disk.
Aktifkan logrotate.
Pisahkan partisi data besar.
Jangan simpan backup lokal tanpa rotasi.

10. Inode Full

Inode full terjadi ketika jumlah file terlalu banyak walaupun kapasitas disk masih terlihat tersedia.

Gejala

Tidak bisa membuat file baru.

Error

No space left on device

.

df -h

masih lega, tetapi sistem tetap gagal menulis file.

Cara Cek

df -i

Cari folder dengan banyak file:
sudo find /var -xdev -type f | cut -d/ -f2-4 | sort | uniq -c | sort -nr | head

Penyebab

File session terlalu banyak.
Cache aplikasi menumpuk.
Mail queue menumpuk.
Temporary file tidak dibersihkan.
Log kecil dalam jumlah besar.

Solusi

Bersihkan cache aplikasi, session, atau temporary file sesuai sumbernya.
Contoh:
sudo find /tmp -type f -mtime +7 -delete

Hati-hati jangan menghapus file aktif secara sembarangan.

Pencegahan

Gunakan cleanup otomatis.
Batasi jumlah file cache/session.
Monitor inode, bukan hanya disk size.

11. Log Membengkak

Log yang tidak dibatasi dapat memenuhi disk.

Penyebab

Aplikasi error terus-menerus.
Debug mode aktif di production.
Logrotate tidak berjalan.
Journal systemd tidak dibatasi.
Access log traffic tinggi.

Cara Cek

sudo du -h /var/log –max-depth=1 | sort -h

Solusi

Kosongkan file log tanpa menghapus file:
sudo truncate -s 0 /var/log/nama-log.log

Untuk journal:
sudo journalctl –vacuum-size=500M

Pencegahan

Konfigurasi logrotate.
Matikan debug mode production.
Batasi ukuran journal.
Kirim log ke sistem monitoring jika traffic tinggi.

12. Folder

/tmp

Penuh

Folder

/tmp

sering dipakai aplikasi, package manager, upload sementara, dan proses build.

Cara Cek

df -h /tmp sudo du -h /tmp –max-depth=1 | sort -h

Solusi

Hapus file lama:
sudo find /tmp -type f -mtime +3 -delete

Restart service yang memakai file temporary jika perlu.

Pencegahan

Gunakan cleanup otomatis.

Pastikan aplikasi tidak menyimpan file besar di

/tmp

.

Monitor partisi

/tmp

jika dipisah.

13. RAM Habis

RAM habis membuat aplikasi lambat, service crash, atau proses dibunuh OOM killer.

Cara Cek

free -m

Cek proses pemakai RAM:
ps aux –sort=-%mem | head

Cek OOM:
dmesg | grep -i “killed process”

Solusi

Restart service yang memory leak.
Tambahkan swap.
Optimalkan aplikasi.
Kurangi worker berlebihan.
Upgrade RAM jika beban memang tinggi.
Restart service:
sudo systemctl restart nama-service

Pencegahan

Monitor RAM.
Gunakan limit worker.
Tambahkan swap sebagai cadangan.
Investigasi memory leak, jangan hanya restart terus.

14. Swap Tidak Aktif

Swap membantu server bertahan saat RAM hampir habis, walaupun tidak secepat RAM.

Cara Cek

swapon –show free -m

Jika tidak ada output dari

swapon –show

, swap belum aktif.

Solusi Membuat Swap File

sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

Tambahkan ke

/etc/fstab

:

/swapfile none swap sw 0 0

Pencegahan

Gunakan swap pada VPS kecil.
Jangan mengandalkan swap untuk beban berat permanen.
Monitor swap usage.

15. Swap Error

Swap error bisa muncul saat mengaktifkan swap file.

Penyebab

Permission swapfile salah.

File belum diformat

mkswap

.

Entry

/etc/fstab

salah.

Filesystem tidak mendukung swapfile tertentu.
Swap sudah aktif dengan nama lain.

Solusi

Pastikan permission:
sudo chmod 600 /swapfile

Format:
sudo mkswap /swapfile

Aktifkan:
sudo swapon /swapfile

Cek:
swapon –show

Pencegahan

Ikuti langkah pembuatan swap secara urut.

Backup

/etc/fstab

sebelum mengedit.

Tes

sudo mount -a

setelah ubah fstab.

16. CPU 100%

CPU 100% membuat server lambat dan response aplikasi meningkat.

Cara Cek

top

Atau:
ps aux –sort=-%cpu | head

Penyebab

Query database berat.
Worker terlalu banyak.
Bot crawling agresif.
Infinite loop aplikasi.
Proses backup/kompresi.
Malware atau cryptominer.

Solusi

Identifikasi proses:
ps -fp PID

Jika proses tidak penting dan bermasalah:
sudo kill PID

Jika tidak berhenti:
sudo kill -9 PID

Cek log aplikasi dan access log web server untuk traffic abnormal.

Pencegahan

Gunakan monitoring CPU.
Batasi worker.
Optimalkan query.
Pasang rate limit.
Audit keamanan jika proses mencurigakan.

17. Load Average Tinggi

Load average tinggi belum tentu CPU 100%. Bisa juga karena I/O wait.

Cara Cek

uptime top

Cek I/O:
iostat -x 1

Jika belum ada:
sudo apt install sysstat

Atau:
sudo dnf install sysstat

Solusi

Jika CPU tinggi, cari proses CPU.
Jika I/O wait tinggi, cek disk dan database.
Jika RAM habis, cek swap dan OOM.
Kurangi proses berat bersamaan.

Pencegahan

Monitor CPU, RAM, disk I/O.
Jadwalkan backup di jam sepi.
Optimalkan database dan caching.

18. Zombie Process

Zombie process adalah proses yang sudah selesai tetapi masih tercatat karena parent process belum mengambil statusnya.

Cara Cek

ps aux | grep Z

Solusi

Cari parent process:
ps -o ppid= -p PID

Restart parent service jika aman:
sudo systemctl restart nama-service

Pencegahan

Perbaiki aplikasi yang membuat child process.
Update service yang sering menghasilkan zombie.
Monitor jumlah process.

19. Service Failed

Service failed terjadi ketika service

systemd

gagal start atau crash.

Cara Cek

systemctl status nama-service

Log detail:
journalctl -u nama-service -xe

Penyebab

Konfigurasi salah.
Port bentrok.
File permission salah.
Dependency belum siap.
Binary tidak ditemukan.
Environment variable kurang.

Solusi

Setelah memperbaiki penyebab, restart:
sudo systemctl restart nama-service

Jika unit file berubah:
sudo systemctl daemon-reload sudo systemctl restart nama-service

Pencegahan

Cek config sebelum restart.
Gunakan staging.
Simpan konfigurasi dengan version control.
Jangan restart service production tanpa membaca log.

20. Service Tidak Auto Start

Service berjalan saat manual start, tetapi mati setelah reboot.

Penyebab

Service belum enable.

Unit file tidak punya

[Install]

.

Dependency boot belum siap.
Service crash saat boot.

Solusi

Enable service:
sudo systemctl enable nama-service

Cek:
systemctl is-enabled nama-service

Pencegahan

Enable service penting setelah install.
Reboot test setelah setup server.
Gunakan monitoring uptime service.

21. Systemd Unit Error

Systemd unit error sering muncul ketika membuat service custom.

Penyebab

Syntax unit salah.
ExecStart

path salah.

Working directory tidak ada.
User service tidak punya izin.
Environment file tidak ditemukan.

Contoh Unit Sederhana

[Unit] Description=My App After=network.target [Service] WorkingDirectory=/var/www/app ExecStart=/usr/bin/node server.js Restart=always User=deploy Environment=NODE_ENV=production [Install] WantedBy=multi-user.target

Setelah edit:
sudo systemctl daemon-reload sudo systemctl restart myapp

Pencegahan

Gunakan path absolut.
Tes command manual sebagai user service.
Baca log journal saat gagal.

22. Journalctl Error

journalctl

digunakan untuk membaca log systemd. Error bisa terjadi karena journal rusak atau permission.

Penyebab

User tidak punya akses.
File journal corrupt.
Disk penuh.
Systemd-journald bermasalah.

Solusi

Gunakan sudo:
sudo journalctl -xe

Restart journald:
sudo systemctl restart systemd-journald

Cek disk:
df -h

Pencegahan

Batasi ukuran journal.
Pastikan disk tidak penuh.
Jangan menghapus file journal manual tanpa memahami risikonya.

23. Journal Log Terlalu Besar

Journal systemd bisa memenuhi disk.

Cara Cek

journalctl –disk-usage

Solusi

Batasi berdasarkan waktu:
sudo journalctl –vacuum-time=7d

Atau ukuran:
sudo journalctl –vacuum-size=500M

Konfigurasi permanen:
sudo nano /etc/systemd/journald.conf

Contoh:
SystemMaxUse=500M

Restart:
sudo systemctl restart systemd-journald

Pencegahan

Set batas journal.
Gunakan logrotate untuk log non-journal.

Monitor

/var/log

.

24. Nginx Failed

Nginx gagal start biasanya karena konfigurasi salah atau port bentrok.

Cara Cek

sudo systemctl status nginx sudo nginx -t

Penyebab

Syntax config salah.
Port 80/443 sudah dipakai.
SSL certificate path salah.
Permission file web salah.
Include file tidak ditemukan.

Solusi

Test config:
sudo nginx -t

Jika valid:
sudo systemctl reload nginx

Jika gagal, baca pesan error dan perbaiki file yang disebut.
Cek port:
sudo ss -tulpn | grep ‘:80\|:443’

Pencegahan

Selalu jalankan

nginx -t

sebelum reload.

Backup konfigurasi sebelum mengubah.
Gunakan struktur site config yang rapi.

25. Nginx 502 Bad Gateway

502 biasanya berarti Nginx tidak bisa terhubung ke upstream seperti PHP-FPM, Node.js, Python Gunicorn, atau service backend.

Penyebab

Backend mati.
PHP-FPM down.
Socket path salah.
Port backend salah.
Permission socket salah.
Timeout upstream.

Solusi

Cek backend:
sudo systemctl status php8.2-fpm

Cek Nginx error log:
sudo tail -f /var/log/nginx/error.log

Cek socket PHP-FPM:
ls -la /run/php/

Pastikan config Nginx mengarah ke socket/port yang benar.

Pencegahan

Monitor backend service.
Gunakan config upstream yang benar.

Reload Nginx hanya setelah

nginx -t

.

26. Nginx 403 Forbidden

403 berarti Nginx menolak akses.

Penyebab

Permission folder salah.
Tidak ada index file.
Root path salah.
Autoindex off.
SELinux memblokir.
Nginx user tidak bisa membaca file.

Solusi

Cek root path:
root /var/www/site/public; index index.html index.php;

Permission umum:
sudo chmod 755 /var/www sudo chmod -R 755 /var/www/site

Pastikan file dimiliki user yang tepat.

Pencegahan

Gunakan document root yang benar.
Jangan arahkan root ke folder sensitif.
Pastikan permission minimal cukup.

27. Nginx 404 Not Found

404 berarti file atau route tidak ditemukan.

Penyebab

Root path salah.
File memang tidak ada.

Konfigurasi

try_files

salah.

Reverse proxy salah path.
Aplikasi belum deploy ke folder benar.

Solusi

Untuk Laravel:
location / { try_files $uri $uri/ /index.php?$query_string; }

Untuk SPA:
location / { try_files $uri /index.html; }

Pencegahan

Sesuaikan config dengan jenis aplikasi.
Cek path deploy.
Test setelah reload.

28. Apache Failed

Apache gagal start karena konfigurasi salah, port bentrok, atau module belum aktif.

Cara Cek

sudo systemctl status apache2

Ubuntu/Debian memakai

apache2

, sedangkan CentOS/AlmaLinux biasanya

httpd

.

CentOS/AlmaLinux:
sudo systemctl status httpd

Test config:
sudo apachectl configtest

Solusi

Perbaiki config sesuai pesan error lalu restart:
sudo systemctl restart apache2

Atau:
sudo systemctl restart httpd

Pencegahan

Jalankan configtest sebelum restart.
Hindari konflik dengan Nginx pada port sama.
Dokumentasikan virtual host.

29. Apache Port Bentrok

Apache dan Nginx sering bentrok karena sama-sama memakai port 80/443.

Cara Cek

sudo ss -tulpn | grep ‘:80\|:443’

Solusi

Matikan salah satu service:
sudo systemctl stop nginx

Atau ubah port Apache/Nginx.

Pencegahan

Tentukan hanya satu reverse proxy utama.
Jangan menjalankan Apache dan Nginx di port sama.
Gunakan port internal berbeda untuk backend.

30. Apache Permission Error

Apache tidak bisa membaca file website karena permission atau SELinux.

Solusi Ubuntu/Debian

sudo chown -R www-data:www-data /var/www/site sudo chmod -R 755 /var/www/site

Solusi CentOS/AlmaLinux

sudo chown -R apache:apache /var/www/site sudo chmod -R 755 /var/www/site

Jika SELinux aktif:
getenforce

Atur context web:
sudo restorecon -Rv /var/www/site

Pencegahan

Gunakan owner sesuai web server.

Jangan sembarang

chmod 777

.

Perhatikan SELinux di RHEL-based distro.

31. MySQL Failed

MySQL atau MariaDB gagal start dapat membuat aplikasi down.

Cara Cek

sudo systemctl status mysql

Atau:
sudo systemctl status mariadb

Log:
sudo journalctl -u mysql -xe

Penyebab

Disk penuh.
Config salah.
Data directory rusak.
Port bentrok.
Permission datadir salah.
Memory tidak cukup.

Solusi

Cek disk:
df -h

Cek log MySQL:
sudo tail -f /var/log/mysql/error.log

Atau MariaDB:
sudo journalctl -u mariadb -xe

Perbaiki penyebab spesifik lalu restart:
sudo systemctl restart mysql

Pencegahan

Backup database.
Monitor disk dan RAM.
Jangan mengubah config database tanpa test.
Gunakan slow query log untuk optimasi.

32. MySQL Access Denied

Error ini muncul saat user tidak bisa login ke MySQL.

Penyebab

Password salah.
User tidak punya grant.
Host user tidak cocok.
Plugin authentication berbeda.

Aplikasi membaca

.env

lama.

Solusi

Login sebagai root:
sudo mysql

Cek user:
SELECT user, host FROM mysql.user;

Grant akses:
GRANT ALL PRIVILEGES ON nama_db.* TO ‘user’@’localhost’ IDENTIFIED BY ‘password’; FLUSH PRIVILEGES;

Untuk aplikasi remote, host bisa

%

, tetapi gunakan dengan hati-hati.

Pencegahan

Gunakan user database khusus aplikasi.
Jangan memakai root untuk aplikasi.
Dokumentasikan credential dengan aman.

33. MySQL Disk Full

Database sangat sensitif terhadap disk full.

Gejala

Insert/update gagal.
MySQL crash.
Binary log membesar.

Error

No space left on device

.

Solusi

Cek disk:
df -h

Cek folder MySQL:
sudo du -h /var/lib/mysql –max-depth=1 | sort -h

Bersihkan binary log dengan benar dari MySQL, jangan hapus file sembarangan.
Contoh:
PURGE BINARY LOGS BEFORE ‘2026-07-01 00:00:00’;

Pencegahan

Monitor ukuran database.
Rotasi binary log.
Backup rutin.
Pisahkan storage database jika perlu.

34. MySQL Too Many Connections

Aplikasi gagal konek karena jumlah koneksi MySQL mencapai batas.

Cara Cek

SHOW STATUS LIKE ‘Threads_connected’; SHOW VARIABLES LIKE ‘max_connections’;

Solusi

Naikkan

max_connections

jika resource cukup, tetapi cari penyebab koneksi bocor.

Cek process list:
SHOW PROCESSLIST;

Restart aplikasi jika connection pool bocor.

Pencegahan

Gunakan connection pool dengan benar.
Tutup koneksi yang tidak dipakai.
Optimalkan query lambat.
Monitor koneksi database.

35. PHP-FPM Down

PHP-FPM down membuat website PHP seperti Laravel, WordPress, atau CodeIgniter menghasilkan 502.

Cara Cek

sudo systemctl status php8.2-fpm

Versi bisa berbeda, misalnya

php8.1-fpm

atau

php-fpm

.

CentOS/AlmaLinux:
sudo systemctl status php-fpm

Solusi

Restart:
sudo systemctl restart php8.2-fpm

Cek log:
sudo journalctl -u php8.2-fpm -xe

Pencegahan

Monitor PHP-FPM.
Atur worker sesuai RAM.
Jangan mengaktifkan extension tidak perlu.
Cek error log aplikasi.

36. PHP-FPM Socket Error

Nginx sering menghubungi PHP-FPM lewat Unix socket.

Penyebab

Socket path salah.
PHP-FPM versi berubah.
Permission socket salah.
PHP-FPM tidak berjalan.

Solusi

Cek socket:
ls -la /run/php/

Config Nginx harus sesuai:
fastcgi_pass unix:/run/php/php8.2fpm.sock;

Jika memakai TCP:
fastcgi_pass 127.0.0.1:9000;

Pencegahan

Setelah upgrade PHP, update config Nginx.
Gunakan versi PHP yang konsisten.
Test Nginx config sebelum reload.

37. PHP-FPM Permission Error

PHP-FPM mungkin tidak bisa membaca/menulis file aplikasi.

Penyebab

Pool PHP-FPM berjalan sebagai user berbeda.
Folder storage/cache tidak writable.
Permission upload folder salah.
SELinux blocking.

Solusi

Cek pool config:
grep -R “user =” /etc/php/*/fpm/pool.d/

Sesuaikan owner folder writable:
sudo chown -R www-data:www-data /var/www/app/storage

CentOS/AlmaLinux:
sudo chown -R apache:apache /var/www/app/storage

Pencegahan

Samakan user Nginx/Apache dan PHP-FPM jika sesuai.
Batasi folder writable.

Jangan gunakan

777

permanen.

38. PHP Extension Missing

Aplikasi PHP sering gagal karena extension belum terinstall.

Gejala

Laravel meminta

mbstring

,

pdo_mysql

,

xml

,

curl

,

zip

, atau

intl

.

Composer install gagal.
Website error 500.

Solusi Ubuntu/Debian

sudo apt install php-mbstring php-xml php-curl php-zip php-mysql php-intl sudo systemctl restart php8.2-fpm

Solusi CentOS/AlmaLinux

sudo dnf install php-mbstring php-xml php-curl php-zip php-mysqlnd php-intl sudo systemctl restart php-fpm

Pencegahan

Dokumentasikan extension aplikasi.
Samakan environment staging dan production.
Cek requirement sebelum deploy.

39. DNS Error

DNS error membuat server tidak bisa resolve domain.

Cara Cek

ping 8.8.8.8 ping google.com

Jika ping IP berhasil tetapi domain gagal, DNS bermasalah.
Cek resolver:
cat /etc/resolv.conf

Solusi

Jika memakai systemd-resolved:
systemctl status systemd-resolved

Restart:
sudo systemctl restart systemd-resolved

Set DNS sementara:
sudo nano /etc/resolv.conf

Contoh:
nameserver 1.1.1.1 nameserver 8.8.8.8

Pencegahan

Gunakan DNS resolver stabil.
Hindari edit manual jika dikelola NetworkManager/cloud-init.
Monitor konektivitas DNS.

40. DNS Resolve Lambat

Server bisa resolve domain, tetapi lambat.

Penyebab

DNS resolver lambat.
IPv6 bermasalah.
Search domain salah.
Network latency tinggi.

Solusi

Test:
time dig google.com

Gunakan DNS lebih cepat melalui konfigurasi network yang sesuai.

Pencegahan

Gunakan resolver lokal/provider terpercaya.
Hindari terlalu banyak search domain.
Monitor latency DNS.

41. Network Interface Down

Interface jaringan down membuat server tidak bisa diakses.

Cara Cek

ip addr ip link

Solusi

Aktifkan interface:
sudo ip link set eth0 up

Nama interface bisa berbeda seperti

ens3

,

ens18

, atau

enp0s3

.

Untuk Ubuntu dengan Netplan:
sudo netplan apply

Pencegahan

Backup config network sebelum edit.
Gunakan console provider saat mengubah network.
Jangan restart network sembarangan pada remote server tanpa akses cadangan.

42. IP Address Salah

IP salah bisa terjadi karena konfigurasi statis keliru.

Cara Cek

ip addr ip route

Solusi

Ubuntu Netplan biasanya di:
/etc/netplan/

Setelah edit:
sudo netplan try sudo netplan apply

CentOS/AlmaLinux dapat memakai NetworkManager:
nmcli connection show

Pencegahan

Gunakan

netplan try

agar rollback otomatis jika gagal.

Catat IP, gateway, dan DNS dari provider.
Hindari mengubah config network tanpa console access.

43. Gateway Tidak Tersedia

Tanpa gateway, server tidak bisa keluar internet.

Cara Cek

ip route

Harus ada default route seperti:
default via 192.168.1.1 dev eth0

Solusi

Tambahkan sementara:
sudo ip route add default via GATEWAY_IP

Untuk permanen, edit Netplan atau NetworkManager sesuai distro.

Pencegahan

Dokumentasikan gateway.
Jangan hapus default route.
Test koneksi setelah perubahan network.

44. Firewall Error

Firewall error dapat memblokir SSH, HTTP, HTTPS, database, atau service internal.

Cara Cek UFW

sudo ufw status verbose

Cara Cek Firewalld

sudo firewall-cmd –list-all

Solusi

Buka HTTP dan HTTPS.
UFW:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp

Firewalld:
sudo firewall-cmd –permanent –add-service=http sudo firewall-cmd –permanent –add-service=https sudo firewall-cmd –reload

Pencegahan

Jangan aktifkan firewall sebelum allow SSH.
Gunakan rule minimal.
Dokumentasikan port service.

45. Port Tertutup

Port tertutup membuat service tidak bisa diakses dari luar.

Cara Cek

Di server:
sudo ss -tulpn | grep PORT

Dari client:
nc -vz domain.com PORT

Solusi

Pastikan service listening.
Buka firewall.
Cek security group cloud.

Pastikan aplikasi bind ke

0.0.0.0

, bukan hanya

127.0.0.1

.

Pencegahan

Tes dari luar server.
Dokumentasikan port public.
Gunakan reverse proxy untuk aplikasi web.

46. UFW Salah Konfigurasi

UFW mudah dipakai, tetapi bisa mengunci akses SSH jika salah.

Solusi Aman

Sebelum enable UFW:
Atau:
sudo ufw allow 22/tcp

Lalu:
sudo ufw enable sudo ufw status numbered

Hapus rule berdasarkan nomor:
sudo ufw delete NOMOR

Pencegahan

Selalu allow SSH lebih dulu.
Simpan sesi SSH aktif saat mengubah firewall.
Gunakan console provider sebagai cadangan.

47. Firewalld Salah Konfigurasi

Firewalld umum pada CentOS dan AlmaLinux.

Cara Cek

sudo firewall-cmd –state sudo firewall-cmd –list-all

Solusi

Buka SSH:
sudo firewall-cmd –permanent –add-service=ssh sudo firewall-cmd –reload

Buka port custom:
sudo firewall-cmd –permanent –add-port=8080/tcp sudo firewall-cmd –reload

Pencegahan

Pahami zone firewalld.
Gunakan service predefined jika tersedia.
Reload setelah menambah rule permanen.

48. SELinux Blocking

Pada CentOS/AlmaLinux, SELinux dapat memblokir akses walaupun permission file terlihat benar.

Cara Cek

getenforce

Jika hasilnya

Enforcing

, SELinux aktif.

Cek audit log:
sudo ausearch -m avc -ts recent

Solusi

Untuk web root:
sudo restorecon -Rv /var/www/html

Jika Nginx/Apache perlu koneksi network ke backend:
sudo setsebool -P httpd_can_network_connect 1

Pencegahan

Jangan langsung mematikan SELinux tanpa analisis.
Gunakan context yang benar.
Pelajari boolean SELinux untuk service web.

49. SSL Certificate Expired

SSL expired membuat browser menampilkan peringatan keamanan.

Cara Cek

openssl x509 -in /path/cert.pem -noout -dates

Atau:
echo | openssl s_client -servername domain.com -connect domain.com:443 2>/dev/null | openssl x509 -noout -dates

Solusi

Jika memakai Certbot:
sudo certbot renew

Reload web server:
sudo systemctl reload nginx

Atau:
sudo systemctl reload apache2

Pencegahan

Pastikan auto-renew Certbot aktif.
Monitor masa berlaku SSL.
Jangan menunggu browser error baru renew.

50. SSL Mixed Chain Error

Mixed chain atau incomplete chain membuat SSL tampak bermasalah di beberapa browser/client.

Penyebab

Intermediate certificate tidak lengkap.
Salah memakai file cert, bukan fullchain.
Konfigurasi Nginx/Apache salah.

Solusi Nginx

Gunakan:
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

Bukan hanya

cert.pem

.

Test:
sudo nginx -t sudo systemctl reload nginx

Pencegahan

Gunakan fullchain.
Test SSL setelah instalasi.
Jangan mencampur file certificate dari provider berbeda.

51. Certbot Gagal Renew

Certbot gagal renew membuat SSL berisiko expired.

Penyebab

Port 80 tertutup.
DNS domain tidak mengarah ke server.
Webroot salah.
Nginx/Apache config error.
Rate limit Let’s Encrypt.

Cara Cek

sudo certbot renew –dry-run

Solusi

Buka port 80.
Pastikan domain mengarah ke IP server.
Perbaiki Nginx/Apache config.
Gunakan DNS challenge jika server tidak bisa expose port 80.

Pencegahan

Jalankan dry-run setelah setup.
Monitor expiry certificate.
Jangan terlalu sering request cert baru.

52. Timezone Error

Timezone salah membuat log, cron, scheduler, dan timestamp aplikasi tidak sesuai.

Cara Cek

timedatectl

Solusi

Set timezone Jakarta:
sudo timedatectl set-timezone Asia/Jakarta

Cek lagi:
timedatectl

Pencegahan

Set timezone saat provisioning server.
Gunakan UTC untuk sistem global jika sesuai.
Sinkronkan timezone aplikasi dan database.

53. Waktu Server Tidak Sinkron

Waktu server yang tidak sinkron bisa merusak SSL, token, cron, dan autentikasi.

Cara Cek

timedatectl

Solusi

Aktifkan NTP:
sudo timedatectl set-ntp true

Cek service time sync:
systemctl status systemd-timesyncd

Pencegahan

Selalu aktifkan NTP.
Monitor drift waktu.
Hindari mengatur waktu manual kecuali darurat.

54. Cron Tidak Jalan

Cron tidak berjalan dapat membuat backup, scheduler, dan script otomatis gagal.

Cara Cek

sudo systemctl status cron

CentOS/AlmaLinux:
sudo systemctl status crond

Lihat crontab:
crontab -l

Log cron:
Ubuntu/Debian:
grep CRON /var/log/syslog

CentOS/AlmaLinux:
sudo tail -f /var/log/cron

Solusi

Restart cron:
sudo systemctl restart cron

Atau:
sudo systemctl restart crond

Pastikan format cron benar:
* * * * * /path/script.sh >> /var/log/script.log 2>&1

Pencegahan

Gunakan path absolut.
Redirect output ke log.
Jangan mengandalkan environment shell interaktif.
Tes script manual sebagai user yang sama.

55. Cron Environment Error

Script berjalan manual, tetapi gagal saat dijalankan cron.

Penyebab

PATH cron minimal.
Environment variable tidak tersedia.
Working directory berbeda.
Permission script salah.
Shell berbeda.

Solusi

Gunakan path absolut:
* * * * * cd /var/www/app && /usr/bin/php artisan schedule:run >> /var/log/app-schedule.log 2>&1

Tambahkan PATH di crontab:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Pencegahan

Selalu gunakan absolute path.
Log output cron.
Jalankan script dengan user yang tepat.

56. Package Manager Lock

APT atau DNF bisa terkunci karena proses lain sedang berjalan.

Gejala

Could not get lock

Solusi Ubuntu/Debian

Cek proses:
ps aux | grep apt

Jika memang tidak ada proses aktif, baru hapus lock dengan hati-hati:
sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo dpkg –configure -a

Pencegahan

Jangan menjalankan banyak proses package manager bersamaan.
Tunggu unattended-upgrades selesai.
Hindari kill proses update kecuali darurat.

57. APT Update Gagal

APT gagal update pada Ubuntu/Debian.

Penyebab

Repository tidak bisa diakses.
DNS error.
GPG key expired.
Mirror down.
Package list corrupt.
Waktu server salah.

Solusi

sudo apt clean sudo apt update

Jika ada package belum selesai:
sudo dpkg –configure -a sudo apt -f install

Pencegahan

Gunakan mirror stabil.
Pastikan DNS dan waktu server benar.
Jangan mencampur repository sembarangan.

58. YUM/DNF Update Gagal

CentOS/AlmaLinux memakai

yum

atau

dnf

.

Penyebab

Repo down.
Metadata corrupt.
DNS error.
Mirrorlist gagal.
Dependency conflict.

Solusi

sudo dnf clean all sudo dnf makecache sudo dnf update

Untuk CentOS lama:
sudo yum clean all sudo yum update

Pencegahan

Gunakan repo resmi.
Hindari repository pihak ketiga yang tidak jelas.
Backup sebelum update besar.

59. Repository Error

Repository error terjadi ketika sumber package tidak valid.

Penyebab

OS sudah end-of-life.
URL repository berubah.
GPG key tidak valid.
Repo pihak ketiga bermasalah.

Solusi

Cek file repo.
Ubuntu/Debian:
ls /etc/apt/sources.list.d/

CentOS/AlmaLinux:
ls /etc/yum.repos.d/

Nonaktifkan repo bermasalah sementara.

Pencegahan

Gunakan OS yang masih didukung.
Dokumentasikan repo tambahan.
Jangan memasang repo acak di production.

60. Dependency Conflict

Dependency conflict membuat install/update gagal.

Penyebab

Package dari repo berbeda bertabrakan.
Versi library tidak cocok.
Paket lama tertahan.

Manual install

.deb

atau

.rpm

.

Solusi Ubuntu/Debian:

sudo apt -f install sudo dpkg –configure -a

CentOS/AlmaLinux:
sudo dnf distro-sync

Pencegahan

Gunakan repository resmi.
Hindari mixing package manual.
Test update di staging.

61. Kernel Update Bermasalah

Kernel update bisa menyebabkan driver atau boot bermasalah.

Solusi

Pilih kernel lama dari menu GRUB saat boot jika kernel baru gagal.
Cek kernel aktif:
uname -r

Pencegahan

Jangan hapus semua kernel lama.
Reboot test setelah update kernel.
Gunakan snapshot VPS jika tersedia.

62. Boot Failure

Server gagal boot setelah update atau perubahan konfigurasi.

Penyebab

Fstab salah.
Kernel bermasalah.
GRUB rusak.
Filesystem corrupt.
Disk penuh.
Service penting hang saat boot.

Solusi

Gunakan rescue mode dari provider. Cek log boot:
journalctl -xb

Cek

/etc/fstab

jika boot berhenti di mount.

Pencegahan

Backup sebelum edit fstab/kernel.

Gunakan

nofail

untuk mount non-kritis.

Simpan snapshot sebelum perubahan besar.

63. GRUB Error

GRUB error membuat server tidak bisa masuk OS.

Penyebab

Update bootloader gagal.
Disk layout berubah.
File boot hilang.
Konfigurasi GRUB rusak.

Solusi

Gunakan rescue ISO/provider console lalu reinstall GRUB sesuai distro dan tipe boot. Karena proses ini sensitif, ikuti dokumentasi distro/provider.

Pencegahan

Jangan mengubah partisi boot sembarangan.
Backup sebelum operasi disk.
Simpan snapshot server.

64. Filesystem Read-Only

Filesystem bisa berubah read-only saat ada error disk atau filesystem.

Cara Cek

mount | grep ‘ ro,’

Cek kernel log:
dmesg | tail

Solusi

Jika filesystem corrupt, perlu

fsck

dari rescue mode atau saat unmounted.

sudo fsck /dev/nama-partisi

Jangan jalankan

fsck

pada filesystem mounted aktif kecuali benar-benar paham.

Pencegahan

Monitor disk health.
Shutdown server dengan benar.
Gunakan storage yang andal.

65. Filesystem Corrupt

Filesystem corrupt dapat menyebabkan data hilang atau server gagal boot.

Gejala

File tidak bisa dibaca.
Error I/O.
Filesystem read-only.
Boot gagal.

Solusi

Backup data yang masih bisa dibaca. Jalankan

fsck

dari rescue mode:

fsck -f /dev/nama-partisi

Pencegahan

Backup rutin.
Gunakan snapshot.
Monitor SMART/disk health jika bare metal.
Hindari hard shutdown.

66. Mount Error

Mount error terjadi saat memasang disk tambahan atau partisi.

Penyebab

Device path salah.
UUID salah.
Filesystem type salah.
Folder mount point tidak ada.

Entry

/etc/fstab

salah.

Cara Cek

lsblk blkid

Solusi

Buat mount point:
sudo mkdir -p /mnt/data

Mount manual:
sudo mount /dev/sdb1 /mnt/data

Test fstab:
sudo mount -a

Pencegahan

Gunakan UUID di fstab.

Test

mount -a

sebelum reboot.

Tambahkan

nofail

untuk disk non-kritis.

67. NFS Mount Error

NFS mount error terjadi saat server tidak bisa mount folder network.

Penyebab

NFS server down.
Firewall menutup port NFS.
Export path salah.
Permission export salah.
Network tidak stabil.

Solusi

Cek export:
showmount -e nfs-server

Mount:
sudo mount -t nfs nfs-server:/export/path /mnt/nfs

Pencegahan

Gunakan opsi mount yang sesuai.
Pastikan firewall membuka NFS.
Monitor NFS server.

68. Permission Denied pada SSHFS/NFS

Network filesystem punya permission tambahan selain permission Linux lokal.

Penyebab

UID/GID tidak sama.
Export permission salah.
User mapping salah.
Mount option salah.

Solusi

Samakan UID/GID antar-server jika memungkinkan. Cek mount option dan export config.

Pencegahan

Rancang UID/GID untuk multi-server.
Dokumentasikan mount option.
Hindari menyimpan file sensitif tanpa kontrol akses.

69. Docker Service Failed

Docker daemon gagal start.

Cara Cek

sudo systemctl status docker sudo journalctl -u docker -xe

Penyebab

Disk penuh.
Konfigurasi daemon salah.
Storage driver bermasalah.
Konflik iptables.
Upgrade Docker gagal.

Solusi

Cek

/etc/docker/daemon.json

jika ada. Validasi format JSON. Restart:

sudo systemctl restart docker

Pencegahan

Backup konfigurasi Docker.
Monitor disk.
Update Docker secara terencana.

70. Docker Disk Full

Docker dapat memenuhi disk dengan image, container, volume, dan log.

Cara Cek

docker system df

Solusi

docker container prune docker image prune docker builder prune

Hati-hati dengan:
docker volume prune

karena bisa menghapus data.

Pencegahan

Rotasi log container.
Bersihkan image lama.
Backup volume penting.

71. Docker Container Restart Loop

Container restart berulang karena aplikasi crash.

Cara Cek

docker ps -a docker logs nama-container

Solusi

Cek environment, dependency, port, database, dan command container. Jalankan shell debugging:
docker run –rm -it –entrypoint sh nama-image

Pencegahan

Tambahkan healthcheck.
Validasi konfigurasi saat startup.
Jangan menutupi bug dengan restart policy saja.

72. Fail2ban Blocking

Fail2ban bisa memblokir IP admin jika terlalu banyak gagal login.

Cara Cek

sudo fail2ban-client status sudo fail2ban-client status sshd

Solusi

Unban IP:
sudo fail2ban-client set sshd unbanip IP_ANDA

Pencegahan

Whitelist IP admin jika stabil.
Gunakan SSH key.
Jangan mencoba login berulang dengan password salah.

73. User Tidak Bisa Sudo

User tidak bisa menjalankan sudo.

Penyebab

User bukan anggota group sudo/wheel.
Sudo belum terinstall.
File sudoers salah.
Policy dibatasi.

Solusi Ubuntu/Debian

sudo usermod -aG sudo namauser

CentOS/AlmaLinux:
sudo usermod -aG wheel namauser

Pencegahan

Buat minimal dua user admin.
Jangan logout dari root sebelum mengetes sudo user baru.

Edit sudoers dengan

visudo

.

74. Sudoers Error

Sudoers error bisa membuat semua user tidak bisa sudo.

Penyebab

Syntax

/etc/sudoers

salah.

Edit tidak memakai

visudo

.

File di

/etc/sudoers.d/

salah permission.

Solusi

Gunakan rescue mode atau root console, lalu:
visudo

Cek file tambahan:
ls -la /etc/sudoers.d/

Permission sebaiknya:
chmod 440 /etc/sudoers.d/nama-file

Pencegahan

Selalu gunakan

visudo

.

Jangan menutup sesi root sebelum test sudo.
Backup file sudoers.

75. Password Expired

User tidak bisa login karena password expired.

Cara Cek

sudo chage -l namauser

Solusi

Set password baru:
sudo passwd namauser

Nonaktifkan expiry jika sesuai policy:
sudo chage -M -1 namauser

Pencegahan

Dokumentasikan policy password.
Gunakan SSH key untuk admin.
Monitor akun penting.

76. User Locked

User locked tidak bisa login.

Cara Cek

sudo passwd -S namauser

Solusi

Unlock:
sudo passwd -u namauser

Pencegahan

Jangan lock user admin satu-satunya.
Simpan akses console provider.
Gunakan audit user berkala.

77. Logrotate Tidak Jalan

Logrotate mencegah log membesar tanpa batas.

Cara Cek

sudo logrotate -d /etc/logrotate.conf

Solusi

Paksa test:
sudo logrotate -f /etc/logrotate.conf

Cek konfigurasi di:
/etc/logrotate.d/

Pencegahan

Tambahkan konfigurasi logrotate untuk aplikasi custom.
Pastikan cron/systemd timer logrotate aktif.

Monitor ukuran

/var/log

.

78. Backup Gagal

Backup gagal sangat berbahaya karena sering baru diketahui saat butuh restore.

Penyebab

Disk tujuan penuh.
Permission salah.
Credential remote salah.
Script error.
Cron tidak berjalan.
Database lock atau dump gagal.

Solusi

Cek log backup. Jalankan script manual:
Cek ruang tujuan:
df -h

Pencegahan

Test restore, bukan hanya backup.
Kirim notifikasi jika backup gagal.
Simpan backup di lokasi berbeda.
Enkripsi backup sensitif.

79. Rsync Permission Error

Rsync gagal menyalin file karena permission.

Penyebab

User remote tidak punya akses.
Destination tidak writable.
SSH key salah.
Owner/permission tidak bisa dipertahankan tanpa root.

Solusi

Contoh:
rsync -avz ./app/ user@server:/var/www/app/

Jika perlu sudo di remote, strategi lebih aman adalah sync ke folder user lalu deploy dengan sudo di server.

Pencegahan

Gunakan user deploy.
Atur ownership destination.
Jangan sync sebagai root jika tidak perlu.

80. SCP/SFTP Gagal

SCP/SFTP gagal biasanya terkait SSH, permission, atau path.

Cara Cek

scp -v file user@server:/path/

Solusi

Pastikan user punya izin menulis folder tujuan. Gunakan folder home dulu:
scp file user@server:~/

Lalu pindahkan dengan sudo di server jika perlu.

Pencegahan

Gunakan folder deploy yang writable.
Gunakan rsync untuk deploy besar.
Jangan upload langsung ke folder sistem sebagai user biasa.

81. Mail Server Tidak Mengirim

Server gagal mengirim email.

Penyebab

Port SMTP diblokir provider.
Postfix belum berjalan.
DNS/SPF/DKIM/DMARC salah.
IP masuk blacklist.
Relay authentication salah.

Solusi

Cek mail log:
Ubuntu/Debian:
sudo tail -f /var/log/mail.log

CentOS/AlmaLinux:
sudo tail -f /var/log/maillog

Cek queue:
mailq

Pencegahan

Gunakan SMTP provider terpercaya.
Konfigurasi SPF, DKIM, DMARC.
Monitor bounce dan blacklist.

82. Postfix Failed

Postfix gagal start karena konfigurasi salah atau port bentrok.

Cara Cek

sudo systemctl status postfix sudo postfix check

Solusi

Perbaiki konfigurasi lalu restart:
sudo systemctl restart postfix

Pencegahan

Jalankan

postfix check

setelah edit.

Backup config.
Jangan open relay.

83. Domain Tidak Mengarah ke Server

Website tidak bisa diakses karena DNS domain salah.

Cara Cek

dig domain.com dig www.domain.com

Solusi

Atur A record ke IP server:
domain.com A IP_SERVER www.domain.com A IP_SERVER

Tunggu propagasi DNS.

Pencegahan

Dokumentasikan DNS record.
Gunakan TTL wajar.
Cek DNS sebelum setup SSL.

84. Reverse DNS Error

Reverse DNS penting untuk mail server dan reputasi IP.

Cara Cek

dig -x IP_SERVER

Solusi

Atur PTR record melalui provider VPS/cloud, bukan melalui DNS zone biasa.

Pencegahan

Set PTR untuk mail server.
Samakan hostname, PTR, dan mail HELO jika memungkinkan.

85. High I/O Wait

I/O wait tinggi berarti CPU menunggu disk.

Cara Cek

top iostat -x 1

Penyebab

Disk lambat.
Database berat.
Backup berjalan.
Log terlalu banyak.
Swap berlebihan.

Solusi

Hentikan proses I/O berat jika tidak kritis.
Optimalkan query database.
Pindahkan backup ke jam sepi.
Upgrade storage.

Pencegahan

Monitor I/O.
Gunakan SSD/NVMe untuk database.
Hindari swap berlebihan.
Rotasi log.

86. Database Query Lambat

Query lambat dapat membuat CPU, RAM, dan I/O tinggi.

Solusi MySQL

Aktifkan slow query log:
SET GLOBAL slow_query_log = ‘ON’; SET GLOBAL long_query_time = 2;

Analisis query:
EXPLAIN SELECT ...

Pencegahan

Tambahkan index yang tepat.
Hindari query tanpa batas pada tabel besar.
Gunakan pagination.
Monitor slow query.

87. File Descriptor Limit

Service bisa gagal jika limit file descriptor terlalu kecil.

Cara Cek

ulimit -n

Untuk service systemd:
systemctl show nama-service | grep LimitNOFILE

Solusi

Tambahkan di systemd unit:
[Service] LimitNOFILE=65535

Reload:
sudo systemctl daemon-reload sudo systemctl restart nama-service

Pencegahan

Sesuaikan limit untuk Nginx, database, dan aplikasi high traffic.

Monitor error

too many open files

.

88. Too Many Open Files

Error ini muncul saat proses membuka terlalu banyak file/socket.

Penyebab

Traffic tinggi.
File descriptor limit rendah.
Koneksi bocor.
Log/file tidak ditutup aplikasi.

Solusi

Cek file terbuka:
lsof -p PID | wc -l

Naikkan limit systemd seperti pada poin sebelumnya.

Pencegahan

Perbaiki connection leak.
Atur limit service.
Gunakan monitoring koneksi.

89. Process Limit Error

User atau service bisa mencapai batas jumlah proses.

Cara Cek

ulimit -u

Cek proses user:
ps -u namauser | wc -l

Solusi

Kurangi worker atau naikkan limit melalui konfigurasi limits/systemd jika diperlukan.

Pencegahan

Jangan menjalankan worker tanpa batas.
Monitor jumlah process.
Gunakan queue concurrency yang wajar.

90. Crontab Hilang

Crontab bisa hilang karena user salah, overwrite, atau migrasi server.

Cara Cek

crontab -l sudo crontab -l

Solusi

Restore dari backup. Lokasi spool cron berbeda antar distro, misalnya:
/var/spool/cron/

atau:
/var/spool/cron/crontabs/

Pencegahan

Simpan cron di version control jika memungkinkan.
Dokumentasikan cron per user.
Backup konfigurasi server.

91. Environment Variable Tidak Terbaca

Aplikasi berjalan manual, tetapi gagal sebagai service karena env tidak terbaca.

Penyebab

Systemd tidak membaca

.bashrc

.

Environment file tidak dikonfigurasi.
Working directory salah.
Variable hanya ada di session shell.

Solusi

Tambahkan di unit systemd:
EnvironmentFile=/var/www/app/.env

Atau:
Environment=APP_ENV=production

Reload systemd:
sudo systemctl daemon-reload sudo systemctl restart nama-service

Pencegahan

Jangan bergantung pada

.bashrc

untuk service.

Dokumentasikan environment production.
Gunakan secret manager jika tersedia.

92. Application 500 Error

Aplikasi menghasilkan 500 karena error internal.

Cara Cek

Cek log aplikasi.
Cek log web server.
Cek status database.
Cek permission folder writable.
Cek environment variable.
Contoh:
sudo tail -f /var/log/nginx/error.log

Solusi

Perbaiki error spesifik di log. Jangan hanya restart server tanpa membaca penyebab.

Pencegahan

Matikan debug public.
Simpan log aplikasi.
Gunakan monitoring error.
Test sebelum deploy.

93. Application Tidak Bisa Bind Port

Aplikasi gagal start karena tidak bisa bind port.

Penyebab

Port di bawah 1024 butuh root/capability.
Port sudah dipakai.
Aplikasi bind ke IP yang tidak tersedia.
Permission systemd terbatas.

Solusi

Cek port:
sudo ss -tulpn | grep PORT

Gunakan reverse proxy agar aplikasi berjalan di port tinggi seperti 3000/8000.

Pencegahan

Jangan jalankan aplikasi sebagai root hanya untuk port 80.
Gunakan Nginx/Apache sebagai reverse proxy.
Dokumentasikan port internal.

94. Port Sudah Dipakai

Port bentrok membuat service gagal start.

Cara Cek

sudo ss -tulpn | grep :80

Atau:
sudo lsof -i :80

Solusi

Hentikan service yang tidak perlu:
sudo systemctl stop nama-service

Atau ubah port salah satu service.

Pencegahan

Catat port setiap service.
Gunakan reverse proxy.
Hindari menjalankan service duplikat.

95. Server Kena Brute Force

Brute force SSH umum terjadi pada server publik.

Cara Cek

Ubuntu/Debian:
sudo grep “Failed password” /var/log/auth.log | tail

CentOS/AlmaLinux:
sudo grep “Failed password” /var/log/secure | tail

Solusi

Gunakan SSH key.
Nonaktifkan password login.
Pasang Fail2ban.
Batasi SSH berdasarkan IP jika memungkinkan.

Pencegahan

Edit SSH config:
PasswordAuthentication no PermitRootLogin no

Restart SSH setelah memastikan key login berhasil.

96. Server Kena Malware

Gejala malware bisa berupa CPU tinggi, proses asing, koneksi mencurigakan, atau file tidak dikenal.

Cara Cek

ps aux –sort=-%cpu | head ss -tulpn last

Cek cron mencurigakan:
crontab -l sudo ls /etc/cron.*

Solusi

Isolasi server.
Ambil backup forensik jika perlu.
Ganti semua credential.
Rebuild server dari image bersih jika kompromi serius.
Restore data dari backup terpercaya.

Pencegahan

Update rutin.
Gunakan firewall.
Gunakan SSH key.
Jangan menjalankan aplikasi usang.
Batasi permission file.

97. SSH Known Hosts Error

Error known hosts muncul saat fingerprint server berubah.

Penyebab

Server reinstall.
IP dipakai server lain.
Host key berubah.
Potensi serangan man-in-the-middle.

Solusi

Pastikan perubahan memang valid. Jika valid, hapus entry lama:
ssh-keygen -R ip-server

Login ulang dan verifikasi fingerprint.

Pencegahan

Dokumentasikan fingerprint server penting.
Jangan asal menerima fingerprint baru untuk server production.
Gunakan DNS/SSHFP jika sesuai.

98. Hostname Salah

Hostname salah dapat memengaruhi mail server, monitoring, prompt, dan identitas server.

Cara Cek

hostnamectl

Solusi

Set hostname:
sudo hostnamectl set-hostname server1.domain.com

Edit

/etc/hosts

jika perlu:

127.0.1.1 server1.domain.com server1

Pencegahan

Set hostname saat provisioning.
Gunakan penamaan server yang konsisten.
Sinkronkan hostname dengan monitoring.

99. Reboot Lama

Server reboot lama bisa terjadi karena service hang, mount network timeout, atau filesystem check.

Cara Cek

Setelah server hidup:
journalctl -b -1

Cek waktu boot:
systemd-analyze blame

Solusi

Perbaiki service yang lama start/stop.

Tambahkan

nofail

pada mount non-kritis.

Kurangi timeout service jika sesuai.
Cek filesystem.

Pencegahan

Test reboot setelah perubahan besar.
Jangan menambahkan mount network tanpa opsi aman.
Monitor boot time.

100. Monitoring Tidak Mengirim Alert

Monitoring yang tidak mengirim alert membuat masalah terlambat diketahui.

Penyebab

Agent monitoring mati.
Token salah.
Firewall memblokir outbound.
Email/webhook gagal.
Rule alert salah.
Timezone salah.

Solusi

Cek service agent:
systemctl status nama-agent

Cek log agent:
journalctl -u nama-agent -xe

Tes notifikasi secara manual dari dashboard monitoring.

Pencegahan

Buat alert untuk disk, RAM, CPU, service down, SSL expired, dan backup gagal.
Test alert berkala.
Gunakan lebih dari satu channel notifikasi untuk server penting.

Perbedaan Perintah Ubuntu/Debian vs CentOS/AlmaLinux

Beberapa service dan package manager berbeda antar distro.
Kebutuhan
Ubuntu/Debian
CentOS/AlmaLinux
Package install
apt install
dnf install

/

yum install
SSH service
ssh
sshd
Apache service
apache2
httpd
Cron service
cron
crond
Web user
www-data
apache
Firewall umum
ufw
firewalld
Auth log
/var/log/auth.log
/var/log/secure
Mail log
/var/log/mail.log
/var/log/maillog

Checklist Darurat Saat Server Down

Jika server production down, gunakan urutan singkat berikut.

1. Pastikan Server Hidup

Cek dari panel VPS/cloud. Jika perlu, gunakan console provider.

2. Cek Resource

uptime free -m df -h df -i top

3. Cek Service Utama

systemctl status nginx systemctl status apache2 systemctl status mysql systemctl status php8.2-fpm

Sesuaikan nama service dengan stack server.

4. Cek Log

journalctl -xe tail -f /var/log/nginx/error.log

5. Cek Port

ss -tulpn

6. Cek Firewall

ufw status

Atau:
firewall-cmd –list-all

7. Cek DNS dan SSL

dig domain.com curl -I https://domain.com

8. Restart Service Jika Penyebab Sudah Jelas

sudo systemctl restart nama-service

Jangan restart membabi buta jika log menunjukkan risiko data corrupt, terutama pada database.

Praktik Terbaik Mencegah Masalah Linux Server

1. Gunakan Monitoring Sejak Awal

Minimal monitor:
CPU
RAM
Disk
Inode
Load average
Service status
SSL expiry
Backup status
Uptime website

2. Aktifkan Backup dan Test Restore

Backup tanpa test restore belum bisa dianggap aman. Jadwalkan backup database dan file penting, lalu uji pemulihan secara berkala.

3. Dokumentasikan Konfigurasi Server

Catat:
OS dan versi
IP server
User admin
Port SSH
Service yang berjalan
Lokasi project
Lokasi log
Cron job
Firewall rule
DNS record

4. Gunakan Firewall Minimal

Buka hanya port yang diperlukan:
22 untuk SSH, atau port SSH custom
80 untuk HTTP
443 untuk HTTPS
Port internal sebaiknya tidak dibuka publik

5. Jangan Login Root untuk Operasional Harian

Gunakan user admin dengan sudo. Root sebaiknya hanya dipakai untuk kebutuhan khusus.

6. Update Terencana

Update package penting, tetapi jangan update production sembarangan. Gunakan staging atau snapshot sebelum update besar.

7. Kelola Log

Pastikan logrotate aktif dan journal systemd dibatasi. Banyak server down bukan karena bug aplikasi, tetapi karena log memenuhi disk.

8. Gunakan SSH Key

SSH key lebih aman daripada password. Nonaktifkan password login jika semua admin sudah bisa login dengan key.

9. Pisahkan Aplikasi dan Data Penting

Untuk server besar, pisahkan disk database, upload file, backup, dan sistem operasi agar satu komponen tidak memenuhi seluruh server.

10. Buat Runbook Troubleshooting

Runbook adalah panduan langkah demi langkah untuk masalah umum. Artikel ini bisa dijadikan dasar runbook internal.

Kesimpulan

Troubleshooting Linux server membutuhkan pendekatan sistematis. Jangan langsung menebak atau restart semua service tanpa membaca gejala. Mulailah dari pemeriksaan dasar: cek koneksi, resource, disk, inode, RAM, CPU, service, port, firewall, DNS, dan log. Perintah seperti

systemctl status

,

journalctl -xe

,

df -h

,

df -i

,

free -m

,

top

,

ss -tulpn

, dan

tail -f

adalah alat utama yang hampir selalu dipakai saat menangani masalah server.

Masalah seperti SSH Connection Refused, Permission Denied, Disk Full, inode Full, RAM Habis, CPU 100%, Service Failed, journalctl Error, Systemd Error, Nginx Failed, Apache Failed, MySQL Failed, PHP-FPM Down, Swap Error, DNS Error, Cron Tidak Jalan, Timezone Error, SSL Error, dan Firewall Error sangat sering terjadi di Ubuntu, Debian, CentOS, maupun AlmaLinux. Dengan memahami penyebab dan langkah perbaikannya, administrator dapat memulihkan server lebih cepat dan mengurangi downtime.
Pencegahan tetap menjadi strategi terbaik: aktifkan monitoring, backup rutin, logrotate, firewall yang benar, SSH key, update terencana, dokumentasi konfigurasi, serta test restore. Server Linux yang stabil bukan hanya bergantung pada konfigurasi awal, tetapi juga pada kebiasaan maintenance yang disiplin dan troubleshooting yang terstruktur.

TINGGALKAN KOMENTAR

Silakan masukkan komentar anda!
Silakan masukkan nama Anda di sini