Search

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:

  1. 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.

  2. 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

  1. Instal HAProxy:

    sudo dnf install haproxy
  2. 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).

  3. Mulai dan Aktifkan HAProxy:

    sudo systemctl start haproxy
    sudo systemctl enable haproxy

c. Instalasi dan Konfigurasi VPN Server (Wireguard)

  1. Instal Wireguard:

    sudo dnf install wireguard-tools
  2. Generate Key:

    umask 077
    wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
  3. 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).

  4. 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)

  1. Instal Wireguard:

    sudo dnf install wireguard-tools
  2. Generate Key:

    umask 077
    wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
  3. 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.

  4. Mulai dan Aktifkan Wireguard:

    sudo systemctl start wg-quick@wg0
    sudo systemctl enable wg-quick@wg0

c. Instalasi dan Konfigurasi Aplikasi Web CMS

  1. 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
  2. Konfigurasi Web Server:
    Pastikan web server Anda mendengarkan pada port 80 dan dapat diakses dari jaringan lokal.

3. Testing dan Verifikasi

  1. Verifikasi Koneksi VPN:
    Pastikan koneksi VPN antara server VPS dan server lokal berjalan dengan baik. Anda dapat menggunakan perintah wg untuk memeriksa status koneksi.

  2. 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.