Dalam era digital saat ini, memiliki home server yang dapat diakses dari internet menjadi semakin penting, baik untuk keperluan pribadi maupun bisnis. Artikel ini akan membahas cara membangun home server yang berada dalam jaringan lokal, namun dapat diakses dari internet dengan memanfaatkan HAProxy sebagai reverse proxy dan VPN (Wireguard) sebagai penghubung antara server di jaringan lokal dan server di jaringan internet. Seluruh sistem operasi yang digunakan adalah CentOS 9.
Arsitektur Sistem
Arsitektur sistem yang akan dibangun terdiri dari dua komponen utama:
-
Server dalam jaringan internet (Hosting VPS):
-
HAProxy: Berfungsi sebagai reverse proxy yang menerima permintaan dari internet dan meneruskannya ke server di jaringan lokal melalui VPN.
-
VPN Server (Wireguard): Berfungsi sebagai penghubung antara server di jaringan internet dan server di jaringan lokal.
-
-
Server dalam jaringan lokal:
-
VPN Client (Wireguard): Berfungsi sebagai klien yang terhubung ke VPN Server di jaringan internet.
-
Aplikasi Web CMS: Aplikasi web yang dihosting di server lokal dan dapat diakses melalui internet melalui HAProxy dan VPN.
-
Langkah-langkah Implementasi
1. Persiapan Server di Jaringan Internet (VPS)
a. Instalasi CentOS 9
Pastikan VPS Anda telah terinstal CentOS 9. Jika belum, Anda dapat mengikuti panduan instalasi CentOS 9 dari situs resmi CentOS.
b. Instalasi dan Konfigurasi HAProxy
-
Instal HAProxy:
sudo dnf install haproxy
-
Konfigurasi HAProxy:
Edit file konfigurasi HAProxy di/etc/haproxy/haproxy.cfg
:global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners stats timeout 30s user haproxy group haproxy daemon defaults log global mode http option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http frontend http_front bind *:80 default_backend http_back backend http_back server local_vpn 10.8.0.2:80 check
Dalam konfigurasi di atas, HAProxy akan mendengarkan pada port 80 dan meneruskan permintaan ke server di jaringan lokal dengan IP
10.8.0.2
(IP ini akan dijelaskan lebih lanjut saat konfigurasi VPN). -
Mulai dan Aktifkan HAProxy:
sudo systemctl start haproxy sudo systemctl enable haproxy
c. Instalasi dan Konfigurasi VPN Server (Wireguard)
-
Instal Wireguard:
sudo dnf install wireguard-tools
-
Generate Key:
umask 077 wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
-
Konfigurasi Wireguard:
Buat file konfigurasi di/etc/wireguard/wg0.conf
:[Interface] PrivateKey = <private_key_server> Address = 10.8.0.1/24 ListenPort = 51820 PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = <public_key_client> AllowedIPs = 10.8.0.2/32
Ganti
<private_key_server>
dengan private key yang dihasilkan sebelumnya, dan<public_key_client>
dengan public key dari client (akan dijelaskan di bagian server lokal). -
Mulai dan Aktifkan Wireguard:
sudo systemctl start wg-quick@wg0 sudo systemctl enable wg-quick@wg0
2. Persiapan Server di Jaringan Lokal
a. Instalasi CentOS 9
Pastikan server lokal Anda telah terinstal CentOS 9.
b. Instalasi dan Konfigurasi VPN Client (Wireguard)
-
Instal Wireguard:
sudo dnf install wireguard-tools
-
Generate Key:
umask 077 wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
-
Konfigurasi Wireguard:
Buat file konfigurasi di/etc/wireguard/wg0.conf
:[Interface] PrivateKey = <private_key_client> Address = 10.8.0.2/24 [Peer] PublicKey = <public_key_server> Endpoint = <vps_ip>:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
Ganti
<private_key_client>
dengan private key yang dihasilkan sebelumnya,<public_key_server>
dengan public key dari server VPS, dan<vps_ip>
dengan IP publik VPS Anda. -
Mulai dan Aktifkan Wireguard:
sudo systemctl start wg-quick@wg0 sudo systemctl enable wg-quick@wg0
c. Instalasi dan Konfigurasi Aplikasi Web CMS
-
Instal Web Server dan CMS:
Anda dapat menggunakan Apache atau Nginx sebagai web server dan menginstal CMS seperti WordPress, Joomla, atau Drupal. Misalnya, untuk menginstal WordPress:sudo dnf install httpd php php-mysqlnd mariadb-server sudo systemctl start httpd sudo systemctl enable httpd sudo systemctl start mariadb sudo systemctl enable mariadb
-
Konfigurasi Web Server:
Pastikan web server Anda mendengarkan pada port 80 dan dapat diakses dari jaringan lokal.
3. Testing dan Verifikasi
-
Verifikasi Koneksi VPN:
Pastikan koneksi VPN antara server VPS dan server lokal berjalan dengan baik. Anda dapat menggunakan perintahwg
untuk memeriksa status koneksi. -
Akses Aplikasi Web dari Internet:
Buka browser dan akses IP publik VPS Anda. Jika konfigurasi HAProxy dan VPN berjalan dengan baik, Anda akan diarahkan ke aplikasi web yang dihosting di server lokal.
Kesimpulan
Dengan memanfaatkan HAProxy sebagai reverse proxy dan Wireguard sebagai VPN, Anda dapat membangun home server yang berada dalam jaringan lokal namun dapat diakses dari internet. Arsitektur ini memberikan fleksibilitas dan keamanan, memungkinkan Anda untuk mengelola server lokal dengan mudah tanpa harus membuka port langsung ke internet. Seluruh proses di atas dilakukan menggunakan CentOS 9, namun dapat diadaptasi untuk distribusi Linux lainnya dengan sedikit penyesuaian.