Catatan Linux, Virtual Machine & Server

Ringkasan Materi & Referensi Konfigurasi Debian/Ubuntu Server Administration
18Topik
78Blok konfigurasi
Topik 1 dari 18

1Linux Fundamental#

1.1Basic Terminal#

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#

Catatan
  • Linux memakai struktur direktori berbentuk pohon (tree), dimulai dari root directory ( / ) di paling atas
  • Semua file & direktori lain berada sebagai turunan dari root directory tsb (mis. /home, /etc, /var, /root, /bin, dll)
📄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#

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)#

Catatan
  • 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)#

Catatan
  • 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)#

Catatan
  • 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)#

Catatan
  • Command untuk memindah (move) atau mengganti nama (rename) file/directory
  • 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)#

Catatan
  • Command untuk menghapus file/directory
  • rm file → menghapus file
  • rmdir directory → menghapus directory
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
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
Catatan
  • 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
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#

Deskripsi
Clone
menduplikat VM yang sudah ada, tanpa perlu install ulang dari awal
1
Klik kanan pada VM
Membuka menu VM
2
Klik Manage › Clone
Membuat duplikat/clone dari VM yang dipilih

5.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
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#

Deskripsi
Export
mengeluarkan VM dari VMware agar bisa dipakai/dipindahkan ke hypervisor lain
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#

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#

Catatan
  • Beberapa command bisa dijalankan 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#

Catatan
  • Fitur untuk melihat dan menjalankan ulang command yang pernah dijalankan sebelumnya
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#

Catatan
  • VIM adalah text editor berbasis mode — saat pertama dibuka, posisi berada 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#

Catatan
  • Nano 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 — fahrul@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#

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#

Catatan
  • Group dipakai untuk mengelompokkan beberapa user sekaligus, memudahkan pemberian permission secara massal
bash — fahrul@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 — fahrul@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#

Catatan
  • 3 jenis izin akses dasar di Linux, artinya berbeda tergantung diterapkan pada 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#

Catatan
  • Setiap file/directory memiliki string permission (mis. -rwxr-xrw-) yang terdiri dari 4 bagian
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)#

Catatan
  • Setiap file/directory punya 1 owner dan 1 group pemilik — chown dipakai untuk mengubah keduanya
bash — fahrul@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)#

Catatan
  • chmod bisa dipakai dengan 2 cara: symbolic (huruf: u/g/o + +/- + r/w/x) atau numeric (angka: 0-7)
  • 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 — fahrul@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 — fahrul@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
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>
→ Menentukan default gateway (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)#

Catatan
  • Ubuntu modern memakai Netplan (file YAML) untuk konfigurasi IP address
bash — fahrul@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
gateway4: <ip_gateway>
→ Menentukan default gateway
nameservers: [<name_server>, <name_server>]
→ Menentukan DNS server (bisa langsung di file netplan)
📄/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)#

Catatan
  • Agar sebuah server Linux bisa berfungsi sebagai router (meneruskan paket antar interface/network), fitur IP forwarding harus diaktifkan terlebih dahulu (secara default nonaktif)
bash — fahrul@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)#

Catatan
  • NAT dipakai agar client di jaringan internal (di belakang server Linux sebagai router) bisa mengakses internet lewat 1 IP public yang sama
  • 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 — fahrul@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
Topik 14 dari 18

14Remote Access Server (SSH)#

14.1Konfigurasi SSH Server#

Catatan
  • Langkah dasar menginstall & mengamankan akses SSH ke server
bash — fahrul@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#

Catatan
  • Login SSH berbasis key lebih aman dibanding login berbasis password, karena tidak rentan brute-force
  • Private key disimpan di sisi client (jangan pernah dibagikan), sedangkan public key ditaruh di server
bash — fahrul@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 BEFORE menonaktifkan PasswordAuthentication — jika tidak, ada risiko terkunci sepenuhnya dari akses SSH ke server.
Topik 15 dari 18

15DHCP Server#

15.1Konfigurasi DHCP Server#

Catatan
  • DHCP Server bertugas memberikan IP address secara otomatis kepada client dalam suatu subnet
  • Bisa juga dikonfigurasi untuk memberi fixed IP (IP tetap) khusus untuk host tertentu berdasarkan MAC address-nya
bash — fahrul@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 — fahrul@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 — fahrul@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 — fahrul@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 — fahrul@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#

Catatan
  • DNS Server digunakan untuk translate domain name menjadi IP address
  • 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#

Catatan
  • Mode ini membuat DNS Server mencari jawabannya SENDIRI ke DNS di internet, dengan menelusuri hierarki DNS (root → TLD → authoritative DNS domain tujuan)
  • Hasil pencarian akan disimpan sementara (cache) agar pertanyaan yang sama berikutnya bisa dijawab lebih cepat
bash — fahrul@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#

Catatan
  • Mode ini membuat DNS Server HANYA meneruskan (forward) pertanyaan ke DNS server lain (mis. DNS publik seperti 8.8.8.8), tidak mencari sendiri secara rekursif
bash — fahrul@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 — fahrul@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 — fahrul@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
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)#

Catatan
  • Master-Slave dipakai untuk high availability authoritative DNS server — jika master down, slave tetap bisa menjawab query dari data yang sudah direplikasi
  • 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)
file "db.imau.com";
→ Lokasi penyimpanan hasil salinan zone dari master
masters { 10.10.10.2; };
→ IP address server master (ns1) sebagai sumber data
};
→ 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#

Catatan
  • Apache2 adalah salah satu web server paling umum dipakai di Linux, langkah dasar berikut berlaku sebelum masuk ke konfigurasi virtualhost
bash — fahrul@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)#

Catatan
  • Website dibedakan lewat nomor port yang berbeda-beda pada 1 IP/domain yang sama
bash — fahrul@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)#

Catatan
  • Website dibedakan lewat nama domain/subdomain yang berbeda, meskipun semuanya tetap di port default (80)
bash — fahrul@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), gunakan 2 baris ServerName sekaligus, contoh: 'ServerName imau.com' DAN 'ServerName www.imau.com', agar kedua penulisan domain tsb sama-sama diarahkan ke DocumentRoot yang sama.

18.5NGINX — Konfigurasi Virtualhost#

Catatan
  • NGINX punya konsep virtualhost yang mirip Apache2, tapi dengan struktur file konfigurasi (server block) yang berbeda
bash — fahrul@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.