Simple Setup WireGuard Server dan WireGuard-UI di Linux

Panduan lengkap dan praktis instalasi WireGuard VPN Server beserta WireGuard-UI untuk manajemen client berbasis web. Cocok untuk Ubuntu, Debian, maupun Raspberry Pi — termasuk skenario di belakang NAT atau Mikrotik.

Apa Itu WireGuard?

WireGuard adalah VPN modern yang ringan, cepat, dan aman. Dibandingkan OpenVPN atau IPsec, WireGuard memiliki performa lebih tinggi serta konfigurasi yang jauh lebih sederhana.

Dengan tambahan WireGuard-UI, pengelolaan client VPN menjadi lebih mudah melalui tampilan web tanpa harus mengedit file konfigurasi secara manual.

 

Jika Server Berada di Belakang Mikrotik / NAT

Tambahkan firewall NAT pada router:

  • WireGuard → Forward UDP
  • WebUI → Forward TCP

1. Persiapan Sistem

Khusus Raspberry Pi wajib install iptables:

apt install iptables conntrack -y

Install requirement:

apt install curl wget git -y
apt install wireguard -y
apt install resolvconf -y

mkdir -p /etc/wireguard

sudo sysctl -w net.ipv4.ip_forward=1

sudo cat > /etc/sysctl.d/99-wireguard.conf <<'EOL'
net.ipv4.ip_forward=1
EOL

sudo sysctl --system

Install NodeJs:

sudo su
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
source ~/.bashrc

nvm install 20
node -v
npm -v

Install Golang Latest Version:

sudo apt install jq -y

LATEST=$(wget -qO- https://go.dev/dl/?mode=json | \
  jq -r '.[] | select(.stable==true) | .version' | head -n 1)

ARCH=$(uname -m)
case "$ARCH" in
  armv7l|armv6l)
    GOARCH="armv6l"
    ;;
  aarch64)
    GOARCH="arm64"
    ;;
  x86_64)
    GOARCH="amd64"
    ;;
  *)
    echo "Unsupported architecture: $ARCH"
    exit 1
    ;;
esac

echo "Stable version: $LATEST for linux-$GOARCH"
wget https://go.dev/dl/${LATEST}.linux-${GOARCH}.tar.gz -O "go.tar.gz"

sudo tar -C /usr/local -xzf "go.tar.gz"

grep -qxF 'export PATH=$PATH:/usr/local/go/bin' ~/.bashrc || \
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc

source ~/.bashrc
go version

2. Install WireGuard-UI (Native)

npm install -g yarn
sudo apt install git

git clone https://github.com/ngoduykhanh/wireguard-ui.git
cd wireguard-ui
./prepare_assets.sh
go build -o wireguard-ui main.go

sudo ./wireguard-ui

Akses WebUI:
http://IP_LOCAL:5000
Username: admin
Password: admin

3. Konfigurasi WireGuard-UI Setelah Login

Setelah berhasil login ke WebUI, lakukan konfigurasi berikut:

Masuk ke: Settings → Global Settings

  • Endpoint Address: 123.123.123.123 (gunakan IP Public walau di belakang NAT, atau gunakan domain yang resolve ke IP Public)
  • DNS Servers: 1.1.1.1, 8.8.8.8
  • MTU: 1420
  • Persistent Keepalive: 15
  • Firewall Mark: 0xca6c
  • Table: auto
  • Wireguard Config File Path: /etc/wireguard/wg0.conf
  • Save

Lanjut ke: Main → Wireguard Server

  • Server Interface Addresses: 10.252.0.1/24
  • Listen Port: 61890

Simpan konfigurasi dan lakukan Apply Config sebelum menjalankan service.

4. Post Up & Pre Down Script (Tanpa Docker)

Post Up dan Pre Down

# Post Up
iptables -t nat -A POSTROUTING -s 10.252.0.0/24 -o eth0 -j MASQUERADE;
iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT;
iptables -A FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT;
iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT

# Pre Down
iptables -t nat -D POSTROUTING -s 10.252.0.0/24 -o eth0 -j MASQUERADE;
iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT;
iptables -D FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT;
iptables -D FORWARD -i wg0 -o wg0 -j ACCEPT

Catatan: Sesuaikan eth0 dengan nama interface jaringan server.

Post Up dan Pre Down (Khusus Host yang memiliki Docker)

# Post Up (Docker Compatible)
iptables -t nat -A POSTROUTING -s 10.252.0.0/24 -o eth0 -j MASQUERADE;
iptables -I DOCKER-USER -i wg0 -j ACCEPT;
iptables -I DOCKER-USER -o wg0 -j ACCEPT;
iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT;
iptables -A FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT;
iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT

# Pre Down (Docker Compatible)
iptables -t nat -D POSTROUTING -s 10.252.0.0/24 -o eth0 -j MASQUERADE;
iptables -D DOCKER-USER -i wg0 -j ACCEPT;
iptables -D DOCKER-USER -o wg0 -j ACCEPT;
iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT;
iptables -D FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT;
iptables -D FORWARD -i wg0 -o wg0 -j ACCEPT

5. Apply & Restart Service

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

wg-quick down wg0
wg-quick up wg0

6. Tahap Akhir: Menambahkan Client / Pengguna

Setelah server aktif dan konfigurasi berhasil diterapkan, Anda dapat mulai menambahkan client VPN.

Langkah-langkah:

  • Masuk ke menu Main
  • Klik Add Client
  • Isi nama client / pengguna
  • Tentukan IP Address client (otomatis tersedia)
  • Klik Save

Setelah menambahkan atau mengubah client:

  • Klik Apply Config
  • Lakukan restart WireGuard:
sudo systemctl restart wg-quick@wg0

Client dapat mengunduh file konfigurasi atau melakukan scan QR Code langsung dari WireGuard-UI untuk digunakan di perangkat Android, iOS, Windows, macOS, maupun Linux.

Kesimpulan

Dengan mengikuti panduan ini, Anda dapat membangun WireGuard VPN Server yang stabil, cepat, dan mudah dikelola menggunakan WireGuard-UI.

Konfigurasi ini cocok untuk VPS production, server lokal, Raspberry Pi, maupun server di belakang NAT atau Mikrotik.

WireGuard merupakan solusi VPN modern yang sangat direkomendasikan untuk kebutuhan remote access, tunneling internal network, maupun koneksi antar server.

The power of documents

Kami sajikan dengan bahasa yang mudah dengan disertai command line yang bisa di copy-paste sehingga memudahkan untuk melakukan modifikasi command line