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
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)
/
├── 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
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
| Karakter | Arti |
|---|---|
| ~ | Merujuk ke home directory, baik untuk /home/user maupun /root |
| . | Merujuk ke current directory |
| .. | Merujuk ke parent directory (1 tingkat di atas) |
cd ..
# Pindah ke parent directory
cd ~
# Pindah ke home directory
1.6Touch (Membuat File)#
Catatan
- Command untuk membuat file kosong. Format: touch nama_file
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
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
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
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
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
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
2.2Tipe Hypervisor#
Deskripsi
- Hypervisor
- software yang menjalankan & mengelola virtual machine
2 Tipe Hypervisor
| Tipe | Keterangan |
|---|---|
| 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
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)
| Mode | Internet | Antar VM | Ke Host OS | Keterangan |
|---|---|---|---|---|
| NAT | Bisa | Tidak bisa | Bisa (guest → host lewat 10.0.2.2, tanpa perlu port forwarding); sebaliknya host → VM butuh port forwarding | Tiap VM punya interface NAT sendiri-sendiri (hidden/terpisah) sehingga tidak saling terhubung; IP address antar VM bisa sama |
| NAT Network | Bisa | Bisa | Bisa (guest → host lewat 10.0.2.2, tanpa perlu port forwarding); sebaliknya host → VM butuh port forwarding | Semua VM terhubung lewat 1 virtual switch yang sama |
| Bridge Network | Bisa | Bisa | Bisa (+ perangkat lain di jaringan fisik) | VM seolah-olah terhubung langsung ke jaringan fisik (mis. WiFi), mendapat IP dari jaringan tsb |
| Host Only Network | Tidak bisa | Bisa | Bisa | Jaringan privat khusus antara VM dan host saja |
| Internal Network | Tidak bisa | Bisa | Tidak bisa | Jaringan 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)
| Mode | Internet | Antar VM | Ke Host OS | Keterangan |
|---|---|---|---|---|
| NAT | Bisa | Bisa | Bisa | Berbeda dengan VirtualBox — NAT di VMware memakai 1 virtual network bersama sehingga semua VM & host saling terhubung |
| Bridge Adapter | Bisa | Bisa | Bisa (+ perangkat lain di jaringan fisik) | VM seolah-olah terhubung langsung ke jaringan fisik (mis. WiFi) |
| Host Only | Tidak bisa | Bisa | Bisa | Jaringan privat khusus antara VM dan host saja |
| LAN Segment | Tidak bisa | Bisa | Tidak bisa | Setara 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 ( ; )
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
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
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)
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
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
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
| Command | Keterangan |
|---|---|
| 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 |
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
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
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
| Permission | Pada File | Pada Directory |
|---|---|---|
| Read (r) | Membuka (open) isi file | Melihat daftar isi (list) directory |
| Write (w) | Mengubah (modify) isi file | Membuat/menghapus (create/delete) isi directory |
| Execute (x) | Menjalankan (run) file | Masuk (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
| Bagian | Keterangan |
|---|---|
| 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
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--)
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)
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
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
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)
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
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
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)
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)
nano /etc/sysctl.d/99-routing.conf
# Membuat file konfigurasi baru untuk IP forwarding
sudo sysctl --system
# Menerapkan (apply) konfigurasi sysctl yang baru dibuat
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
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
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
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
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
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
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
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
/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
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
<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)
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
[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
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)
| Server | IP Address | Peran |
|---|---|---|
| ns1 (10.10.10.2) | 10.10.10.2 | DNS Server (master) |
| ns2 (10.10.10.3) | 10.10.10.3 | DNS Server (slave) |
| web (10.10.10.4) | 10.10.10.4 | Web 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
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
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
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
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
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)
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
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.
$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.
$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
(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
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
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
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'
<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)
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'
<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
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
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.