Membuat virtual host pada Apache di Debian 12 untuk dua domain, yaitu mediatkj.web.id dan tkj.my.id, keduanya mengarah ke IP 192.168.10.10
.
Langkah 1: Instalasi Apache
Jika Apache belum terinstal di server Debian 12 Anda, jalankan perintah berikut:
apt update
apt install apache2
Langkah 2: Membuat Direktori untuk Masing-Masing Website
Setiap virtual host memerlukan direktori sendiri untuk menyimpan file website. Kita akan membuat direktori untuk kedua domain di bawah /var/www/
.
mkdir -p /var/www/mediatkj.web.id/public_html
mkdir -p /var/www/tkj.my.id/public_html
Selanjutnya, ubah kepemilikan direktori agar Apache (pengguna www-data
) dapat mengaksesnya.
chown -R www-data:www-data /var/www/mediatkj.web.id
chown -R www-data:www-data /var/www/tkj.my.id
Langkah 3: Membuat Halaman Indeks Sederhana
Untuk menguji apakah virtual host berfungsi, buat file index.html
sederhana di masing-masing direktori.
Untuk mediatkj.web.id
:
nano /var/www/mediatkj.web.id/public_html/index.html
Isi file dengan kode berikut:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>mediatkj.web.id</title>
</head>
<body>
<h1>Selamat datang di mediatkj.web.id!</h1>
</body>
</html>
Untuk tkj.my.id
:
nano /var/www/tkj.my.id/public_html/index.html
Isi file dengan kode berikut:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tkj.my.id</title>
</head>
<body>
<h1>Selamat datang di tkj.my.id!</h1>
</body>
</html>
Langkah 4: Membuat File Virtual Host
Apache menggunakan file konfigurasi terpisah untuk setiap virtual host. File-file ini disimpan di /etc/apache2/sites-available/
.
Konfigurasi untuk mediatkj.web.id
Buat file baru:
nano /etc/apache2/sites-available/mediatkj.web.id.conf
Tambahkan konfigurasi berikut ke dalam file:
<VirtualHost 192.168.10.10:80>
ServerAdmin webmaster@mediatkj.web.id
ServerName mediatkj.web.id
ServerAlias www.mediatkj.web.id
DocumentRoot /var/www/mediatkj.web.id/public_html
ErrorLog ${APACHE_LOG_DIR}/mediatkj_error.log
CustomLog ${APACHE_LOG_DIR}/mediatkj_access.log combined
</VirtualHost>
Konfigurasi untuk tkj.my.id
Buat file baru:
nano /etc/apache2/sites-available/tkj.my.id.conf
Tambahkan konfigurasi berikut ke dalam file:
<VirtualHost 192.168.10.10:80>
ServerAdmin webmaster@tkj.my.id
ServerName tkj.my.id
ServerAlias www.tkj.my.id
DocumentRoot /var/www/tkj.my.id/public_html
ErrorLog ${APACHE_LOG_DIR}/tkj_error.log
CustomLog ${APACHE_LOG_DIR}/tkj_access.log combined
</VirtualHost>
Langkah 5: Mengaktifkan Virtual Host
Setelah file konfigurasi dibuat, Anda harus mengaktifkannya dengan perintah a2ensite
, lalu me-restart
Apache.
a2ensite mediatkj.web.id.conf
a2ensite tkj.my.id.conf
Sekarang, nonaktifkan konfigurasi default Apache untuk menghindari konflik:
a2dissite 000-default.conf
Terakhir, restart Apache untuk menerapkan semua perubahan:
systemctl restart apache2
Langkah 6: Konfigurasi DNS (File /etc/hosts
)
Untuk menguji virtual host dari komputer lokal Anda (bukan dari server itu sendiri), Anda perlu mengarahkan domain ke IP server. Karena ini adalah IP lokal (192.168.10.10
), kita akan mengedit file /etc/hosts
di komputer Anda (misalnya Windows, Linux, atau macOS).
Tambahkan baris berikut ke file /etc/hosts
di komputer Anda:
192.168.10.10 mediatkj.web.id www.mediatkj.web.id
192.168.10.10 tkj.my.id www.tkj.my.id
Sekarang, buka browser dan ketik mediatkj.web.id
atau tkj.my.id
. Seharusnya Anda akan melihat halaman indeks yang berbeda untuk masing-masing domain, membuktikan bahwa virtual host Anda telah berhasil dikonfigurasi.
Konfigurasi File DNS
Langkah-langkah konfigurasi DNS server di Debian 12 menggunakan BIND9 untuk domain mediatkj.web.id dan tkj.my.id dengan alamat IP 192.168.10.10.
Langkah 1: Instalasi BIND9
Pertama, instal paket BIND9. BIND (Berkeley Internet Name Domain) adalah perangkat lunak DNS yang paling umum digunakan di Linux.
apt update
apt install bind9 bind9utils dnsutils
Langkah 2: Konfigurasi File Utama BIND9
File konfigurasi utama BIND9 adalah /etc/bind/named.conf.local
. Kita akan menambahkan zona untuk kedua domain di sini.
nano /etc/bind/named.conf.local
Tambahkan baris-baris berikut di akhir file:
// Zona untuk mediatkj.web.id
zone "mediatkj.web.id" {
type master;
file "/etc/bind/db.mediatkj.web.id";
};
// Zona untuk tkj.my.id
zone "tkj.my.id" {
type master;
file "/etc/bind/db.tkj.my.id";
};
// Zona untuk reverse lookup
zone "10.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
db.mediatkj.web.id
dandb.tkj.my.id
adalah file-file yang akan berisi catatan DNS (A, CNAME, dll.) untuk masing-masing domain.db.192
adalah file untuk reverse lookup (mencari nama domain dari alamat IP).
Langkah 3: Membuat File Zona (db.mediatkj.web.id)
Sekarang, buat file zona untuk mediatkj.web.id
. Anda bisa menyalin file template bawaan BIND9 sebagai dasar.
cp /etc/bind/db.local /etc/bind/db.mediatkj.web.id
nano /etc/bind/db.mediatkj.web.id
Edit file tersebut agar sesuai dengan domain Anda:
$TTL 604800
@ IN SOA ns1.mediatkj.web.id. root.mediatkj.web.id. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.mediatkj.web.id.
@ IN A 192.168.10.10
ns1 IN A 192.168.10.10
www IN A 192.168.10.10
@ IN SOA ns1.mediatkj.web.id. root.mediatkj.web.id.
: Menentukan name server utama dan alamat email admin.@ IN NS ns1.mediatkj.web.id.
: Menentukan name server untuk zona ini.@ IN A 192.168.10.10
: Mengarahkan domain utamamediatkj.web.id
ke IP192.168.10.10
.ns1 IN A 192.168.10.10
: Mencatat alamat IP untuk name server.www IN A 192.168.10.10
: Mengarahkan subdomainwww
ke IP yang sama.
Langkah 4: Membuat File Zona (db.tkj.my.id)
Ulangi proses yang sama untuk domain tkj.my.id
.
cp /etc/bind/db.local /etc/bind/db.tkj.my.id
nano /etc/bind/db.tkj.my.id
Isi file tersebut dengan konfigurasi berikut:
$TTL 604800
@ IN SOA ns1.tkj.my.id. root.tkj.my.id. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.tkj.my.id.
@ IN A 192.168.10.10
ns1 IN A 192.168.10.10
www IN A 192.168.10.10
Langkah 5: Membuat File Zona untuk Reverse Lookup (db.192)
File ini penting untuk reverse lookup, di mana server bisa mencocokkan IP kembali ke nama domain.
cp /etc/bind/db.127 /etc/bind/db.192
nano /etc/bind/db.192
Edit file tersebut:
$TTL 604800
@ IN SOA ns1.mediatkj.web.id. root.mediatkj.web.id. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.mediatkj.web.id.
@ IN NS ns1.tkj.my.id.
10 IN PTR mediatkj.web.id.
10 IN PTR tkj.my.id.
@ IN NS ns1.tkj.my.id.
: Tambahkan name server kedua domain.10 IN PTR mediatkj.web.id.
: Angka10
adalah bagian terakhir dari IP192.168.10.10
. Ini mengarahkan IP tersebut ke nama domain.
Langkah 6: Validasi dan Restart BIND9
Setelah semua file dibuat, validasi konfigurasi Anda untuk memastikan tidak ada kesalahan sintaksis:
named-checkconf
named-checkzone mediatkj.web.id /etc/bind/db.mediatkj.web.id
named-checkzone tkj.my.id /etc/bind/db.tkj.my.id
named-checkzone 10.168.192.in-addr.arpa /etc/bind/db.192
Jika tidak ada pesan kesalahan, restart layanan BIND9 untuk menerapkan perubahan:
systemctl restart bind9
Langkah 7: Mengatur Resolver DNS Klien
Terakhir, agar komputer klien di jaringan Anda menggunakan DNS server ini, Anda perlu mengarahkan nameserver
mereka ke IP 192.168.10.10
.
Pada komputer klien, edit file /etc/resolv.conf
(untuk Linux) atau konfigurasi DNS di pengaturan jaringan.
# File /etc/resolv.conf
nameserver 192.168.10.10
nameserver 8.8.8.8 # Tambahkan DNS publik sebagai cadangan
Sekarang, Anda bisa menguji konfigurasi DNS dengan perintah dig
atau nslookup
.
dig mediatkj.web.id
dig tkj.my.id
dig -x 192.168.10.10
Hasilnya akan menunjukkan bahwa domain-domain tersebut berhasil diterjemahkan ke IP 192.168.10.10
.
FTP Server
Konfigurasi FTP server di Debian 12 menggunakan ProFTPD untuk domain mediatkj.web.id (pengguna dania
) dan tkj.my.id (pengguna danang
), di mana setiap pengguna hanya dapat mengakses direktori utama mereka sendiri.
Kita akan menggunakan ProFTPD karena fleksibilitasnya dalam mengkonfigurasi akses per pengguna dan direktori.
Langkah 1: Instalasi ProFTPD
Jika ProFTPD belum terinstal, jalankan perintah berikut:
apt update
apt install proftpd-basic
Saat instalasi, pilih mode standalone ketika diminta. Layanan akan otomatis berjalan setelah instalasi selesai.
Langkah 2: Membuat Pengguna dan Direktori FTP
Kita perlu membuat dua pengguna Linux, dania
dan danang
, yang akan digunakan khusus untuk login FTP. Kita akan mengatur shell mereka ke /usr/sbin/nologin
agar mereka tidak bisa login langsung ke terminal server, meningkatkan keamanan.
- Buat pengguna
dania
:useradd -m -s /usr/sbin/nologin dania passwd dania
Ikuti petunjuk untuk membuat kata sandi. Direktori home
dania
akan otomatis dibuat di/home/dania
. - Buat pengguna
danang
:useradd -m -s /usr/sbin/nologin danang passwd danang
Ikuti petunjuk untuk membuat kata sandi. Direktori home
danang
akan otomatis dibuat di/home/danang
.
Langkah 3: Konfigurasi ProFTPD
File konfigurasi utama ProFTPD adalah /etc/proftpd/proftpd.conf
. Kita akan mengedit file ini untuk menerapkan aturan yang spesifik untuk dania
dan danang
.
- Buat cadangan file konfigurasi:
cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.bak
- Edit file konfigurasi:
nano /etc/proftpd/proftpd.conf
Cari dan pastikan baris-baris berikut sudah sesuai:
- Mengunci pengguna di direktori home mereka: Pastikan baris ini ada untuk membatasi akses pengguna.
DefaultRoot ~
- Menonaktifkan login root: Untuk keamanan, pastikan root tidak bisa login melalui FTP.
RootLogin off
- Mengunci pengguna di direktori home mereka: Pastikan baris ini ada untuk membatasi akses pengguna.
- Tambahkan blok konfigurasi untuk setiap pengguna:Di bagian akhir file, tambahkan blok <Directory> untuk membatasi akses lebih lanjut. Ini memastikan setiap pengguna hanya bisa mengakses direktori yang ditentukan.
# Konfigurasi untuk user dania (mediatkj.web.id) <Directory /home/dania> User dania Group dania AllowOverwrite on <Limit CWD PWD MKD RMD RNFR RNTO DELE STOR> AllowUser dania DenyAll </Limit> </Directory> # Konfigurasi untuk user danang (tkj.my.id) <Directory /home/danang> User danang Group danang AllowOverwrite on <Limit CWD PWD MKD RMD RNFR RNTO DELE STOR> AllowUser danang DenyAll </Limit> </Directory>
DefaultRoot ~
: Mengunci pengguna di direktori home mereka.AllowUser
: Mengizinkan akses hanya untuk pengguna yang ditentukan di direktori tersebut.AllowOverwrite on
: Mengizinkan pengguna untuk menimpa file yang sudah ada.
- Simpan dan keluar dari editor (
Ctrl+X
, laluY
, laluEnter
).
Langkah 4: Menerapkan Perubahan dan Pengujian
Setelah semua konfigurasi selesai, restart layanan ProFTPD agar perubahan diterapkan:
systemctl restart proftpd
Sekarang Anda bisa menguji koneksi FTP dari klien (seperti FileZilla, WinSCP, atau perintah ftp
) dengan detail berikut:
- Host:
192.168.10.10
- User
dania
:- Username:
dania
- Password: [kata sandi
dania
]
- Username:
- User
danang
:- Username:
danang
- Password: [kata sandi
danang
]
- Username:
Ketika dania
login, ia hanya akan melihat direktori /home/dania
dan tidak bisa keluar dari direktori tersebut. Hal yang sama juga berlaku untuk pengguna danang
, yang hanya akan melihat /home/danang
.
Tips Keamanan Tambahan:
- Sangat disarankan untuk menggunakan SFTP (SSH File Transfer Protocol) yang sudah terenkripsi dan jauh lebih aman daripada FTP. Cukup dengan menginstal dan mengkonfigurasi SSH, pengguna bisa langsung login dengan kredensial yang sama tanpa konfigurasi FTP tambahan.
- Jika Anda menggunakan firewall (seperti UFW), pastikan Anda mengizinkan lalu lintas pada port 21 untuk FTP.