Belajar Server Linux dari Nol sampai Siap Sertifikasi
Halaman ini adalah modul bacaan lengkap (textbook) yang disusun mengikuti kurikulum LPIC-1 — dua ujian, 101 & 102 — untuk administrasi server Linux (Debian/Ubuntu & RHEL/Fedora). Semua perintah dicontohkan pada kasus nyata: server mail.instansicontoh.id yang kita bangun bertahap dari instalasi kosong sampai siap menghosting aplikasi web.
🧭 Lab Proyek — Bangun Server "mail.instansicontoh.id" dari Nol
Ini jalur skill-mu: ikuti urutan langkah di bawah, pelajari teorinya di modul, lalu praktikkan Lab-nya di VM sebelum mencentang. Centangan sinkron dengan tombol "Tandai selesai" di bawah tiap modul — progres tersimpan di browser.
Modul 1 — Arsitektur SistemBasis sertifikasi LPIC-1: mengenali perangkat keras, proses boot, dan systemd
1.1 Kenali Perangkat Keras
Seorang admin server harus tahu apa yang ada di dalam mesin sebelum menginstal atau
memecahkan masalah. Linux menyediakan perintah untuk melihat perangkat keras tanpa membuka
casing, karena hampir semua perangkat direpresentasikan sebagai file perangkat di
/dev.
Perintah melihat perangkat keras
/dev/sda = disk pertama (SATA/USB); /dev/sda1 = partisi pertamanya;
/dev/nvme0n1 = disk NVMe; /dev/ttyUSB0 = perangkat serial.
Nomor major menunjukkan jenis driver, nomor minor menunjukkan instance./dev/sda bisa berubah saat boot (misal disk kedua
jadi sda). Itulah sebabnya konfigurasi modern memakai UUID atau LABEL
(dibahas di Modul 4), bukan nama perangkat.sda, sdb, sdc…
sesuai urutan deteksi kernel. Partisi diberi nomor: sda1, sda2…
Untuk disk GPT lama, partisi >4 memakai nomor yang sama (tidak seperti MBR).Mengelola modul kernel
1.2 Proses Booting Linux
Urutan boot Linux modern (firmware UEFI) kira-kira:
| Tahap | Yang terjadi | Keterangan |
|---|---|---|
| 1. Firmware | UEFI/BIOS menyalakan mesin, tes mandiri (POST) | UEFI membaca efibootmgr untuk menemukan bootloader |
| 2. Bootloader | GRUB2 dimuat | Menu GRUB & memuat kernel (/boot/grub/grub.cfg) |
| 3. Kernel | Kernel memuat & initramfs | /boot/vmlinuz-* + /boot/initrd.img-* |
| 4. Init (PID 1) | systemd dijalankan | systemd mulai mengelola service |
| 5. Target | Target default dimuat | graphical.target (desktop) / multi-user.target (server) |
/etc/default/grub lalu dibangun ulang dengan update-grub
(Debian/Ubuntu) atau grub2-mkconfig (RHEL). initramfs (initrd) adalah
"kernel sementara" yang memuat driver agar disk root bisa diakses.1.3 Systemd & Target
systemd adalah init system (PID 1) modern yang mengelola booting, layanan
(units), log, timer, dan power management. Ia menggantikan SysV init.
Perintah utamanya: systemctl.
Unit & status service
Target (pengganti runlevel)
| Target | Mirip runlevel | Kegunaan |
|---|---|---|
poweroff.target | 0 | Matikan mesin |
rescue.target | 1 / s | Mode pemeliharaan (single user, tanpa jaringan) |
multi-user.target | 3 | Server: teks penuh, tanpa GUI |
graphical.target | 5 | Desktop dengan GUI |
reboot.target | 6 | Restart |
systemctl isolate rescue.target dari sesi remote akan
memutus jaringan & hanya bisa dipulihkan dari konsol fisik/serial. Jangan lakukan
tanpa akses fisik.1.4 Menutup & Menyalakan Ulang
systemctl stop postgresql) sebelum reboot agar data di-flush rapi —
walau systemd modern sudah melakukan unmount & sync secara tertib.✅ Cek Pemahaman — Modul 1
1. Perintah untuk melihat daftar disk dan partisi adalah?
Jawaban: lsblk. Untuk detail partisi per blok,
tambahkan lsblk -f (menampilkan UUID & filesystem).
2. Apa peran initramfs dalam proses boot?
Jawaban: Memuat driver (modul) yang dibutuhkan agar kernel bisa membaca disk root (misal driver SCSI/NVMe dan filesystem), sebelum filesystem asli di-mount. Tanpa initramfs, kernel kecil tidak bisa mengakses disk.
3. Target systemd manakah yang dipakai server tanpa GUI?
Jawaban: multi-user.target. Setel default dengan
systemctl set-default multi-user.target.
4. Bedakan systemctl start dan systemctl enable.
Jawaban: start menjalankan service sekarang (sesi berjalan);
enable mendaftarkan service agar ikut boot otomatis. Kombinasi:
systemctl enable --now ssh.
🧪 Lab 1 — Kenali Mesin Barumu
- Jalankan
lsblkdandf -h. Catat nama disk & partisi, dan berapa persen penuh/. - Jalankan
lscpudanfree -h. Catat jumlah core & kapasitas RAM. - Baca
cat /etc/os-release— distro & versi apa yang kamu pakai? - Lihat kernel yang berjalan:
uname -rdan daftar kernel dils /boot. - Tentukan target default:
systemctl get-default. Apakah sesuai jenis mesinmu (server/desktop)?
Modul 2 — Instalasi & Manajemen PaketPartisi, dua keluarga paket (dpkg/APT dan RPM/YUM), serta pustaka
2.1 Partisi & Skema
Saat menginstal Linux kamu diminta membuat partisi — pembagian logis dari disk. Ada dua skema tabel partisi: MBR (tua, maksimal 4 partisi primer) dan GPT (modern, 128 partisi, wajib untuk UEFI). Tiga partisi yang umum dibuat:
| Partisi | Mount point | Kegunaan |
|---|---|---|
| EFI System Partition | /boot/efi | File boot UEFI (FAT32, wajib untuk UEFI boot) |
| Root | / | Semua data utama sistem |
| Swap | swap | Ruang cadangan saat RAM penuh |
| (opsional) Home | /home | Data user terpisah dari sistem (aman saat upgrade) |
/ dan swap adalah
minimum. Untuk database, umumnya ada partisi khusus /var/lib/postgresql
atau /srv agar log/data bisa tumbuh tanpa memenuhi partisi root.fdisk tanpa parameter pada disk yang
masih dipakai — perintahnya interaktif dan bisa menghapus partisi. Latih di VM saja.2.2 dpkg & APT (Debian/Ubuntu)
Keluarga Debian memakai dpkg sebagai pengelola paket tingkat rendah dan
APT (Advanced Package Tool) sebagai lapisan yang menangani dependensi dan
repositori. Paket berformat .deb.
dpkg — operasi langsung (tanpa dependensi)
dpkg itu seperti membawa koper sendiri: kamu pasang paket
satu per satu dan harus tahu sendiri barang yang belum ada. apt seperti
toko online: ia memeriksa daftar belanjaan (dependensi) dan mengirim semuanya sekaligus.apt gagal dengan "unmet dependencies", jalankan
apt --fix-broken install lalu apt update
lagi. File daftar repo berada di /etc/apt/sources.list dan
/etc/apt/sources.list.d/.2.3 RPM & YUM/DNF (RHEL)
Keluarga Red Hat (RHEL, Rocky, AlmaLinux, Fedora) memakai RPM untuk paket
tingkat rendah (format .rpm) dan DNF (pengganti yum)
sebagai pengelola dependensi.
.deb (dpkg/apt);
RHEL paket = .rpm (rpm/dnf). Sintaks keduanya sangat mirip — yang paling
berbeda adalah nama alat dan lokasi file konfigurasi. LPIC-1 menguji kedua keluarga.2.4 Pustaka & Dependensi
Banyak program dijalankan dengan bantuan pustaka bersama (shared libraries) — kode
yang dipakai banyak program agar tidak perlu diduplikasi. Pustaka berformat
.so (Linux) dan disimpan di /lib, /usr/lib.
Perintah untuk memeriksa pustaka:
./configure && make) gagal
dengan "cannot find -lxxx", berarti pustaka pengembangan (paket *-dev /
*-devel) belum terpasang. Pasang build-essential (Debian) atau
"Development Tools" (RHEL) untuk kumpulan tool dasar.✅ Cek Pemahaman — Modul 2
1. Di Debian/Ubuntu, perintah untuk memasang paket beserta dependensinya?
Jawaban: apt install <nama>. APT menangani
dependensi secara otomatis; dpkg -i tidak.
2. Bedakan apt remove dan apt purge.
Jawaban: remove menghapus program tapi menyimpan file
konfigurasi; purge menghapus juga konfigurasinya.
3. Paket berformat apa yang dipakai keluarga Red Hat, dan alatnya?
Jawaban: Format .rpm; alat tingkat rendah
rpm, pengelola dependensi dnf (sebelumnya yum).
4. Perintah untuk melihat pustaka yang dipakai sebuah program?
Jawaban: ldd <program>, misal
ldd /usr/bin/curl.
🧪 Lab 2 — Pasang Web Server Pertamamu
- Perbarui sistem:
sudo apt updatelalusudo apt upgrade -y(Debian/Ubuntu) atausudo dnf update -y. - Pasang nginx:
sudo apt install nginx -y. - Jalankan & aktifkan:
sudo systemctl enable --now nginx. - Cek dengan
systemctl status nginxdan bukacurl localhost— seharusnya muncul halaman default. - Latih
dpkg -L nginxuntuk melihat file apa saja yang terpasang.
Modul 3 — Perintah GNU & UnixShell, file, stream & pipe, regex, proses, dan penyunting teks
3.1 Shell & Terminal
Shell adalah program yang menerima perintah dan menjalankannya. Shell default di
hampir semua distro adalah Bash (bash). Kamu berinteraksi dengannya
lewat terminal (emulator) atau SSH. Setiap perintah yang diketik akan dijalankan
sebagai proses.
:) tempat shell
mencari perintah. Kalau perintah "command not found", padahal file ada, periksa
echo $PATH. Cek lokasi perintah dengan
which nginx.3.2 Navigasi & File
rm -rf dengan / atau ~ salah ketik
adalah bencana klasik. Latih kebiasaan: ketik ls dulu, lalu gunakan path penuh,
dan pertimbangkan rm -i (konfirmasi) saat ragu.3.3 Stream, Pipe & Filter
Setiap perintah punya tiga stream standar: stdin (0, input), stdout
(1, output normal), stderr (2, pesan error). Kamu bisa mengarahkan stream ke file
(redirection) dan menyambung output satu perintah ke input yang lain
(pipe |).
> menimpa, >>
menambah, 2> stderr, >&1 gabung ke stdout, |
menyambung. Yang sering salah: mengetik 2>&1 setelah file tujuan (harus
cmd > file 2>&1).Filter dasar
cut + sort + uniq -c untuk
menghitung kemunculan. Contoh analisis log sederhana:
grep "GET /" access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn | head3.4 Regex & grep/sed
Regex (regular expression) adalah pola pencocokan teks. Ini keterampilan inti untuk
admin. Karakter penting: . (karakter apa saja), * (0+ pengulangan),
+ (1+), ? (0–1), ^ (awal baris), $
(akhir baris), [abc] (kelas karakter), \d (digit), \s
(spasi), (...) (grup).
-i, sed hanya mencetak hasil ke layar
(file tidak berubah). Dengan -i, file langsung dimodifikasi — backup dulu bila
perlu: sed -i.bak 's/a/b/' file.3.5 Proses & Prioritas
Proses adalah program yang sedang berjalan. Memahami daftar proses dan membunuh/mengatur prioritasnya adalah keseharian admin.
Prioritas & nice
nice agar tidak mengganggu layanan produksi.kill -l untuk melihat daftar semua sinyal.
Yang paling umum: 1 HUP (reload config), 15 TERM (berhenti wajar),
9 KILL (paksa). Selalu coba TERM dulu.3.6 Vim & Penyunting Teks
Konfigurasi server hampir selalu mengubah file teks. Penyunting teks konsol yang paling
universal adalah vim (atau vi). Alternatif yang lebih ramah pemula:
nano.
✅ Cek Pemahaman — Modul 3
1. Apa perbedaan stdout dan stderr?
Jawaban: stdout (fd 1) membawa output normal program; stderr (fd 2)
membawa pesan error. Keduanya bisa diarahkan terpisah: cmd > out 2> err.
2. Tulis perintah untuk menghitung berapa banyak user di /etc/passwd.
Jawaban: cat /etc/passwd | wc -l (satu user per baris)
atau wc -l /etc/passwd.
3. Apa fungsi sed -i 's/http/https/' nginx.conf?
Jawaban: Mengganti teks http menjadi https (kemunculan
pertama per baris) langsung di file (karena -i).
4. Bagaimana cara menjalankan proses dengan prioritas rendah?
Jawaban: nice -n 10 <perintah>. Untuk proses
berjalan: renice 10 -p <PID>.
🧪 Lab 3 — Pipa & Analisis Log
- Buat beberapa baris contoh:
echo "user1:berhasil" >> log.txtdiulang beberapa kali dengan nilai berbeda. - Hitung baris:
wc -l log.txt. - Ambil user dan hitung kemunculan:
cut -d: -f1 log.txt | sort | uniq -c | sort -rn. - Cari hanya yang "berhasil":
grep berhasil log.txt. - Latih vim: buka file kosong, ketik beberapa baris, simpan dengan
:wq.
Modul 4 — Filesystem & FHSHierarki standar, mount, izin, link, dan pencarian file
4.1 Hierarki FHS
FHS (Filesystem Hierarchy Standard) adalah aturan di mana file diletakkan. Memahami FHS memudahkan menemukan konfigurasi, log, dan binary di mesin mana pun.
| Direktori | Isi |
|---|---|
/bin & /usr/bin | Program (binary) penting untuk semua user |
/sbin & /usr/sbin | Program administrasi (root) |
/etc | File konfigurasi sistem |
/home | Direktori rumah user |
/root | Direktori rumah root |
/var | Data berubah: log, www, mail, cache |
/tmp | File sementara (dibersihkan saat boot) |
/dev | File perangkat |
/proc & /sys | Virtual: info kernel & hardware |
/boot | Kernel, initrd, konfigurasi bootloader |
/opt | Program pihak ketiga terpisah |
/srv | Data layanan (web, ftp) |
/etc, log di
/var/log, data user di /home, web server di
/var/www atau /srv.4.2 Partisi, Mount & UUID
Sebuah partisi harus di-mount (dipasang) ke sebuah direktori agar bisa diakses.
Mount saat boot diatur di /etc/fstab. Setiap partisi diidentifikasi unik lewat
UUID.
/etc/fstab bisa membuat sistem tidak
bisa boot (masuk ke rescue). Selalu uji entry baru dengan
mount -a sebelum reboot.findmnt --verify
(dari util-linux). Ini memvalidasi semua baris /etc/fstab tanpa me-mount.4.3 Izin, Owner & ACL
Linux membatasi akses file dengan izin (permission). Ada 3 entitas (owner / group /
other) × 3 izin (read / write / execute), ditulis sebagai rwxr-xr-- atau angka
oktal 755.
| Izin | Nilai | Arti |
|---|---|---|
r | 4 | Baca isi |
w | 2 | Ubah isi |
x | 1 | Eksekusi (file) / masuk (direktori) |
rwx = 7,
r-x = 5, r-- = 4. Direktori web umumnya 755; file
konfigurasi rahasia 600; skrip eksekusi 755.ACL — izin lanjutan
+ pada
ls -l.4.4 Symlink & Hard Link
ls -l: symlink ditandai huruf
l di awal dan panah →. Hard link ditandai kolom link count > 1.4.5 Mencari File: find & locate
find selalu segar tapi lambat (memindai disk);
locate sangat cepat karena memakai indeks (basis data updatedb),
tapi bisa basi untuk file baru. Pakai find saat kepastian penting.✅ Cek Pemahaman — Modul 4
1. Di direktori mana file konfigurasi sistem diletakkan?
Jawaban: /etc. Log ada di
/var/log.
2. Apa nilai oktal dari izin rwxr-xr--?
Jawaban: 754 (7+5+4).
3. Bedakan soft link dan hard link.
Jawaban: Soft link menunjuk ke path (bisa lintas filesystem, putus bila target hilang). Hard link menunjuk ke inode yang sama (tidak bisa lintas filesystem, tetap valid).
4. Perintah mencari file lebih besar dari 500MB di /var?
Jawaban: find /var -size +500M.
5. Mengapa mount saat boot memakai UUID, bukan /dev/sdb1?
Jawaban: Nama perangkat /dev/sdX bisa berubah antar boot; UUID
adalah identitas tetap partisi sehingga entry fstab tidak "patah".
🧪 Lab 4 — Eksplorasi Filesystem
- Jelajahi
ls /etc,ls /var/log,ls /bin. Kenali isinya. - Periksa fstab:
cat /etc/fstabdan cek valid:findmnt --verify. - Buat file, ubah izin:
touch coba.txtlaluchmod 640 coba.txtdanls -l coba.txt. - Buat symlink:
ln -s /etc/passwd passwd-linklalucat passwd-link. - Temukan semua file konfigurasi nginx:
find /etc/nginx -type f.
Modul 5 — Shell & Shell ScriptingVariabel, environment, percabangan, perulangan, fungsi, dan skrip nyata
5.1 Variabel & Environment
Shell menyimpan nilai dalam variabel. Variabel yang diwariskan ke program anak
disebut environment variable. Cara membacanya: $NAMA atau
${NAMA} (disarankan saat di dalam teks).
= saat menetapkan variabel
(nama="Budi" benar; nama = "Budi" salah — itu akan menjalankan
perintah nama). Kutip ganda "$var" mengembangkan variabel;
kutip tunggal '$var' tidak.5.2 Kondisi & Perulangan
[ ... ] yang umum: -f file
(file ada & reguler), -d dir (direktori ada), -z str
(string kosong), str1 = str2 (string sama), n1 -gt n2
(angka lebih besar), ! kondisi (negasi), -a (dan), -o
(atau). Versi modern: [[ ... ]] mendukung &&/||.5.3 Fungsi & Skrip Real
Sebuah skrip nyata yang berguna untuk backup sederhana:
#!/bin/bash (shebang) memberitahu kernel shell mana
yang menjalankan skrip. Selalu mulai skrip dengan set -e dan
set -u (gagal pada variabel tak terdefinisi) untuk menulis skrip
yang aman. Jalankan bash -n skrip.sh untuk cek sintaks tanpa
menjalankan.✅ Cek Pemahaman — Modul 5
1. Apa arti echo $??
Jawaban: Menampilkan exit code perintah yang terakhir dijalankan.
0 = sukses, selain itu = gagal.
2. Mengapa nama = "Budi" salah?
Jawaban: Ada spasi di sekitar =. Shell menafsirkannya sebagai
menjalankan perintah nama dengan argumen — bukan menetapkan variabel.
3. Tulis loop yang mencetak angka 1 sampai 5.
Jawaban: for n in 1 2 3 4 5; do echo $n; done atau
for n in $(seq 1 5); do echo $n; done.
4. Apa fungsi shebang #!/bin/bash?
Jawaban: Menunjukkan interpreter yang dipakai untuk menjalankan skrip
(bash), sehingga skrip bisa dieksekusi langsung
(./skrip.sh).
🧪 Lab 5 — Tulis Skrip Pertamamu
- Buat file
nano info-server.shberisi shebang lalu perintah-perintah:hostname,uptime,free -h,df -h. - Simpan (
Ctrl+O,Enter), keluar (Ctrl+X). - Jadikan eksekusi:
chmod +x info-server.sh. - Jalankan
./info-server.shdan amati outputnya. - Tambahkan loop for yang mengecek 3 host (misal
localhostdan 2 IP) denganping, lalu jalankan kembali.
Modul 6 — User, Grup & Tugas TerjadwalAkun lokal, sudo, serta penjadwalan dengan cron dan at
6.1 User & Grup Lokal
Setiap proses di Linux dijalankan atas nama user. User dikelompokkan dalam
grup. Data user tersimpan di /etc/passwd, sandi (hash) di
/etc/shadow, dan grup di /etc/group.
/etc/passwd: user:x:UID:GID:deskripsi:home:shell.
UID 0 adalah root. UID < 1000 umumnya akun sistem; ≥ 1000 akun manusia.
File /etc/shadow hanya bisa dibaca root — di situlah hash sandi (jangan
pernah dibagikan)./etc/shadow. Saat login, hash input
dibandingkan dengan hash tersimpan.6.2 Sudo & Hak Istimewa
Best practice keamanan: jangan login sebagai root. Pakai user biasa, dan naikkan
hak lewat sudo. Aturan sudo ada di /etc/sudoers (edit dengan
visudo, bukan nano langsung).
ALL. Log semua aksi sudo bisa dilihat di
journalctl _COMM=sudo.6.3 Cron & At
cron menjalankan tugas berulang secara terjadwal. Konfigurasi per-user:
crontab -e. Format lima kolom: menit jam hari-tanggal bulan hari-minggu.
/etc/crontab punya kolom tambahan
user sebelum perintah (karena satu file untuk semua user). Direktori khusus:
/etc/cron.d/, /etc/cron.daily/, /etc/cron.hourly/,
/etc/cron.weekly/ — skrip yang diletakkan di sana jalan sesuai jadwalnya.* = semua nilai, */15 = tiap 15 satuan,
1,15 = 1 dan 15, 1-5 = rentang 1 sampai 5.
Kalender cron mudah salah — gunakan crontab.guru untuk memastikan.at — tugas sekali jalan
/usr/bin/rsync)
atau set PATH di awal skrip agar tidak "command not found" tanpa alasan.✅ Cek Pemahaman — Modul 6
1. Perintah membuat user baru beserta home directory?
Jawaban: useradd -m -s /bin/bash <nama>
lalu set sandi dengan passwd <nama>.
2. Di file mana hash sandi user disimpan?
Jawaban: /etc/shadow (hanya bisa dibaca root).
3. Tulis entry cron untuk backup setiap hari pukul 02:30.
Jawaban: 30 2 * * * /root/backup-web.sh.
4. Apa fungsi visudo?
Jawaban: Membuka /etc/sudoers di editor yang melakukan
validasi sintaks sebelum menyimpan — mencegah file rusak yang bisa membuat sudo
tidak berfungsi.
🧪 Lab 6 — User, Sudo & Jadwal Backup
- Buat user
sudo useradd -m -s /bin/bash operatordan beri sandi. - Tambahkan ke grup sudo:
sudo usermod -aG sudo operator. - Uji: login sebagai operator (
su - operator) lalusudo whoami→ harusroot. - Buat skrip
backup-web.shdari Modul 5 dan letakkan di/root. - Jadwalkan:
sudo crontab -elalu tambahkan30 2 * * * /root/backup-web.sh. Verifikasi dengansudo crontab -l.
Modul 7 — Layanan EsensialWaktu & NTP, log dengan journalctl, printing, dan lokalisasi
7.1 Waktu & NTP
Server yang salah waktu adalah sumber banyak masalah: log tidak sinkron, sertifikat TLS gagal, cron berjalan di jam keliru. Solusinya: sinkronkan waktu ke server NTP.
/etc/localtime ke zona di /usr/share/zoneinfo/. Waktu hardware
(RTC) diatur ke UTC atau local — periksa timedatectl baris
"RTC in local TZ".systemctl enable --now chronyd /
chrony) sebagai pengganti timesyncd — akurasinya lebih tinggi.7.2 Log & journalctl
Log adalah catatan kejadian sistem. Linux modern menyimpan log terstruktur di
journald dan menulisnya juga ke file teks di /var/log. Alat utamanya:
journalctl (systemd) dan file log klasik.
journalctl -u <unit>. Nginx → /var/log/nginx/.
Auth/login → /var/log/auth.log (Debian) atau /var/log/secure (RHEL)./var/log/journal
(secara default journald menyimpan ke RAM). Diatur di /etc/systemd/journald.conf.7.3 Print & Localization
CUPS adalah sistem printing Linux. Kelola via web UI (port 631) atau perintah
lp*. Untuk server, pengetahuan dasar printing cukup.
Lokalisasi (locale)
LANG, LC_ALL. Format Indonesia:
id_ID.UTF-8. Periksa locale yang tersedia:
locale -a.✅ Cek Pemahaman — Modul 7
1. Perintah melihat log unit systemd nginx secara real-time?
Jawaban: journalctl -u nginx -f.
2. Bagaimana menetapkan zona waktu Asia/Jakarta?
Jawaban: timedatectl set-timezone Asia/Jakarta.
3. Apa kegunaan file /var/log/auth.log (Debian)?
Jawaban: Mencatat peristiwa autentikasi (login berhasil/gagal, sudo). Berguna mendeteksi percobaan masuk mencurigakan.
4. Bagaimana menjadikan journald persisten?
Jawaban: Buat /var/log/journal (atau ubah
Storage=persistent di /etc/systemd/journald.conf), lalu
systemctl restart systemd-journald.
🧪 Lab 7 — Baca Log & Atur Waktu
- Lihat status waktu:
timedatectl. Set zona waktu bila bukan Asia/Jakarta:sudo timedatectl set-timezone Asia/Jakarta. - Buka log nginx:
journalctl -u nginx -f(tekan Ctrl+C untuk berhenti). - Buka log auth:
sudo tail -f /var/log/auth.log— lalu dari terminal lain coba SSH masuk, amati baris baru. - Cari error boot ini:
journalctl -p err -b. - Periksa locale:
locale. Set keyboard:sudo localectl set-keymap usbila perlu.
Modul 8 — Jaringan LinuxIP, routing, DNS, konfigurasi persisten, dan troubleshooting
8.1 IP, Route & DNS
Server tanpa jaringan bukanlah server. Admin wajib bisa memeriksa dan mengubah alamat IP, gateway (route default), dan DNS — cepat, lewat perintah.
ifconfig → ip addr;
route → ip route; netstat → ss. Paket
iproute2 adalah standar modern. (RHEL kadang menyediakan net-tools lama.)8.2 Konfigurasi Persisten
Agar IP tidak hilang saat reboot, konfigurasi diletakkan di file sistem. Dua keluarga cara:
| Distro | Alat | Lokasi config |
|---|---|---|
| Debian/Ubuntu | netplan (Ubuntu ≥18) / /etc/network/interfaces | /etc/netplan/*.yaml |
| RHEL/Rocky/Alma | nmcli / file ifcfg | /etc/NetworkManager/, /etc/sysconfig/network-scripts/ |
netplan try /
timeout agar dapat kembali bila gagal.ip addr show
dan ip route untuk memastikan alamat & gateway benar,
lalu ping -c 3 1.1.1.1 untuk konektivitas internet.8.3 Troubleshooting Jaringan
ping gateway → masalah jaringan lokal?
(2) ping 8.8.8.8 → masalah ke internet? (3) ping example.com →
masalah DNS? (4) dig/getent → konfirmasi resolusi. (5)
curl/ss → masalah di aplikasi/port.ss lebih baru dari netstat. Yang sering dipakai:
ss -tlnp (TCP listening + program), ss -unap
(UDP). Gunakan sudo ss -tlnp untuk melihat nama program.✅ Cek Pemahaman — Modul 8
1. Perintah melihat tabel routing?
Jawaban: ip route (baris "default via …" adalah gateway).
2. Apa pengganti modern dari ifconfig dan netstat?
Jawaban: ip addr dan ss
(dari paket iproute2).
3. Bagaimana cara cek DNS server yang dipakai sistem?
Jawaban: cat /etc/resolv.conf atau
resolvectl status.
4. Mengapa ping 8.8.8.8 sukses tapi ping google.com gagal?
Jawaban: Koneksi IP jalan tapi resolusi DNS bermasalah. Cek
/etc/resolv.conf, lalu uji dengan dig google.com.
🧪 Lab 8 — Diagnosa Jaringan
- Tampilkan IP & routing:
ip addr show,ip route. - Uji bertahap:
ping -c 3 <gateway>,ping -c 3 8.8.8.8,ping -c 3 google.com. - Resolusi DNS:
dig google.comdangetent hosts google.com. - Lihat port listening:
sudo ss -tlnp. Service apa yang membuka port 22 dan 80? - Uji web:
curl -I http://localhost.
Modul 9 — SSH & Akses JauhKunci SSH, transfer file (scp/sftp/rsync), dan mengamankan daemon sshd
9.1 SSH: Kunci & Koneksi
SSH (port 22) adalah cara standar mengelola server Linux dari jarak jauh secara terenkripsi. Autentikasi dua cara: sandi atau pasangan kunci (lebih aman & disarankan).
id_ed25519)
wajib dijaga (izin file chmod 600). Server menyimpan kunci
publik user di ~/.ssh/authorized_keys. Pertama koneksi menampilkan
fingerprint host — verifikasi agar tidak kena serangan man-in-the-middle.~/.ssh/config di mesin kerja untuk shortcut:
Host prod → HostName 192.168.1.50,
User operator, IdentityFile ~/.ssh/id_ed25519.
Lalu cukup ketik ssh prod.9.2 SCP, SFTP & Rsync
-a arsip (pertahankan
izin/timestamp), -v verbose, -z kompresi, --delete
hapus file di tujuan yang tak ada di sumber.9.3 Hardening SSH
Daemon SSH (sshd) adalah pintu masuk server — ia paling sering jadi sasaran
serangan brute-force. Amankan dengan konfigurasi di /etc/ssh/sshd_config.
PasswordAuthentication, PASTIKAN
kunci ssh-copy-id sudah berhasil dan bisa login tanpa sandi. Kesalahan di sini
mengunci akses remote selamanya (kecuali ada akses konsol).ssh -p 2222) yang berhasil sebelum menutup sesi lama, atau
gunakan sudo systemctl reload ssh untuk menerapkan tanpa
memutus koneksi yang ada.✅ Cek Pemahaman — Modul 9
1. Di file mana kunci publik user disimpan di server?
Jawaban: ~/.ssh/authorized_keys milik user
yang bersangkutan.
2. Perintah menyalin kunci publik ke server dengan sekali perintah?
Jawaban: ssh-copy-id user@server.
3. Apa keunggulan rsync dibanding scp untuk deploy berulang?
Jawaban: Rsync hanya mengirim perbedaan file (inkremental), sehingga lebih cepat & hemat bandwidth; scp selalu mengirim seluruh file.
4. Sebutkan dua opsi sshd_config untuk keamanan.
Jawaban: Contoh: PermitRootLogin no,
PasswordAuthentication no, MaxAuthTries 3, atau
AllowUsers ….
🧪 Lab 9 — SSH Kunci & Deploy
- Pastikan SSH aktif:
systemctl status ssh. - Dari mesin kerja: buat kunci
ssh-keygen -t ed25519. - Salin:
ssh-copy-id user@192.168.1.50. - Login tanpa sandi:
ssh user@192.168.1.50. - Salin folder lokal ke server:
scp -r site/ user@server:/srv/, lalu ulangi denganrsync -avz site/ user@server:/srv/— amati perbedaan waktu kedua perintah.
Modul 10 — Keamanan & Dasar HostingFirewall, aplikasi web di server, dan jembatan menuju cPanel hosting
10.1 Firewall ufw / firewalld
Firewall mengatur paket apa yang boleh masuk/keluar. Linux memakai nftables (penerus iptables) di balik layar; distro menyediakan lapisan yang ramah: ufw (Ubuntu/Debian) dan firewalld (RHEL).
sudo ss -tlnp — itulah daftar yang harus difilter.10.2 Aplikasi Web di Server
Sebuah server web Linux khas berisi: nginx/apache (web server), PHP atau Node.js (bahasa aplikasi), MySQL/MariaDB (database), dan Let's Encrypt (HTTPS gratis). Mari pasang satu tumpukan sederhana.
/etc/nginx/sites-available/ (tidak aktif) dan symlink di
/etc/nginx/sites-enabled/ (aktif). RHEL memakai struktur berbeda
(/etc/nginx/conf.d/). Selalu uji nginx -t sebelum
reload.sudo apt install certbot python3-certbot-nginx lalu
sudo certbot --nginx -d instansicontoh.id -d www.instansicontoh.id.10.3 Menuju cPanel Hosting
Kamu sudah punya fondasi admin server Linux. Di dunia nyata, banyak situs di-hosting pada panel seperti cPanel yang menyediakan antarmuka grafis untuk hal-hal yang tadi kamu lakukan manual: membuat database, DNS, email, SSL, backup, dan file manager. Pahami persamaannya:
| Tugas di Linux manual | Di cPanel |
|---|---|
useradd + home | cPanel Account (akun hosting) |
| Membuat database MySQL | MySQL Databases |
| Vhost nginx / virtual host Apache | Addon / Sub Domains |
/var/www + chmod | File Manager / FTP |
| Konfigurasi DNS manual | Zone Editor |
sshd_config & kunci | SSH Access |
| Certbot HTTPS | SSL/TLS Status (AutoSSL) |
| Backup tar/rsync | Backup Wizard |
| Postfix email | Email Accounts |
✅ Cek Pemahaman — Modul 10
1. Perintah ufw untuk mengizinkan port 443?
Jawaban: sudo ufw allow 443 (atau
sudo ufw allow https).
2. Mengapa harus izinkan port SSH sebelum mengaktifkan firewall?
Jawaban: Firewall default-nya menolak semua; jika SSH tidak diizinkan, akses remote akan terputus dan kamu terkunci dari server.
3. Alat untuk memasang HTTPS gratis otomatis di nginx?
Jawaban: Certbot: sudo certbot --nginx.
4. Fitur cPanel yang setara dengan useradd di Linux?
Jawaban: Pembuatan akun hosting (cPanel account) — masing-masing dengan home, domain, email, dan database sendiri.
🧪 Lab 10 — Server Web Pertamamu
- Pasang tumpukan LEMP seperti di atas.
- Buat direktori
/var/www/instansicontoh+index.htmlberisi identitasmu. - Konfigurasi vhost nginx, aktifkan,
nginx -t, lalu reload. - Buka
curl http://localhost— halamanmu harus tampil. - Aktifkan firewall dengan mengizinkan 22, 80, 443:
sudo ufw allow 22 && sudo ufw allow 80 && sudo ufw allow 443 && sudo ufw enable. - Verifikasi port terbuka:
sudo ufw status.
Referensi & KomunitasSumber resmi untuk melanjutkan belajar
- Linux Professional Institute (LPI) — lpi.org/our-certifications/lpic-1-overview/ — outline & daftar topik resmi LPIC-1.
- Buku resmi LPIC-1 — "LPIC-1 Linux Professional Institute Certification Study Guide" (Roderick W. Smith / dll) — pembahasan mendalam per domain.
- Ubuntu Server Guide — ubuntu.com/server/docs.
- Linux Journey — linuxjourney.com — tutorial interaktif gratis.
- Explain Shell — explainshell.com — bongkar setiap bagian perintah.
- tldr — ringkasan perintah:
tldr tar(pasang denganapt install tldr). - tldr / cheat.sh — cheat.sh — contoh cepat dari terminal.
- Komunitas — forum Ubuntu/Rocky, subreddit r/linuxadmin, channel Telegram Linux Indonesia.
Lampiran — Strategi Ujian LPIC-1Format, bobot, dan rencana belajar 6 minggu
Fakta & Bobot Soal
LPIC-1 terdiri dari dua ujian terpisah. Kamu harus lulus keduanya (dalam waktu berapa pun) untuk mendapat sertifikasi:
| Ujian | Kode | Soal | Waktu | Lulus | Domain utama |
|---|---|---|---|---|---|
| Ujian 1 | 101-500 | 60 | 90 menit | 500/800 | Arsitektur, Linux install & paket, perintah GNU, filesystem, shell scripting (Modul 1–5) |
| Ujian 2 | 102-500 | 60 | 90 menit | 500/800 | Desktop, user/admin task, layanan esensial, jaringan, keamanan (Modul 6–10) |
Tips Skor Maksimal
- Praktik di terminal asli — bukan hanya baca. 60% ujian adalah memilih/menulis perintah yang tepat.
- Hafal dua keluarga (dpkg/apt & rpm/dnf) secara seimbang — banyak yang gagal karena terlalu fokus satu distro.
- Kuasai file konfigurasi utama:
/etc/fstab,/etc/passwd,/etc/sudoers,/etc/ssh/sshd_config. - Latih regex dan pipe (grep/sed/awk/cut/sort/uniq) sampai lancar — ini hampir selalu muncul.
- Kerjakan soal latihan resmi LPI & soal simulasi berbayar/GRATIS di web.
- Jangan menebak di fill-in-blank; pastikan ejaan perintah persis.
Rencana 6 Minggu
| Minggu | Fokus | Target |
|---|---|---|
| 1 | Modul 1–2 | Arsitektur & instalasi paket |
| 2 | Modul 3 | Perintah GNU, pipe, regex |
| 3 | Modul 4–5 | Filesystem & scripting |
| 4 | Modul 6–7 | User, cron, layanan |
| 5 | Modul 8–9 | Jaringan & SSH |
| 6 | Modul 10 + latihan | Keamanan + simulasi ujian |
Command DrillSoal acak untuk menguji hafalan perintah — kerjakan sampai streak tinggi
Cheat Sheet PerintahKumpulan perintah yang paling sering dipakai — klik untuk menyalin
| Topik | Perintah | Kegunaan |
|---|---|---|
| Sistem | uname -a | Info kernel & arsitektur |
| Sistem | uptime | Lama menyala & beban |
| Hardware | lscpu | Info CPU |
| Hardware | free -h | RAM & swap |
| Disk | df -h | Kapasitas partisi |
| Disk | lsblk -f | Disk + partisi + UUID |
| Systemd | systemctl status nginx | Status service |
| Systemd | systemctl enable --now nginx | Aktif + jalankan |
| Systemd | systemctl set-default multi-user.target | Server tanpa GUI |
| Paket | apt update && apt upgrade | Update & upgrade (Debian) |
| Paket | apt install paket | Pasang (Debian) |
| Paket | dnf install paket | Pasang (RHEL) |
| Paket | dpkg -L nginx | File milik paket |
| File | ls -lah | Daftar isi detail |
| File | cp -r a b | Salin rekursif |
| File | find /etc -name "*.conf" | Cari berdasarkan nama |
| File | tail -f /var/log/nginx/access.log | Ikuti log real-time |
| Pipe | cut -d: -f1 /etc/passwd | Ambil kolom pertama |
| Pipe | grep -rn "pola" /etc | Cari teks rekursif |
| Pipe | sed -i 's/a/b/g' file | Ganti teks in-place |
| Proses | ps aux | grep nginx | Cari proses |
| Proses | kill -9 PID | Paksa bunuh |
| Proses | nice -n 10 perintah | Jalankan prioritas rendah |
| Izin | chmod 750 file | Ubah izin oktal |
| Izin | chown user:group file | Ubah owner & group |
| Izin | setfacl -m u:devops:rw file | ACL untuk user |
| Link | ln -s target link | Symlink |
| Mount | mount /dev/sdb1 /mnt | Pasang partisi |
| Mount | findmnt --verify | Validasi fstab |
| User | useradd -m -s /bin/bash nama | Buat user |
| User | usermod -aG sudo nama | Tambah ke grup admin |
| Sudo | sudo visudo | Edit sudoers aman |
| Cron | crontab -e | Jadwal tugas user |
| Log | journalctl -u nginx -f | Log unit real-time |
| Log | journalctl -p err -b | Error boot ini |
| Waktu | timedatectl | Status waktu |
| Jaringan | ip addr show | Alamat IP |
| Jaringan | ip route | Tabel routing |
| Jaringan | ss -tlnp | Port listening |
| Jaringan | dig google.com | Query DNS detail |
| Jaringan | traceroute 8.8.8.8 | Jalur paket |
| SSH | ssh-keygen -t ed25519 | Buat pasangan kunci |
| SSH | ssh-copy-id user@server | Salin kunci ke server |
| Transfer | scp -r dir/ user@server:/srv/ | Salin rekursif lewat SSH |
| Transfer | rsync -avz --delete src/ dst/ | Sinkronisasi + hapus kelebihan |
| Firewall | sudo ufw allow 443 | Buka port HTTPS |
| Firewall | sudo firewall-cmd --add-service=http --permanent | Buka HTTP (RHEL) |
| Web | sudo nginx -t | Uji konfigurasi nginx |
| Web | sudo certbot --nginx -d domain.id | Pasang HTTPS |
| Script | bash -n skrip.sh | Cek sintaks skrip |
| Script | chmod +x skrip.sh | Jadikan eksekusi |