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.
