Catatan Linux, Virtual Machine & Server

Rangkuman materi & referensi konfigurasi administrasi server Debian/Ubuntu
Topik 1 dari 18

1Linux Fundamental#

1.1Basic Terminal#

Deskripsi
Terminal
antarmuka berbasis teks (command-line interface) untuk menjalankan command dan berinteraksi langsung dengan sistem Linux, tanpa GUI
Catatan
  • Format prompt terminal: user@hostname:posisi_direktori
  • Tanda '~' berarti home directory user yang sedang login (mis. /home/enzo untuk user biasa, /root untuk user root)
  • Tanda '$' berarti sedang login sebagai user biasa, sedangkan '#' berarti sedang login sebagai root — jadi '$' vs '#' menunjukkan HAK AKSES, bukan lokasi direktori
bash — fahrul@debian
whoami
# Cek nama user yang sedang login
hostnamectl
# Cek hostname dan beberapa informasi sistem
pwd
# Cek posisi current directory
cat /var/log/syslog
# Melihat isi file log sistem (syslog)
sudo passwd
# Mengatur/mengganti password user root (di Ubuntu)
su
# Login sebagai user root
su <user>
# Pindah ke user biasa tertentu
clear
# Membersihkan tampilan terminal

1.2Struktur Direktori Linux#

Deskripsi
Root Directory (/)
direktori paling atas dalam struktur direktori Linux yang berbentuk pohon (tree) — seluruh direktori lain (/home, /etc, /var, dll) adalah turunan dari sini
📄Struktur Direktori Linux (root /)
/
├── bin → Program/binary penting untuk semua user
├── boot → File yang dibutuhkan saat proses boot (kernel, GRUB)
├── dev → Representasi device/hardware (disk, USB, dll)
├── etc → File konfigurasi sistem & aplikasi
├── home → Home directory untuk tiap user biasa
├── lib → Library yang dibutuhkan program di /bin dan /sbin
├── mnt → Titik mount sementara untuk media eksternal
├── opt → Software tambahan pihak ketiga (opsional)
├── root → Home directory khusus untuk user root
├── tmp → File sementara, dibersihkan otomatis saat reboot
├── usr → Program & data milik user (read-only)
└── var → Data yang sering berubah (log, cache, mail)

1.3Navigating Path#

Deskripsi
Path
alamat/lokasi sebuah file atau direktori dalam struktur sistem file Linux
Catatan
  • Command dasar untuk berpindah dan melihat isi direktori
bash — fahrul@debian
pwd
# Cek posisi current directory
cd <path>
# Pindah directory
ls
# Melihat isi directory

1.4Jenis Path#

Deskripsi
Absolute Path
path lengkap yang selalu dimulai dari root ( / ), tidak bergantung pada posisi saat ini — contoh: /usr/local/bin
Relative Path
path yang dihitung dari posisi (current directory) saat ini. Bisa masuk ke dalam (mis. enzo/documents) maupun naik ke atas dengan tanda .. (mis. ../../etc)
Catatan
  • Contoh: dari /home ke /home/enzo cukup relative path (enzo). Dari /home ke /usr/local bisa pakai absolute path (/usr/local) atau relative path (../usr/local) — absolute biasanya lebih jelas dan aman

1.5Special Character#

Catatan
  • Beberapa karakter khusus yang sering dipakai bersama command, dengan format: command special_character
Arti Karakter
KarakterArti
~Merujuk ke home directory, baik untuk /home/user maupun /root
.Merujuk ke current directory
..Merujuk ke parent directory (1 tingkat di atas)
bash — fahrul@debian
cd ..
# Pindah ke parent directory
cd ~
# Pindah ke home directory

1.6Touch (Membuat File)#

Deskripsi
touch
command untuk membuat file kosong (format: touch nama_file)
bash — fahrul@debian
touch a.txt
# Membuat file a.txt di current directory
touch dirA/a.txt
# Membuat file a.txt di dalam dirA

1.7LS Advanced#

Catatan
  • Beberapa opsi tambahan (flag) untuk command ls agar informasi yang ditampilkan lebih lengkap
bash — fahrul@debian
ls dirA/
# Cek isi dirA
ls -l
# Cek isi directory dengan detail (permission, owner, ukuran, dll)
ls -a
# Cek isi directory termasuk hidden file
ls -la
# Gabungan ls -l dan ls -a
ls -R
# Cek isi directory beserta seluruh isi sub-directory di dalamnya (rekursif)

1.8Mkdir (Membuat Directory)#

Deskripsi
mkdir
command untuk membuat directory baru (format: mkdir nama_directory)
bash — fahrul@debian
mkdir dirA
# Membuat 1 directory baru
mkdir dirA dirB dirC
# Membuat beberapa directory sekaligus
mkdir dirA/dirB
# Membuat dirB di dalam dirA
mkdir -p dirA/dirB/dirC
# Membuat directory bertingkat/beranak sekaligus

1.9Cp (Copy)#

Deskripsi
cp
command untuk copy & paste file/directory (format: cp source destination)
bash — fahrul@debian
cp a.txt Documents/
# Copy file a.txt ke folder Documents/
cp documents/a.txt Pictures/
# Copy file a.txt dari folder documents ke Pictures/
cp dirA/a.txt .
# Copy file a.txt ke current directory
cp *.txt dirB/
# Copy semua file berekstensi .txt ke dirB/
cp -r dirB dirC/
# Copy seluruh isi directory dirB ke dalam dirC (rekursif)

1.10Mv (Move / Rename)#

Deskripsi
mv
command untuk memindah (move) file/directory, atau mengganti namanya (rename) jika hanya path-nya yang berubah dalam direktori yang sama
Catatan
  • mv fileA fileB → rename
  • mv source destination → move
  • mv source/fileA destination/fileB → move sekaligus rename
bash — fahrul@debian
mv a.txt dirA/
# Move file a.txt ke dirA/
mv dirA/a.txt dirB/b.txt
# Move file a.txt dari dirA ke dirB, sekaligus rename jadi b.txt
mv dirA dirB
# Move dirA ke dalam dirB (jika dirB sudah ada) — atau rename dirA jadi dirB (jika dirB belum ada)

1.11Rm (Remove)#

Deskripsi
rm
command untuk menghapus file (rmdir dipakai khusus untuk directory yang kosong)
bash — fahrul@debian
rm a.txt
# Menghapus file a.txt
rm a.txt b.txt c.txt
# Menghapus beberapa file sekaligus
rm *.txt
# Menghapus semua file berekstensi .txt
rm a*
# Menghapus semua file yang namanya berawalan huruf a
rmdir dirA
# Menghapus dirA (hanya jika dirA kosong)
rm -rf dirA
# Menghapus dirA meskipun isinya tidak kosong (paksa & rekursif)
Penting
Hati-hati dengan 'rm -rf' — file/directory yang terhapus TIDAK masuk trash, langsung hilang permanen.
Topik 2 dari 18

2Pengenalan Virtual Machine#

2.1Apa itu Virtual Machine?#

Deskripsi
Virtual Machine (VM)
komputer virtual yang berjalan di atas 1 komputer fisik, memungkinkan 1 komputer menjalankan banyak OS sekaligus secara bersamaan
Catatan
  • Tanpa virtualisasi: 1 komputer hanya bisa menjalankan 1 OS
  • Dengan virtualisasi: 1 komputer bisa menjalankan banyak OS/VM sekaligus, masing-masing berjalan di dalam hypervisor
  • Komputer server umumnya diinstall hypervisor (contoh: ESX Server / VMware ESXi) agar bisa memasang banyak VM sekaligus di atasnya
VM 1 Guest OS (mis. Ubuntu Server) VM 2 Guest OS (mis. Debian Server) VM 3 Guest OS (mis. Windows Server) Hypervisor (mis. VMware ESXi, VirtualBox, Proxmox) Physical Hardware (Server — CPU, RAM, Storage, NIC)

2.2Tipe Hypervisor#

Deskripsi
Hypervisor
software yang menjalankan & mengelola virtual machine
2 Tipe Hypervisor
TipeKeterangan
Type 1 (Bare Metal)Tidak ada host OS — hypervisor langsung berjalan di atas hardware. Umumnya dipakai komputer server (mis. VMware ESXi, Hyper-V)
Type 2 (Hosted)Memakai host OS — mis. Windows, lalu di dalam Windows tsb diinstall hypervisor (mis. VirtualBox, VMware Workstation). Tipe ini yang biasa dipakai di komputer pribadi
Topik 3 dari 18

3Virtual Machine pada VirtualBox#

3.1Power Off dan Save#

Deskripsi
Power Off
mematikan VM sepenuhnya (setara shutdown)
Save
menyimpan kondisi VM saat ini lalu menghentikannya sementara (setara sleep/hibernate) — saat dinyalakan lagi, VM langsung lanjut dari kondisi terakhir

3.2Clone#

Deskripsi
Clone
menduplikat VM yang sudah ada (beserta OS & konfigurasinya), tanpa perlu install ulang dari awal
1
Klik kanan pada VM › Clone
Membuat duplikat/clone dari VM yang dipilih

3.3Snapshot#

Deskripsi
Snapshot
semacam checkpoint yang menandai kondisi VM pada suatu waktu tertentu, bisa dipakai sebagai backup
Catatan
  • Bisa dimanfaatkan untuk mengembalikan (restore) VM ke kondisi saat snapshot dibuat, jika terjadi kesalahan konfigurasi setelahnya
1
Pastikan VM dalam kondisi power off
Snapshot sebaiknya dibuat saat VM mati
2
Klik menu Snapshot pada VM › Take
Membuat snapshot baru
3
Klik menu Snapshot › pilih snapshot yang sudah dibuat › Restore
Mengembalikan VM ke kondisi snapshot tsb (VM harus power off)

3.4Export#

Deskripsi
Export
mengeluarkan VM dari VirtualBox agar bisa dipakai/dipindahkan ke hypervisor lain
1
Klik menu File › Export Appliance...
Mengekspor VM menjadi file OVA/OVF portable yang bisa dipakai hypervisor lain
Topik 4 dari 18

4Networking VM pada VirtualBox#

4.1Reset MAC Address#

Catatan
  • Secara default, semua VM yang dibuat dari template/clone yang sama memiliki MAC Address YANG SAMA — perlu direset agar unik dan tidak bentrok saat berjalan bersamaan dalam 1 jaringan
1
Klik Settings pada VM
Membuka pengaturan VM
2
Klik Network › Advanced
Masuk ke pengaturan network adapter lanjutan
3
Klik Reset
Membuat ulang (generate) MAC Address baru yang unik

4.2Cek IP Address#

Catatan
  • Command dasar untuk memastikan IP address yang sedang aktif pada VM, misalnya setelah mengganti network mode
bash — fahrul@debian
ip address
# Menampilkan IP address & informasi interface jaringan pada VM

4.3Cara Mengatur Network Mode#

Catatan
  • Setelah memilih network mode pada VM, biasanya perlu meminta ulang IP address (khusus mode selain Internal Network yang butuh konfigurasi IP statis manual)
1
Klik Settings pada VM › Network
Membuka pengaturan network VM
2
Pilih network mode yang diinginkan
Menentukan jenis network mode (NAT, Bridge, dll)
3
sudo dhclient -r enp0s3
Melepas (release) IP address lama pada interface. Catatan: ISC dhclient sudah EOL sejak 2022 — di Debian/Ubuntu terbaru pakai 'sudo netplan apply' atau restart systemd-networkd
4
sudo dhclient enp0s3
Meminta IP address baru sesuai network mode yang baru dipilih
5
(khusus Internal Network) sudo nano /etc/netplan/00-installer-config.yaml
Set dhcp4 menjadi 'no', lalu tambahkan baris 'addresses: [IP_Address/prefix]' di bawah dhcp4 (karena Internal Network tidak punya DHCP)
6
sudo netplan apply
Menerapkan konfigurasi IP statis yang baru diatur (khusus Internal Network)
Penting
Nonaktifkan firewall pada host jika ingin melakukan ping dari VM ke komputer host.

4.4Jenis Network Mode di VirtualBox#

Catatan
  • VirtualBox menyediakan beberapa mode jaringan dengan karakteristik konektivitas yang berbeda-beda
Perbandingan Network Mode (VirtualBox)
ModeInternetAntar VMKe Host OSKeterangan
NATBisaTidak bisaBisa (guest → host lewat 10.0.2.2, tanpa perlu port forwarding); sebaliknya host → VM butuh port forwardingTiap VM punya interface NAT sendiri-sendiri (hidden/terpisah) sehingga tidak saling terhubung; IP address antar VM bisa sama
NAT NetworkBisaBisaBisa (guest → host lewat 10.0.2.2, tanpa perlu port forwarding); sebaliknya host → VM butuh port forwardingSemua VM terhubung lewat 1 virtual switch yang sama
Bridge NetworkBisaBisaBisa (+ perangkat lain di jaringan fisik)VM seolah-olah terhubung langsung ke jaringan fisik (mis. WiFi), mendapat IP dari jaringan tsb
Host Only NetworkTidak bisaBisaBisaJaringan privat khusus antara VM dan host saja
Internal NetworkTidak bisaBisaTidak bisaJaringan privat khusus antar VM saja, terisolasi penuh dari host maupun luar
Topik 5 dari 18

5Virtual Machine pada VMware#

5.1Zoom (Menyesuaikan Tampilan)#

Catatan
  • Di VirtualBox, penyesuaian tampilan (auto-resize) terjadi otomatis begitu Guest Additions terinstall, tanpa perlu shortcut khusus. Di VMware caranya berbeda
1
Klik menu View
Membuka menu tampilan
2
Klik Stretch Guest
Meregangkan tampilan VM mengikuti ukuran window
3
Klik Keep Aspect Ratio Stretch
Meregangkan tampilan sambil tetap menjaga rasio aspek layar

5.2Clone#

Catatan
  • Clone di VMware konsepnya sama seperti di VirtualBox (Bab 3.2) — yang berbeda hanya letak menunya
1
Klik kanan pada VM
Membuka menu VM
2
Klik Manage › Clone
Membuat duplikat/clone dari VM yang dipilih

5.3Snapshot#

Catatan
  • Snapshot di VMware konsepnya sama seperti di VirtualBox (Bab 3.3) — yang berbeda hanya letak menunya
1
Pastikan VM dalam kondisi power off
Snapshot sebaiknya dibuat saat VM mati
2
Klik kanan pada VM › Snapshot › Take Snapshot
Membuat snapshot baru
3
Beri nama snapshot
Memudahkan identifikasi snapshot di kemudian hari

5.4Export#

Catatan
  • Export di VMware menghasilkan format OVF; konsepnya sama seperti Export di VirtualBox (Bab 3.4) yang menghasilkan OVA/OVF
1
Klik VM yang akan diekspor
Memilih VM sumber
2
Klik menu File › Export to OVF
Mengekspor VM ke format OVF (bisa dibaca hypervisor lain)
Topik 6 dari 18

6Networking VM pada VMware#

6.1Reset MAC Address#

Catatan
  • Secara default, semua VM yang dibuat dari template/clone yang sama memiliki MAC Address yang sama — perlu digenerate ulang agar unik
1
Klik VM › Double klik pada network adapter
Membuka pengaturan network adapter
2
Klik Advanced › Generate
Membuat ulang (generate) MAC Address baru yang unik

6.2Cara Mengatur Network Mode: NAT & Host Only#

Catatan
  • Kedua mode ini punya DHCP bawaan dari VMware, sehingga cukup minta ulang IP tanpa perlu mengatur IP statis manual
1
Klik VM › Double klik pada network adapter
Membuka pengaturan network adapter
2
Pilih network mode yang diinginkan (NAT / Host Only)
Menentukan jenis network mode
3
sudo netplan apply (setelah menghapus config IP lama jika ada)
Menerapkan ulang konfigurasi network
4
sudo dhclient -r ens33
Melepas (release) IP address lama
5
sudo dhclient ens33
Meminta IP address baru sesuai network mode yang baru dipilih

6.3Cara Mengatur Network Mode: LAN Segment#

Deskripsi
LAN Segment
setara dengan Internal Network pada VirtualBox — jaringan privat khusus antar VM, butuh IP statis manual karena tidak ada DHCP
1
Klik VM › Double klik pada network adapter
Membuka pengaturan network adapter
2
Klik LAN Segment › Add
Membuat LAN Segment baru
3
Beri nama LAN Segment, lalu pilih LAN Segment yang sudah dibuat
Menetapkan VM ini masuk ke LAN Segment tsb
4
sudo nano /etc/netplan/00-installer-config.yaml
Set dhcp4 menjadi 'no', lalu tambahkan baris 'addresses: [IP_Address/prefix]' di bawah dhcp4
5
sudo netplan apply
Menerapkan konfigurasi IP statis yang baru diatur

6.4Cara Mengatur Network Mode: Bridge Adapter#

Deskripsi
Bridge Adapter
mode jaringan VM di VMware yang membuatnya seolah terhubung langsung ke jaringan fisik host (mis. WiFi), setara Bridge Network di VirtualBox
Catatan
  • Perlu ditentukan dulu interface fisik host mana yang dijadikan jembatan (bridge), sebelum VM bisa memakainya
1
Klik menu Edit › Virtual Network Editor › Change Settings
Membuka pengaturan jaringan virtual VMware (butuh akses admin)
2
Pilih interface WiFi/jaringan fisik tujuan sebagai bridge
Menentukan interface fisik host yang akan di-bridge
3
Klik VM › Double klik pada network adapter › pilih Bridge
Menetapkan network adapter VM ke mode Bridge
4
sudo dhclient -r ens33, lalu sudo dhclient ens33
Melepas IP lama & meminta IP baru dari jaringan fisik tsb

6.5Jenis Network Mode di VMware#

Catatan
  • Berbeda dengan VirtualBox, NAT pada VMware memungkinkan komunikasi antar VM DAN dengan host (karena semua VM & host berbagi 1 NAT service yang sama di level aplikasi VMware)
Perbandingan Network Mode (VMware)
ModeInternetAntar VMKe Host OSKeterangan
NATBisaBisaBisaBerbeda dengan VirtualBox — NAT di VMware memakai 1 virtual network bersama sehingga semua VM & host saling terhubung
Bridge AdapterBisaBisaBisa (+ perangkat lain di jaringan fisik)VM seolah-olah terhubung langsung ke jaringan fisik (mis. WiFi)
Host OnlyTidak bisaBisaBisaJaringan privat khusus antara VM dan host saja
LAN SegmentTidak bisaBisaTidak bisaSetara Internal Network di VirtualBox — jaringan privat khusus antar VM saja
Topik 7 dari 18

7Command Line Tips and Tricks#

7.1Menggabungkan Command#

Deskripsi
Command Chaining
teknik menjalankan beberapa command sekaligus dalam 1 baris, dipisahkan tanda titik koma ( ; )
bash — fahrul@debian
ls dirA ; ls dirB
# Melihat isi dirA dan dirB sekaligus dalam 1 baris perintah
ls -R dirA ; ls -R dirB
# Melihat isi dirA dan dirB beserta seluruh sub-directory-nya sekaligus
clear
# Membersihkan tampilan terminal

7.2Tab Completion#

Deskripsi
Tab 1x
auto-complete — melengkapi otomatis nama command/directory/file, hanya berfungsi jika tidak ada command/nama lain yang mirip (ambigu)
Tab 2x
menampilkan daftar pilihan (jika ada beberapa kemungkinan nama yang cocok)
Catatan
  • Berlaku juga untuk nama directory dan nama file, tidak hanya command

7.3History#

Deskripsi
History
fitur shell yang menyimpan daftar command yang pernah dijalankan sebelumnya, sehingga bisa dilihat & dijalankan ulang
bash — fahrul@debian
history
# Menampilkan daftar riwayat command yang pernah dijalankan
!11
# Menjalankan ulang command nomor 11 pada daftar history
!L
# Menjalankan ulang command terakhir yang diawali huruf L pada daftar history
!!
# Menjalankan ulang command terakhir yang baru saja dijalankan

7.4Shortcut Keyboard#

Catatan
  • Beberapa kombinasi tombol untuk mempercepat navigasi & editing command di terminal
1
Ctrl + A
Memindahkan cursor ke awal command
2
Ctrl + E
Memindahkan cursor ke akhir command
3
Ctrl + W
Menghapus 1 kata terakhir pada command
4
Ctrl + R
Mencari command tertentu dari riwayat history
5
Ctrl + R (tekan lagi/+)
Mencari pilihan hasil lain yang cocok
6
Ctrl + L
Membersihkan tampilan terminal (setara clear)
Topik 8 dari 18

8Create, View, and Edit Files#

8.1Stdin, Stdout, Stderr#

Deskripsi
Stdin (standard input)
input yang diberikan ke terminal
Stdout (standard output)
output normal yang dihasilkan oleh terminal
Stderr (standard error)
pesan error yang dihasilkan oleh terminal
Catatan
  • Stdout maupun stderr bisa disimpan (redirect) ke dalam sebuah file
bash — fahrul@debian
ls -R dirA > output.txt
# Menyimpan stdout ke file output.txt (menimpa isi lama jika file sudah ada)
ls -R dirB >> output.txt
# Menambahkan stdout ke file output.txt (tidak menimpa isi lama)
ls -R dirC 2> error.txt
# Menyimpan stderr ke file error.txt
ls -R dirX 2>> error.txt
# Menambahkan stderr ke file error.txt
ls -R dirC 2> /dev/null
# Mengabaikan/membuang pesan error (dikirim ke /dev/null)

8.2Text Editor: VIM#

Deskripsi
VIM
text editor berbasis mode — saat pertama dibuka, posisinya di command mode, perlu berpindah mode secara eksplisit untuk mengetik (edit mode) atau menjalankan perintah save/quit (extended command mode)
bash — fahrul@debian
sudo apt-get install vim
# Menginstall VIM (perlu akses root)
vim a.txt
# Membuat/membuka file a.txt dengan VIM
1
i
Masuk ke edit mode (mulai mengetik)
2
Esc
Kembali ke command mode
3
:
Masuk ke extended command mode (untuk perintah save/quit, dll)
4
:wq lalu Enter
Menyimpan file (save) dan keluar dari VIM
5
:q!
Keluar dari VIM tanpa menyimpan perubahan

8.3Text Editor: Nano#

Deskripsi
Nano
text editor yang lebih sederhana dari VIM — bisa langsung diketik begitu dibuka, tanpa perlu berpindah mode terlebih dahulu
1
nano b.txt
Membuat/membuka file b.txt dengan Nano
2
Ctrl + O
Menyimpan (save) file
3
Ctrl + X
Keluar (exit) dari Nano

8.4Command untuk Menampilkan Isi File#

Catatan
  • Beberapa command untuk membaca isi file dengan cara yang berbeda-beda, tergantung kebutuhan
bash — fahrul@debian
cat a.txt
# Menampilkan seluruh isi file a.txt langsung sekaligus
more a.txt
# Menampilkan isi file a.txt per halaman (bertahap)
less a.txt
# Sama seperti 'more', tapi bisa scroll ke atas maupun ke bawah
head a.txt
# Menampilkan 10 baris pertama isi file a.txt
tail a.txt
# Menampilkan 10 baris terakhir isi file a.txt
head -n 5 a.txt
# Menampilkan 5 baris pertama isi file a.txt (jumlah baris bisa disesuaikan)
tail -f /var/log/auth.log
# Memonitor file auth.log secara realtime (mis. untuk melihat percobaan login yang sedang terjadi)
Topik 9 dari 18

9Package Management#

9.1Repository#

Deskripsi
Repository
sumber (server) tempat sistem mengambil/mendownload package saat proses install/update software
bash — root@debian
nano /etc/apt/sources.list
# Mengubah daftar repository — hapus repo cdrom (jika ada) dan tambahkan repo online agar bisa install package lewat internet
Topik 10 dari 18

10User & Group Management#

10.1Membuat User#

Deskripsi
User
akun individual di sistem Linux yang dipakai untuk login & menjalankan proses, masing-masing diidentifikasi dengan UID (User ID) yang unik
Catatan
  • Ada 2 command untuk membuat user baru di Linux, dengan tingkat kelengkapan setup yang berbeda
Perbandingan useradd vs adduser
CommandKeterangan
useradd <username>Menambahkan user baru — home directory TIDAK otomatis dibuat, shell juga tidak otomatis diatur (perlu flag tambahan)
useradd -m -s /bin/bash <username>Menambahkan user baru + otomatis membuat home directory (-m) + set shell ke /bin/bash (-s)
adduser <username>Menambahkan user baru — home directory & shell (/bin/bash) otomatis diatur, dan langsung diminta membuat password interaktif
bash — fahrul@debian
cat /etc/passwd
# Melihat daftar (list) seluruh user pada sistem
su -
# Switch ke user root dengan environment root (bukan environment user sebelumnya)
useradd <username>
# Menambahkan user baru
passwd <username>
# Mengatur password untuk user tsb

10.2Membuat Group#

Deskripsi
Group
kumpulan user yang dikelompokkan bersama, memudahkan pemberian permission secara massal (tanpa harus mengatur satu-satu per user)
bash — root@debian
cat /etc/group
# Melihat daftar (list) seluruh group pada sistem
groupadd <group_name>
# Membuat group baru
id <username>
# Cek group yang diikuti oleh user tsb
usermod -G <group_name> <username>
# Mengganti group user (MENIMPA group sebelumnya, kecuali default group)
usermod -aG <group_name> <username>
# Menambahkan user ke group baru TANPA menghapus/menimpa group yang sudah diikuti sebelumnya (mis. untuk menambahkan ke group sudo)
Penting
Selalu gunakan flag -aG (append), bukan -G saja, saat ingin menambah user ke group baru — jika lupa flag -a, semua keanggotaan group sebelumnya akan hilang.

10.3Menghapus User & Group#

Catatan
  • Command untuk menghapus user atau group yang sudah tidak dibutuhkan dari sistem
bash — root@debian
userdel -rf <username>
# Menghapus user beserta home directory-nya (-r), dan dipaksa (-f) meskipun sedang ada proses yang memakai user tsb
groupdel <group_name>
# Menghapus group
Topik 11 dari 18

11Controlling Access to Files (Permission)#

11.1Jenis Access Control#

Deskripsi
Access Control (Permission)
aturan hak akses terhadap file/directory di Linux, terbagi 3 jenis dasar — Read (r), Write (w), Execute (x) — dengan arti berbeda tergantung diterapkan ke file atau directory
Arti Permission pada File vs Directory
PermissionPada FilePada Directory
Read (r)Membuka (open) isi fileMelihat daftar isi (list) directory
Write (w)Mengubah (modify) isi fileMembuat/menghapus (create/delete) isi directory
Execute (x)Menjalankan (run) fileMasuk (cd) ke directory tsb

11.2Struktur Access Control#

Deskripsi
Permission String
notasi 10 karakter (mis. -rwxr-xrw-) yang menunjukkan tipe file dan hak akses owner/group/other sekaligus
Struktur String Permission
BagianKeterangan
Karakter ke-1 ( - / d )Tipe: '-' untuk file, 'd' untuk directory
Karakter ke 2-4 (rwx)Permission untuk OWNER (pemilik file)
Karakter ke 5-7 (r-x)Permission untuk GROUP (grup pemilik file)
Karakter ke 8-10 (rw-)Permission untuk OTHER (user lain di luar owner & group)
Penting
Contoh lengkap: '-rwxr-xrw- 1 user user 22 Feb 26 16:13 a.txt' → file a.txt, owner (user) punya rwx, group (user) punya r-x, other punya rw-, ukuran 22 byte, terakhir diubah 26 Feb jam 16:13.

11.3Mengubah Kepemilikan (Ownership)#

Deskripsi
Ownership
kepemilikan sebuah file/directory, terdiri dari 1 owner (pemilik) dan 1 group pemilik — diubah memakai command chown
bash — root@debian
chown <user_name>:<group_name> <file_name>
# Mengubah owner (dan group) dari sebuah file
chown -R <user_name>:<group_name> <directory_name>
# Mengubah owner dari sebuah directory beserta seluruh isi/turunannya (rekursif)

11.4Mengubah Permission (chmod)#

Deskripsi
chmod
command untuk mengubah permission file/directory, bisa dengan cara symbolic (huruf u/g/o + +/- + r/w/x) atau numeric (angka 0-7)
Catatan
  • Nilai numeric: read = 4, write = 2, execute = 1 — dijumlahkan sesuai kombinasi yang diinginkan
  • Contoh: 7 = 4+2+1 (rwx), 6 = 4+2 (rw-), 4 = 4 (r--)
bash — fahrul@debian
chmod u+r <file_name>
# Menambahkan permission read HANYA untuk owner (u = user/owner)
chmod g-w <file_name>
# Menghapus permission write HANYA untuk group (g)
chmod +x <file_name>
# Menambahkan permission execute untuk owner, group, DAN other sekaligus
chmod 764 <file_name>
# Mengatur permission sekaligus: owner=rwx(7), group=rw-(6), other=r--(4)
chmod -R u+r <directory_name>
# Mengubah permission directory beserta seluruh isi/turunannya (rekursif) — berlaku sama untuk kombinasi flag chmod lainnya
Topik 12 dari 18

12Basic Configuration#

12.1Konfigurasi Hostname dan Hosts#

Deskripsi
Hostname
identitas/nama sebuah komputer/server di dalam jaringan
Hosts
file mapping antara IP address dengan hostname — bisa dibilang seperti DNS versi lokal (per-komputer)
bash — root@debian
hostnamectl set-hostname <hostname>
# Mengatur hostname (berlaku sama untuk Debian maupun Ubuntu)
nano /etc/hosts
# Mengatur hosts — tambahkan baris '127.0.1.1 <hostname>.domain <hostname>'

12.2Konfigurasi IP Address — Debian#

Catatan
  • Debian memakai file /etc/network/interfaces untuk konfigurasi IP address statis
bash — root@debian
ip address
# Cek IP address & interface yang ada saat ini
nano /etc/network/interfaces
# Edit file konfigurasi interface (lakukan untuk semua interface yang dipakai)
nano /etc/resolv.conf
# Menambahkan baris 'nameserver 8.8.8.8' dan 'nameserver 1.1.1.1' untuk DNS resolver. Catatan: di Debian/Ubuntu modern file ini dikelola resolvconf/systemd-resolved dan bisa tertimpa saat reboot — cara persisten adalah dns-nameservers di /etc/network/interfaces (Debian) atau blok nameservers di netplan (Ubuntu)
systemctl restart networking
# Menerapkan (apply) konfigurasi networking yang baru
ifup <interface_name>
# Mengaktifkan interface yang berstatus down
📄/etc/network/interfaces
auto <interface_name>
→ Mengaktifkan interface tsb otomatis saat boot (di dalam file interfaces)
iface <interface_name> inet static
→ Menetapkan interface tsb memakai IP statis
address <ip_address>
→ Menentukan IP address interface
netmask <subnet_mask>
→ Menentukan subnet mask interface
gateway <ip_gateway>
→ Default gateway ditulis sebagai route — gateway4 sudah deprecated sejak Netplan 0.103 (Ubuntu 22.04) dan dihapus di rilis berikutnya (tidak perlu diisi untuk interface router yang mengarah ke server)
📄/etc/resolv.conf
nameserver 8.8.8.8
nameserver 1.1.1.1

12.3Konfigurasi IP Address — Ubuntu (Netplan)#

Deskripsi
Netplan
tool konfigurasi network modern di Ubuntu yang memakai file YAML
bash — root@debian
ip address
# Cek IP address & interface yang ada saat ini
ls /etc/netplan/
# Cek nama file konfigurasi netplan yang ada (jika 00-installer-config.yaml tidak ditemukan)
sudo nano /etc/netplan/00-installer-config.yaml
# Edit file konfigurasi netplan
nano /etc/resolv.conf
# Alternatif lain, menambahkan 'nameserver 8.8.8.8' dan 'nameserver 1.1.1.1'
sudo netplan apply
# Menerapkan (apply) konfigurasi networking yang baru
📄/etc/netplan/00-installer-config.yaml
network:
ethernets:
<nama_interface>:
→ Struktur dasar isi file YAML netplan
dhcp4: no
→ Menonaktifkan DHCP agar bisa pakai IP statis
addresses: [<ip_address>/<subnet>]
→ Menentukan IP address & prefix interface
routes:
→ Default gateway ditulis sebagai route — gateway4 sudah deprecated sejak Netplan 0.103 (Ubuntu 22.04) dan dihapus di rilis berikutnya
nameservers:
→ Blok DNS — daftar alamatnya ditulis bertingkat di bawahnya sebagai addresses:, bukan langsung sebagai list
📄/etc/resolv.conf
nameserver 8.8.8.8
nameserver 1.1.1.1
Penting
Perhatikan indentasi YAML pada file netplan — salah indentasi akan membuat konfigurasi gagal diterapkan (error saat netplan apply).
Topik 13 dari 18

13Routing & NAT#

13.1Routing Configuration (IP Forwarding)#

Deskripsi
IP Forwarding
fitur kernel Linux yang memungkinkan server meneruskan (routing) paket antar interface/network — nonaktif secara default
bash — root@debian
nano /etc/sysctl.d/99-routing.conf
# Membuat file konfigurasi baru untuk IP forwarding
sudo sysctl --system
# Menerapkan (apply) konfigurasi sysctl yang baru dibuat
📄/etc/sysctl.d/99-routing.conf
net.ipv4.ip_forward = 1
→ Mengaktifkan IP forwarding
vm.swappiness = 10
→ Opsional, mengatur pemakaian swap

13.2NAT Configuration (iptables)#

Deskripsi
NAT (Network Address Translation)
teknik yang dipakai server Linux sebagai router agar client di jaringan internal bisa mengakses internet lewat 1 IP public yang sama
Catatan
  • Jika Debian dijadikan router dan network adapter-nya berupa host-only (mis. di VirtualBox/VMware), perlu diaktifkan internet sharing dari laptop/host ke adapter tsb (mis. vmnet1) — lakukan ulang tiap kali laptop dimatikan/restart, dan cek ulang IP pada interface router
bash — root@debian
iptables -t nat -A POSTROUTING -o <interface_keluar> -j MASQUERADE
# Mengaktifkan NAT (masquerade) pada interface yang mengarah keluar (mis. ens33)
mkdir /etc/iptables
# Membuat directory untuk menyimpan konfigurasi iptables
iptables-save > /etc/iptables/rules.v4
# Menyimpan rule iptables saat ini ke file, agar tidak hilang setelah restart
apt install iptables-persistent
# Menginstall package agar rule iptables otomatis dimuat kembali (persistent) setiap kali server restart. Catatan: sejak Debian 10 backend defaultnya nftables dan perintah iptables berjalan sebagai lapisan kompatibilitas (iptables-nft) — masih jalan, tapi untuk sistem baru pertimbangkan nft langsung
Topik 14 dari 18

14Remote Access Server (SSH)#

14.1Konfigurasi SSH Server#

Deskripsi
SSH (Secure Shell)
protokol untuk mengakses & mengelola server secara aman dari jarak jauh lewat command line, dengan koneksi terenkripsi
Catatan
  • Langkah dasar menginstall & mengamankan akses SSH ke server
bash — root@debian
apt install openssh-server
# Menginstall service SSH server
nano /etc/ssh/sshd_config
# Mengubah port default SSH — tambahkan/ubah baris 'Port <custom_port_number>' (menyamarkan port default 22 agar lebih aman)
systemctl restart ssh
# Merestart service SSH agar perubahan konfigurasi diterapkan
ssh username@<ip_address> -p <port_number>
# Melakukan SSH ke server dengan custom port
nano /etc/ssh/sshd_config
# Membatasi akses — tambahkan baris 'AllowUsers <user_name>' agar hanya user tertentu yang boleh SSH

14.2Public Key & Private Key#

Deskripsi
Private Key
kunci kriptografi yang disimpan di sisi client dan tidak boleh pernah dibagikan ke siapa pun
Public Key
kunci kriptografi pasangan private key, ditaruh di sisi server untuk memverifikasi identitas client saat login
Catatan
  • Login SSH berbasis key lebih aman dibanding login berbasis password, karena tidak rentan brute-force
bash — root@debian
ssh-keygen
# Membuat pasangan public & private key di sisi client (tersimpan di directory ~/.ssh/)
ssh-copy-id -p <port> <user_name>@<ip_address>
# Menyalin public key ke server secara otomatis
mkdir .ssh && nano .ssh/authorized_keys
# Cara manual: membuat directory .ssh di server, lalu tempel isi public key ke file authorized_keys
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
# Wajib mengetatkan permission — sshd (StrictModes) akan MENOLAK authorized_keys yang permission-nya writable oleh group/other
nano /etc/ssh/sshd_config
# Set 'PasswordAuthentication no' untuk menonaktifkan login pakai password
sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf
# Pada beberapa distro (mis. Ubuntu cloud image), setting password authentication juga perlu diubah di file konfigurasi tambahan ini agar benar-benar nonaktif
Penting
Pastikan login dengan key sudah berhasil SEBELUM menonaktifkan PasswordAuthentication — jika tidak, ada risiko terkunci sepenuhnya dari akses SSH ke server.
Topik 15 dari 18

15DHCP Server#

15.1Konfigurasi DHCP Server#

Deskripsi
DHCP Server
layanan yang bertugas memberikan IP address secara otomatis kepada client dalam suatu subnet
Catatan
  • Bisa juga dikonfigurasi untuk memberi fixed IP (IP tetap) khusus untuk host tertentu berdasarkan MAC address-nya
bash — root@debian
apt install isc-dhcp-server
# Menginstall service DHCP server
nano /etc/default/isc-dhcp-server
# Menentukan interface yang akan diberikan service DHCP — isi 'INTERFACESv4="<interface_name>"'
nano /etc/dhcp/dhcpd.conf
# Mengatur subnet & range IP yang akan dibagikan DHCP (lihat contoh di bawah)
nano /etc/dhcp/dhcpd.conf
# Mengatur fixed IP untuk host tertentu (lihat contoh di bawah)
systemctl restart isc-dhcp-server
# Merestart service DHCP agar konfigurasi baru diterapkan
📄/etc/dhcp/dhcpd.conf
subnet 172.16.1.0 netmask 255.255.255.0 {
→ Menentukan subnet & netmask yang dilayani
range 172.16.1.100 172.16.1.150;
→ Range IP yang boleh dibagikan ke client
option domain-name-servers 10.10.10.2, 10.10.10.3;
→ DNS server yang diberikan ke client
option domain-name "imau.com";
→ Domain name yang diberikan ke client
option routers 172.16.1.1;
→ Default gateway yang diberikan ke client
option broadcast-address 172.16.1.255;
→ IP broadcast subnet tsb
default-lease-time 600;
→ Lama waktu sewa IP default (detik)
max-lease-time 7200;
→ Lama waktu sewa IP maksimal (detik)
}
→ Penutup blok subnet
📄/etc/dhcp/dhcpd.conf
host fantasia {
→ Nama identitas host (bebas)
hardware ethernet 00:0c:29:f0:ed:37;
→ MAC address perangkat tsb
fixed-address 172.16.1.27;
→ IP tetap yang akan selalu diberikan ke perangkat dengan MAC di atas
}
→ Penutup blok host
Penting
Host dengan fixed-address tetap bisa memakai BOOTP maupun DHCP untuk booting; host tanpa fixed-address hanya bisa booting via DHCP.
Topik 16 dari 18

16File Sharing Server#

16.1Introduction#

Deskripsi
NFS (Network File System)
standar file sharing untuk sesama sistem Linux
Samba
standar file sharing yang kompatibel dengan sistem Windows (protokol SMB/CIFS)

16.2NFS Server#

Catatan
  • Langkah dasar menyiapkan server sebagai penyedia (host) file sharing NFS
bash — root@debian
apt install nfs-kernel-server
# Menginstall service NFS server
mkdir <directory_name>
# Membuat directory yang akan dibagikan (di-share)
nano /etc/exports
# Mengatur directory mana yang bisa diakses, oleh siapa, dan dengan hak akses apa (lihat contoh di bawah)
systemctl restart nfs-kernel-server
# Merestart service NFS agar konfigurasi baru diterapkan
📄/etc/exports
/nfs1 *(ro)
→ Directory /nfs1 bisa diakses SEMUA client, tapi read only (ro)
/nfs2 172.16.1.27(rw,sync,no_root_squash)
→ Directory /nfs2 hanya bisa diakses IP 172.16.1.27, dengan hak read-write (rw), sync, dan no_root_squash (agar user root di client tetap dianggap root, bukan diturunkan jadi user biasa)

16.3NFS Client#

Catatan
  • Langkah dari sisi client untuk mengakses (mount) directory yang sudah dibagikan server NFS
bash — root@debian
apt install nfs-common
# Menginstall service/tools NFS client
mkdir <directory_name>
# Membuat directory tujuan mount di sisi client
showmount -e <server's_ip_address>
# Cek daftar directory yang di-share oleh server NFS
mount <server's_ip>:<server's_dir> <client's_dir>
# Mount directory NFS secara sementara (contoh: mount 10.10.10.2:/nfs1 /home/imau/folder1)
sudo nano /etc/fstab
# Mount permanen (otomatis ter-mount lagi tiap restart) — isi sesuai contoh di bawah
mount -a
# Memuat & mount seluruh entry pada file fstab
📄/etc/fstab
<server_ip>:<server_dir> <client_dir> nfs _netdev 0 0
→ Baris mount otomatis: source NFS, target directory, filesystem type, opsi _netdev (tunggu network siap dulu)

16.4Samba Server#

Catatan
  • Langkah dasar menyiapkan server sebagai penyedia (host) file sharing Samba (kompatibel Windows)
bash — root@debian
apt install samba
# Menginstall service Samba server
mkdir <dir_name>
# Membuat directory yang akan dibagikan (di-share)
sudo nano /etc/samba/smb.conf
# Menambahkan blok share baru (lihat contoh di bawah)
systemctl restart smbd
# Merestart service Samba agar konfigurasi baru diterapkan
📄/etc/samba/smb.conf
[samba-1]
→ Nama share (bebas, dipakai client untuk akses \\server\samba-1)
path = /samba1
→ Lokasi directory yang di-share
read only = yes
→ Client hanya bisa membaca, tidak bisa menulis
guest ok = yes
→ Mengizinkan akses tanpa login/password

16.5Samba Client#

Catatan
  • Directory Samba bisa diakses langsung lewat File Explorer memakai path smb://<ip_server>, atau lewat command line
bash — root@debian
apt install smbclient cifs-utils
# Menginstall service/tools Samba client (smbclient) sekaligus cifs-utils (menyediakan mount.cifs, dibutuhkan agar perintah mount di langkah 4 berfungsi)
smbclient -L <ip_server>
# Cek daftar folder yang di-share (list) oleh server Samba
mkdir <dir_name>
# Membuat directory tujuan mount di sisi client
sudo mount //<ip_server>/samba-1 <client_dir>
# Mount folder Samba secara sementara ('samba-1' harus sama dengan nama share [samba-1] di smb.conf server)
sudo nano /etc/fstab
# Mount permanen — tambahkan baris '//<ip_server>/samba-1 <client_dir> cifs _netdev 0 0' (tambahkan 'username=...,password=...' jika share tidak guest ok)
Topik 17 dari 18

17DNS Server#

17.1Introduction#

Deskripsi
DNS Server
server yang bertugas menerjemahkan (translate) domain name menjadi IP address, sehingga tidak perlu mengingat IP satu-satu
Catatan
  • Sebenarnya translasi ini bisa dilakukan dengan menambahkan nama & IP address ke file /etc/hosts di tiap perangkat — tapi cara ini tidak efektif karena harus dikonfigurasi satu-satu di SETIAP perangkat
  • DNS Server (mis. BIND9) menyelesaikan masalah ini dengan menyediakan 1 sumber terpusat yang bisa ditanya oleh semua client dalam jaringan
Contoh Topologi Studi Kasus (dipakai di seluruh contoh bab ini)
ServerIP AddressPeran
ns1 (10.10.10.2)10.10.10.2DNS Server (master)
ns2 (10.10.10.3)10.10.10.3DNS Server (slave)
web (10.10.10.4)10.10.10.4Web Server

17.2Caching / Full Recursive DNS Server#

Deskripsi
Caching / Full Recursive DNS Server
mode DNS server yang mencari jawaban sendiri ke DNS di internet dengan menelusuri hierarki DNS (root → TLD → authoritative), lalu menyimpan hasilnya sementara (cache) untuk mempercepat pertanyaan berikutnya
bash — root@debian
apt install bind9
# Menginstall service DNS server (BIND9)
nano /etc/bind/named.conf.options
# Mengatur ACL network yang boleh bertanya (lihat contoh di bawah)
systemctl restart bind9
# Merestart service BIND9 agar konfigurasi baru diterapkan
📄/etc/bind/named.conf.options
acl internal-network {
→ Membuat ACL (daftar network yang diizinkan) dengan nama 'internal-network'
172.16.1.0/24;
→ Network client yang diizinkan bertanya ke DNS server ini
};
→ Penutup blok acl
options {
→ Blok pengaturan utama BIND9
directory "/var/cache/bind";
→ Lokasi penyimpanan cache DNS
recursion yes;
→ Mengizinkan DNS server mencari jawaban sendiri secara rekursif ke DNS lain
allow-query { internal-network; };
→ Hanya network pada ACL di atas yang boleh bertanya (query) ke server ini
dnssec-validation auto;
→ Mengaktifkan validasi keamanan DNSSEC otomatis
};
→ Penutup blok options

17.3Forwarding DNS Server#

Deskripsi
Forwarding DNS Server
mode DNS server yang HANYA meneruskan (forward) pertanyaan ke DNS server lain (mis. DNS publik seperti 8.8.8.8), tidak mencari sendiri secara rekursif
bash — root@debian
apt install bind9
# Menginstall service DNS server (BIND9)
nano /etc/bind/named.conf.options
# Mengatur forwarders (lihat contoh di bawah)
systemctl restart bind9
# Merestart service BIND9
📄/etc/bind/named.conf.options
acl internal-network { 172.16.1.0/24; };
→ Network client yang diizinkan bertanya
options {
→ Blok pengaturan utama
directory "/var/cache/bind";
→ Lokasi penyimpanan cache DNS
recursion yes;
→ Tetap mengizinkan proses pencarian, tapi diarahkan lewat forwarders
allow-query { internal-network; };
→ Hanya network pada ACL yang boleh bertanya
forwarders { 8.8.8.8; 8.8.4.4; };
→ Daftar DNS server tujuan forward (DNS publik Google)
forward only;
→ Memaksa server HANYA forward, tidak mencari sendiri jika forwarder tidak menjawab
dnssec-validation auto;
→ Mengaktifkan validasi DNSSEC otomatis
listen-on { any; };
→ Mendengarkan query dari semua interface
};
→ Penutup blok options

17.4Konfigurasi Client#

Catatan
  • Setelah DNS server siap (baik caching, forwarding, maupun authoritative), client perlu diarahkan untuk memakai DNS server tsb
bash — root@debian
nano /etc/resolv.conf
# Menentukan DNS server yang dipakai client — isi 'nameserver <dns_server_ip_address>'
dig facebook.com
# Menguji resolusi DNS (bisa juga pakai 'nslookup')

17.5Authoritative DNS Server#

Deskripsi
Authoritative DNS Server
DNS server yang menyimpan record ASLI suatu domain (bukan hanya forward atau mencari ke server lain)
Forward Zone
menerjemahkan domain name → IP address
Reverse Zone
menerjemahkan IP address → domain name (kebalikan dari forward zone)
bash — root@debian
apt install bind9
# Menginstall service DNS server (BIND9)
nano /etc/bind/named.conf.local
# Mendaftarkan forward zone & reverse zone (lihat contoh di bawah)
nano /etc/bind/db.imau.com
# Membuat file record untuk forward zone (lihat contoh di bawah)
nano /etc/bind/db.10
# Membuat file record untuk reverse zone (lihat contoh di bawah)
named-checkzone imau.com db.imau.com
# Memeriksa (validasi) syntax file forward zone sebelum dipakai
named-checkzone 10.10.10.in-addr.arpa db.10
# Memeriksa (validasi) syntax file reverse zone sebelum dipakai
systemctl restart bind9
# Merestart service BIND9 agar zone baru diterapkan
📄/etc/bind/named.conf.local
zone "imau.com" {
→ Mendaftarkan forward zone untuk domain imau.com
type master;
→ Server ini adalah pemegang data utama (master) untuk zone tsb
file "/etc/bind/db.imau.com";
→ Lokasi file yang menyimpan record forward zone
};
→ Penutup blok zone
zone "10.10.10.in-addr.arpa" {
→ Mendaftarkan reverse zone untuk network 10.10.10.0/24
type master;
→ Server ini adalah master untuk reverse zone tsb
file "/etc/bind/db.10";
→ Lokasi file yang menyimpan record reverse zone
};
→ Penutup blok zone
Penting
Penamaan file reverse zone (db.10) mengikuti oktet network yang dibalik — untuk network 10.10.10.0/24, nama file lazimnya mengandung oktet ke-3 (10), karena in-addr.arpa membalik urutan oktet IP.
📄/etc/bind/db.imau.com
$TTL 604800
→ Default TTL (masa berlaku cache) record, dalam detik
@ IN SOA imau.com. admin.imau.com. (
→ Start of Authority — menandai server ini otoritatif untuk domain, dengan kontak admin
1 ; Serial
→ Nomor versi zone file — WAJIB dinaikkan setiap ada perubahan, agar slave tahu ada update
3600 ; Refresh
→ Interval slave mengecek update ke master (detik)
1800 ; Retry
→ Interval slave mencoba lagi jika refresh gagal (detik)
604800 ; Expire
→ Batas waktu slave berhenti menganggap datanya valid jika tidak bisa hubungi master
86400 ) ; Negative Cache TTL
→ Lama cache untuk jawaban 'tidak ditemukan' (negative answer)
@ IN NS ns1.imau.com.
→ Menunjuk ns1 sebagai nameserver domain ini
ns1 IN A 10.10.10.2
→ Record A: ns1.imau.com → 10.10.10.2
web IN A 10.10.10.4
→ Record A: web.imau.com → 10.10.10.4
@ IN NS ns2.imau.com.
→ Menunjuk ns2 sebagai nameserver kedua — wajib ada sebelum lab master-slave di 17.6 bisa jalan
ns2 IN A 10.10.10.3
→ Record A: ns2.imau.com → 10.10.10.3 (server slave pada topologi di 17.1)
www IN CNAME web.imau.com.
→ Record CNAME: www.imau.com adalah alias dari web.imau.com (mengarah ke A record yang sudah ada, bukan ke domain apex)
Penting
Nilai Serial WAJIB dinaikkan (mis. dari 1 ke 2) setiap kali ada perubahan pada file zone — jika tidak, server slave tidak akan mengambil update terbaru.
📄/etc/bind/db.10
$TTL 604800
→ Default TTL record
@ IN SOA imau.com. admin.imau.com. ( ... )
→ Start of Authority, sama strukturnya seperti forward zone
@ IN NS ns1.imau.com.
→ Menunjuk ns1 sebagai nameserver
2 IN PTR ns1.imau.com.
→ Record PTR: 10.10.10.2 → ns1.imau.com
4 IN PTR web.imau.com.
→ Record PTR: 10.10.10.4 → web.imau.com (PTR harus menunjuk ke nama A record asli, bukan ke alias CNAME)
Penting
Pada reverse zone, hanya oktet TERAKHIR dari IP yang ditulis di record PTR (karena 3 oktet awal sudah ada di nama zone/file itu sendiri).

17.6Authoritative DNS Server (Master-Slave)#

Deskripsi
Master-Slave (DNS)
arsitektur redundansi authoritative DNS server — jika master down, slave tetap bisa menjawab query dari data yang sudah direplikasi
Catatan
  • Server slave otomatis menyalin (zone transfer) data dari master secara berkala sesuai nilai Refresh pada SOA record
bash — fahrul@debian
(Master/ns1) apt install bind9
# Install BIND9 di server master
(Master/ns1) nano /etc/bind/named.conf.options
# Set 'recursion no;' — authoritative server sebaiknya tidak melayani recursive query dari sembarang client
(Master/ns1) nano /etc/bind/named.conf.local
# Daftarkan zone dengan 'type master;' seperti Bab 17.5, tambahkan juga daftar IP slave yang diizinkan transfer zone
(Master/ns1) nano /etc/bind/db.imau.com & db.10
# Isi record forward & reverse zone, tambahkan NS record untuk ns1 DAN ns2
(Master/ns1) named-checkzone ..., lalu systemctl restart bind9
# Validasi & restart BIND9 di master
(Slave/ns2) apt install bind9
# Install BIND9 di server slave
(Slave/ns2) nano /etc/bind/named.conf.local
# Daftarkan zone yang sama, tapi dengan 'type slave;' dan 'masters { <ip_master>; };' (lihat contoh di bawah)
(Slave/ns2) systemctl restart bind9
# Restart BIND9 di slave — otomatis melakukan zone transfer pertama dari master
(Slave/ns2) tail -f /var/log/syslog & ls /var/cache/bind
# Mengecek proses zone transfer berhasil (file zone hasil transfer akan muncul di cache)
Tambahkan ns2 sebagai nameserver kedua di sisi client
# Client bisa tetap mendapat jawaban DNS meski ns1 (master) down
📄/etc/bind/named.conf.local (ns2 — slave)
zone "imau.com" {
→ Mendaftarkan zone yang sama dengan master
type slave;
→ Server ini adalah slave (menyalin data dari master). Sejak BIND 9.18 istilah resminya 'secondary' — 'slave' masih diterima sebagai sinonim
file "db.imau.com";
→ Lokasi penyimpanan hasil salinan zone dari master
masters { 10.10.10.2; };
→ IP address server master (ns1) sebagai sumber data. Sejak BIND 9.18 kata kuncinya 'primaries' — 'masters' masih diterima
};
→ Penutup blok zone (pola yang sama diulang untuk reverse zone)
Penting
File zone di sisi slave TIDAK perlu diisi manual — akan otomatis terisi lewat proses zone transfer dari master saat BIND9 di slave pertama kali dijalankan.
Topik 18 dari 18

18Web Server#

18.1Apache2 — Instalasi Dasar#

Deskripsi
Apache2
salah satu web server yang paling umum dipakai di Linux
Catatan
  • Langkah dasar berikut berlaku sebelum masuk ke konfigurasi virtualhost
bash — root@debian
apt install apache2
# Menginstall web server Apache2
systemctl status apache2
# Cek status service Apache2
nano /etc/apache2/sites-available/000-default.conf
# File konfigurasi default Apache2 (port, email admin, dll)
nano /var/www/html/index.html
# Mengubah isi file index.html — halaman default yang ditampilkan Apache2

18.2Virtualhost (Apache2)#

Deskripsi
Virtualhost
fitur agar 1 server/IP bisa meng-hosting LEBIH DARI 1 website sekaligus
Catatan
  • Ada 2 cara membedakan website: berdasarkan port (port-based) atau berdasarkan nama domain (domain-based)

18.3Virtualhost Port-Based (Apache2)#

Deskripsi
Virtualhost Port-Based
variasi virtualhost yang membedakan tiap website lewat nomor port yang berbeda-beda pada 1 IP/domain yang sama
bash — root@debian
nano /etc/apache2/sites-available/fti.conf
# Membuat file konfigurasi virtualhost baru untuk web 'fti' pada port 81 (lihat contoh di bawah)
ln -s /etc/apache2/sites-available/fti.conf /etc/apache2/sites-enabled/fti.conf
# Mengaktifkan konfigurasi tsb dengan membuat link dari sites-available ke sites-enabled
nano /var/www/html/fti/index.html
# Membuat halaman index untuk web 'fti'
lsof -P -n -i
# Cek daftar port yang sedang terbuka/dipakai di server
systemctl restart apache2
# Merestart Apache2 agar virtualhost baru aktif
Akses lewat domain:port
# Contoh: mengakses http://imau.com:81 akan menampilkan web 'fti'
📄/etc/apache2/sites-available/fti.conf
<VirtualHost *:81>
→ Virtualhost ini akan merespons request yang masuk lewat port 81
ServerAdmin admin@imau.co.id
→ Email kontak admin (informatif saja)
DocumentRoot /var/www/html/fti
→ Lokasi folder berisi file website 'fti'
ErrorLog ${APACHE_LOG_DIR}/error.log
→ Lokasi log error khusus virtualhost ini
CustomLog ${APACHE_LOG_DIR}/access.log combined
→ Lokasi log akses khusus virtualhost ini
</VirtualHost>
→ Penutup blok VirtualHost
Penting
Karena port 81 bukan port default HTTP, Apache2 juga perlu dikonfigurasi untuk 'Listen 81' (biasanya di /etc/apache2/ports.conf) agar mau mendengarkan request di port tsb.

18.4Virtualhost Domain-Based / Subdomain (Apache2)#

Deskripsi
Virtualhost Domain-Based
variasi virtualhost yang membedakan tiap website lewat nama domain/subdomain yang berbeda, meskipun semuanya tetap di port default (80)
bash — root@debian
Buat CNAME record subdomain (mis. fti.imau.com) mengarah ke domain utama, di DNS Server (Bab 17)
# Menyiapkan resolusi nama subdomain
nano /etc/apache2/sites-available/fti.conf
# Membuat konfigurasi virtualhost berbasis ServerName (lihat contoh di bawah)
ln -s /etc/apache2/sites-available/fti.conf /etc/apache2/sites-enabled/fti.conf
# Mengaktifkan virtualhost tsb
systemctl restart apache2
# Merestart Apache2 agar virtualhost baru aktif
Akses lewat subdomain.domain
# Contoh: mengakses http://fti.imau.com akan menampilkan web 'fti'
📄/etc/apache2/sites-available/fti.conf
<VirtualHost *:80>
→ Tetap memakai port default HTTP (80) — perbedaan penanda ada di ServerName, bukan port
ServerName fti.imau.com
→ Menentukan subdomain yang akan direspons oleh virtualhost ini
DocumentRoot /var/www/html/fti
→ Lokasi folder berisi file website 'fti'
</VirtualHost>
→ Penutup blok VirtualHost
Penting
Untuk virtualhost domain utama (root domain), satu VirtualHost hanya boleh punya SATU baris ServerName — nama tambahan ditulis dengan ServerAlias. Contoh: 'ServerName imau.com' lalu 'ServerAlias www.imau.com', agar kedua penulisan domain tsb sama-sama diarahkan ke DocumentRoot yang sama.

18.5NGINX — Konfigurasi Virtualhost#

Deskripsi
Server Block
istilah NGINX untuk konfigurasi virtualhost — konsepnya mirip Apache2, tapi dengan struktur file yang berbeda
bash — root@debian
sudo apt install nginx
# Menginstall web server NGINX
Buat A/CNAME record untuk subdomain di DNS Server (Bab 17)
# Menyiapkan resolusi nama untuk tiap website
nano /etc/nginx/sites-available/marketing.conf
# Membuat file konfigurasi baru untuk website 'marketing' (lihat contoh di bawah)
sudo ln -s /etc/nginx/sites-available/marketing.conf /etc/nginx/sites-enabled/marketing.conf
# Mengaktifkan konfigurasi dengan membuat link ke sites-enabled
nano /var/www/html/marketing/index.html
# Membuat halaman index untuk website 'marketing'
systemctl restart nginx
# Merestart NGINX agar konfigurasi baru diterapkan
📄/etc/nginx/sites-available/marketing.conf
server {
→ Membuka 1 blok server (setara VirtualHost di Apache)
listen 80;
→ Port yang didengarkan (IPv4)
listen [::]:80;
→ Port yang didengarkan (IPv6)
root /var/www/html/marketing;
→ Lokasi folder berisi file website
index index.html index.htm;
→ Daftar nama file yang dicari sebagai halaman utama
server_name marketing.imau.com;
→ Nama domain/subdomain yang direspons oleh server block ini
location / {
→ Blok aturan untuk semua path (/)
try_files $uri $uri/ =404;
→ Mencoba menampilkan file/directory sesuai request, jika tidak ada tampilkan error 404
}
→ Penutup blok location
}
→ Penutup blok server
Penting
Untuk membedakan website berdasarkan PORT di NGINX (bukan subdomain), cukup ganti nilai 'listen' (mis. 'listen 81 default_server;') dan hilangkan/samakan server_name sesuai kebutuhan.