Belakangan ada beberapa teman yang bertanya dan tertarik untuk belajar _build_ server. Kebanyakan dari mereka berfikir bahwa untuk belajar build server / maintenance server itu butuh **VPS** atau bahkan _dedicated server_. Apa bener begitu? Padahal harga untuk **VPS** untuk ukuran sebagian mahasiswa dirasa cukup tinggi, apa lagi _dedicated server_.
Sebenarnya kalau kita hanya ingin belajar, tidak harus sewa **VPS**, awal2 kita bisa manfaatkan yang namanya _virtualisasi_. (namanya belajar jadi ga perlu kan _IP public_ yang bisa diakses siapa saja, makanya kita gunakan jaringan dan IP lokal).
Ada banyak jalan untuk melakukan virtualisasi ini, ada **OpenVZ**, **VirtualBox**, **Xen**, **VMware**, dll. dari **para-virtualisasi** sampai **full-virtualisasi**, dari versi _community_ (gratis) sampai _enterprise_ (berbayar). Masing-masing ada kelebihan dan kekurangan (dan saya ga mau berdebat masalah ini).
kali ini saya menggunakan **VirtualBox**, Karena sudah banyak user yang menggunakan **VirtualBox** pada komputer pribadinya. Sebelum melanjutkan, saya informasikan dulu situasi dan kondisi pada saat _guide_ ini dibuat.
Taruh kata saya ingin membuat **2 virtual server**, 1 untuk _database server_ (**MySQL server**) dan 1 sever lainnya untuk apa juga belum terpikirkan. ;p
Pertama kita pastinya butuh **VirtualBox**. Silahkan yang belom punya download dulu. Kemudian module `vboxnetfit` untuk _bridged adapter_ ke _virtual server_. Kemungkinan Anda juga butuh module `vboxdrv` (optional buat jalanin custom _kernel_) Aktifinnya tinggal `modprobe` [nama_module].
Jika sudah mari kita jalankan VirtualBox dan buat virtual hostnya. Caranya klik Icon New di kiri atas, lalu masukan informasi nama dan OS yang digunakan. Misalnya:
Setelah itu keluar lagi pilihan buat tipe hard drivenya. Klo nantinya tidak ingin memindah ke virtualisasi lain pilih saja _default_**VDI**. Tp kali ini saya pilih **QEMU** biar **dikira**_dewa_. Klo udah tekan tombol **Create**.
Pada menu **Storage** => **Controller IDE** pilih image file yang digunakan. Ane pake **ISO CentOS 6.2 Netinstall 64 Bit**.
![VirtualBox Set Guest OS](virtual-lab-jar-lokal-05.png#center)
kemudian pada menu **Network** -> **Adapter 1** Ubah **Attached to** dari **NAT** ke **Bridged Adapter**. Name nya sesuaikan dengan interface yang sedang digunakan (dalam kasus saya : `eth0`).
![VirtualBox Set Bridged Adapter](virtual-lab-jar-lokal-06.png#center)
klo udah klik **Ok**, lalu Start **Virtual Guest**nya.
Nah proses installasi sama aja ky install OS biasa.
Yang perlu diperhatikan adalah : Gunakan Alamat _IP statik_/_DHCP Statik_ dari _router_, jangan dinamis. Karena jika IP dinamis kita bakal susah ngeremote terutama masalah _fingerprint_ SSH.
![Linux install IP setting](virtual-lab-jar-lokal-08.png#center)
Kali ini ane kasi IP `192.168.0.152`, Gateway `192.168.0.2` dan DNS server google (`8.8.8.8`).
lalu isikan URL image **CentOS**, ane pake `mirror.nus.edu.sg`, silahkan nte bisa ganti lewat `kambing.ui.ac.id` / apa lah itu. Yang jelas sesuain ama arsitektur yang nte gunain. misal (`http://kambing.ui.ac.id/centos/6.3/os/x86_64` buat yang pake **64 bit**).
kemudian klik ok dan tunggu proses installasi selesai; maka nte akan disuruh buat nge*reboot* OS.
**Reboot**/**Poweroff** virtual guest tadi. Kita edit **primary boot**nya dari **CD-ROM** ke **Hard Disk**. Caranya :
**Setting** -> **System** -> **Motherboard** -> **Boot Order** -> Naikin menu **Hard Disk** ke posisi pertama / hilangkan centang pada **Floppy** dan **CD/DVD-ROM**.
Ulangi **Part 1** untuk membuat _Virtual Guest_ lain sehingga kita punya 2 _virtual host_ dan di-_run_ bersamaan dengan _option headless_ tadi. Beri virtual guest ke 2 ini dengan IP `192.168.0.151`. Sebagai contoh virtual guest ke 2 kali ini kita gunakan untuk database server.
settting ulang mysql servernya dengan menjalankan perintah `/usr/bin/mysql_secure_installation`. Maka bakal ada pertanyaan interaktif untuk menyetting ulang MySQL server.
kemudian masuk ke MySQL server dengan user `root` untuk membuat user dan database baru.
dimana `db_testing` adalah nama database yang nanti kita gunakan.
```sql
GRANT SELECT, INSERT, UPDATE, DELETE ON db_testing.* TO 'ditatompel'@'192.168.0.%';
```
dimana `SELECT`, `INSERT`, `UPDATE`, `DELETE` adalah permission milik user `ditatompel` dari host `192.168.0.%` pada semua `table` dalam database `db_testing` ( `db_testing`.`*` ) kemudian jangan lupa untuk melakukan **flush privileges**.
dimana `192.168.0.151` adalah alamat IP server MySQL dan `ditatompel` adalah user yang kita buat pada server MySQL sebelumnya.
![iptables](virtual-lab-jar-lokal-13.png#center)
> _**Q** : Om, klo mau bikin 5 virtual guest dan RAM laptop / PC ane cuma 1GB kan ga mungkin, trus gimana ?_
**A** : Nte pake / bawa pulang laptop temen, colokin ke 1 network dan jalanin virtualbox, lakuin langkah2 di atas. Klo nte ada 4 laptop dan per laptop nte jalanin 3 Virtual guest berarti nte punya 12 virtual guest.
Jadi intinya begitu semua sudah terhubung dan dapat berkomunikasi, beres udah. Nte bisa juga testing buat belajar _port knocking_, config _firewall_, **IDS/IPS**, _load balancing_ sampai _clustering_. meskipun hasilnya masih sangat jauh dari maksimal.