Masalah memang akan berlaku. Itu bukan tanda anda gagal — itu tanda anda sedang belajar! Bab ini disusun macam cheat sheet supaya bila sesuatu rosak, anda boleh buka terus bahagian yang relevan dan ikut langkah-langkah tanpa panik.
Apa yang anda akan belajar: - Aliran troubleshooting yang tenang dan tersusun - Cara semak isu mengikut lapisan: rangkaian, service, host, dan log - Bezakan simptom dengan punca sebenar masalah
Nota Beginner: Troubleshooting yang baik bukan tentang cuba segala-galanya serentak. Ia tentang memotong kemungkinan satu demi satu dengan tenang. Macam detective — cari clue, bukan tembak secara rawak!
Bila ada masalah, ikut urutan ni:
Kuasa → Kabel → IP → DNS → Service → Log
Jangan ubah lima benda serentak. Tukar satu, test, baru tukar yang lain. Dan bila jumpa penyelesaian — catat! Anda akan terima kasih pada diri sendiri nanti.
# Langkah 1: Periksa sambungan fizikal # Adakah lampu pada port suis menyala? # Langkah 2: Periksa konfigurasi IP ip addr show # Langkah 3: Periksa gateway ip route show ping 10.0.0.1 # ping gateway # Langkah 4: Periksa DNS nslookup google.com dig google.com # Langkah 5: Periksa firewall sudo iptables -L -n sudo ufw status
# Periksa Pi-hole berjalan docker ps | grep pihole # Periksa DNS secara manual dig @10.0.0.2 google.com # Periksa konfigurasi DNS pada klien cat /etc/resolv.conf # Mulakan semula Pi-hole docker restart pihole
tcpdump
# Pantau trafik pada antara muka VLAN sudo tcpdump -i vlan20 -n
Nota Beginner: Kebanyakan masalah rangkaian sebenarnya masalah kabel atau IP yang salah. Sentiasa check benda simple dulu sebelum suspect benda complicated.
# Periksa log docker logs nama-kontena # Periksa events Docker docker events --since 1h # Masalah biasa: # 1. Port sudah digunakan sudo ss -tlnp | grep PORT # 2. Volume tidak wujud atau kebenaran salah ls -la ./data/ # 3. Imej rosak docker pull nama-imej:tag
# Periksa penggunaan memori docker stats # Hadkan memori kontena # Dalam docker-compose.yml: services: app: deploy: resources: limits: memory: 1G
# Semak sintaks fail YAML docker compose config # Mulakan dengan mod verbose docker compose up --verbose # Buang kontena dan mula semula docker compose down docker compose up -d
Nota Beginner: 90% masalah Docker boleh diselesaikan dengan docker logs nama-kontena. Sentiasa check log dulu — biasanya error message dah cakap apa masalahnya.
docker logs nama-kontena
# Periksa log VM # Di antara muka web: VM → Console # Periksa storan pvesm status # Cuba boot dalam mod selamat # Tukar boot order di VM → Hardware → Boot Order
# Periksa penggunaan storan df -h lvs zpool list # Buang sandaran lama ls -la /var/lib/vz/dump/ # Buang snapshot VM yang tidak diperlukan qm listsnapshot VMID # Buang imej ISO yang tidak diperlukan ls -la /var/lib/vz/template/iso/
# Periksa status kluster pvecm status # Periksa quorum pvecm expected 1 # Jika nod tunggal # Periksa log journalctl -u pve-cluster
# Kenal pasti proses yang menggunakan CPU tinggi htop top -c # Untuk kontena Docker docker stats # Untuk VM Proxmox # Semak di antara muka web → Node → Summary
# Periksa penggunaan RAM free -h # Periksa proses yang menggunakan RAM paling banyak ps aux --sort=-%mem | head -20 # Periksa swap swapon --show # Jika ZFS, kurangkan ARC cache echo "4294967296" > /sys/module/zfs/parameters/zfs_arc_max # 4GB
# Periksa I/O iostat -x 1 5 # Periksa kesihatan cakera sudo smartctl -a /dev/sda # Periksa ZFS zpool iostat -v 1 5
Nota Beginner: Kalau homelab rasa “slow”, check RAM dulu. Kebanyakan masalah prestasi datang dari RAM yang tak cukup, terutama kalau anda guna ZFS (yang memang suka “makan” RAM untuk cache).
# Senarai IP yang disekat sudo fail2ban-client status sshd # Nyahsekat IP sudo fail2ban-client set sshd unbanip 192.168.1.100
# Periksa tarikh tamat tempoh openssl s_client -connect pelayan:443 2>/dev/null | \ openssl x509 -noout -dates # Perbaharui sijil Let's Encrypt # Jika menggunakan Nginx Proxy Manager: # Edit Proxy Host → SSL → Renew # Jika menggunakan certbot: sudo certbot renew
# Periksa log SSH sudo grep "Failed password" /var/log/auth.log | tail -20 # Periksa sambungan aktif ss -tunapl # Periksa proses mencurigakan ps auxf # Periksa port yang terbuka sudo nmap -sS localhost
ping
ping 10.0.0.1
traceroute
traceroute 8.8.8.8
nslookup/dig
dig google.com
ss/netstat
ss -tunapl
tcpdump -i eth0 port 80
nmap
nmap -sV 10.0.0.0/24
iperf3
iperf3 -c pelayan
mtr
mtr 8.8.8.8
htop
df
df -h
free
free -h
iostat
iostat -x 1
dmesg
dmesg -T \| tail
journalctl
journalctl -xe
smartctl
smartctl -a /dev/sda
lsblk
lsblk -f
docker ps -a
docker logs -f
docker inspect
docker stats
docker exec -it ... bash
docker system df
docker system prune
Buat nota tentang: - Setiap perubahan konfigurasi - Masalah yang dihadapi dan penyelesaiannya - Skim rangkaian dan alamat IP - Kata laluan (di pengurus kata laluan!)
Sandaran yang tidak diuji = tiada sandaran. Jadualkan ujian pemulihan bulanan.
Jangan cuba membina semuanya sekaligus. Mula dengan satu perkhidmatan, kuasai ia, kemudian tambah yang seterusnya.
Reddit: r/homelab, r/selfhosted Discord: Homelab, Self-Hosted YouTube: NetworkChuck, TechnoTim, Jeff Geerling
Kesilapan adalah guru terbaik. Homelab adalah tempat yang selamat untuk gagal dan belajar tanpa kesan kepada pengeluaran.
Penyelesaian masalah adalah kemahiran yang berkembang dengan pengalaman. Anda tak perlu hafal semua command ni — bookmark bab ini dan rujuk bila perlu. Yang penting:
Setiap kali anda berjaya selesaikan masalah, anda jadi lebih mahir. Dan satu hari nanti, anda akan jadi orang yang bantu orang lain troubleshoot masalah mereka pula. Itu sebahagian daripada keindahan komuniti homelab!