Merge pull request #23 from viechoco/main

featured article, fix typo, add missing steps
This commit is contained in:
jasmerah1966 2023-06-18 03:29:59 +07:00 committed by GitHub
commit e3f4677da5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 510 additions and 7 deletions

View file

@ -5,7 +5,7 @@ date: 2023-06-04T01:19:36+07:00
lastmod:
draft: false
noindex: false
featured: false
featured: true
pinned: false
# comments: false
series:

View file

@ -0,0 +1,190 @@
---
title: "Mengkonfigurasi WireGuard VPN Client"
description: "Informasi mengenai cara mengimport konfigurasi VPN WireGuard Anda ke Android, iOS, MacOS, Windows dan Linux."
# linkTitle:
date: 2023-06-06T23:51:13+07:00
lastmod:
draft: false
noindex: false
# comments: false
nav_weight: 1000
# nav_icon:
# vendor: bootstrap
# name: toggles
# color: '#e24d0e'
series:
- WireGuard VPN
categories:
- Privasi
- Networking
tags:
- WireGuard
- iPhone
- Android
- Linux
- Windows
- MacOS
images:
# menu:
# main:
# weight: 100
# params:
# icon:
# vendor: bs
# name: book
# color: '#e24d0e'
authors:
- ditatompel
- vie
---
Artikel ini berisi informasi mengenai cara untuk **mengimport** konfigurasi **WireGuard VPN** Anda ke **Android**, **iOS/iPhone**, **MacOS**, **Windows** dan **Linux**.
<!--more-->
---
Artikel ini adalah bagian dari [seri **WireGuard VPN**](https://insights.ditatompel.com/id/series/wireguard-vpn/). Jika Anda belum membaca artikel sebelumnya dari seri ini, Anda mungkin akan tertarik untuk membaca [Cara Setup **VPN Server WireGuard** Sendiri]({{< ref "/tutorials/how-to-setup-your-own-wireguard-vpn-server/index.id.md" >}}) atau [Menginstall WireGuard-UI untuk Mengatur WireGuard Server Anda]({{< ref "/tutorials/installing-wireguard-ui-to-manage-your-wireguard-vpn-server/index.id.md" >}}).
Pada awalnya, [WireGuard](https://www.wireguard.com/) dirilis untuk **kernel Linux**, namun sekarang WireGuard sudah tersedia untuk **Windows**, **macOS**, **BSD**, **iOS**, dan **Android**. Saat Anda membeli **VPN WireGuard** dari penyedia layanan VPN, biasanya Anda akan menerima file konfigurasi (beberapa penyedia juga memberi gambar **QR Code**). File konfigurasi inilah yang Anda butuhkan untuk menyetting VPN WireGuard di perangkat Anda.
Untuk Windows, MacOS, Android, dan iOS, yang perlu anda lakukan adalah mengimport file konfigurasi yang diberikan oleh penyedia layanan VPN WireGuard ke [aplikasi official WireGuard](https://www.wireguard.com/install/). Untuk pengguna Linux yang menggunakan `wg-quick` bahkan jauh lebih mudah, yaitu cukup meletakkan file konfigurasi ke folder `/etc/wireguard`.
Meskipun cara mensettingnya cukup mudah, saya akan tetap menuliskan langkah-langkah untuk menginstall atau mengimport konfigurasi WireGuard disini untuk keperluan dokumentasi pribadi.
Konfigurasi WireGuard yang diberikan oleh penyedia layanan VPN atau Sistem Administrator Anda sebenarnya hanyalah sebuah *text* file saja, biasanya akan terlihat seperti berikut:
```plain
[Interface]
Address = 10.10.88.5/32
PrivateKey = gJc2XC/D2op6Y37at6tW1Sjl8gY/O/O4Apw+MDzAZFg=
DNS = 1.1.1.1
MTU = 1450
[Peer]
PublicKey = dW7TUSnRylgpo+rbNr1a55Wmg1lCBgjYnluiJhDuURI=
PresharedKey = Ps4+a+xQfwKFBx+yWHKF7grUP3rzilOCQDftZ5A3z08=
AllowedIPs = 0.0.0.0/0
Endpoint = xx.xx.xx0.246:51822
PersistentKeepalive = 15
```
> _Bagian alamat IP dari `[Peer] Endpoint` diatas dihapus untuk alasan privasi dan keamanan._
## iPhone / iOS
Download [official WireGuard client untuk iOS dari App Store](https://apps.apple.com/us/app/wireguard/id1441195209?ls=1), pastikan bahwa aplikasi berasal dari **"[WireGuard Development Team](https://apps.apple.com/us/developer/wireguard-development-team/id1441195208)"**.
Kemudian Anda dapat mengimport konfigurasi dengan menekan tombol <kbd>+</kbd> yang terletak di sisi layar kanan atas dari aplikasi WireGuard.
### Menggunakan QR Code
1. Jika penyedia layanan VPN Anda memberikan gambar **QR Code** untuk konfigurasi WireGuardnya, pilih **"Create from QR code"** kemudian *scan* gambar **QR Code** yang diberikan tersebut.
2. Ketika diminta untuk memasukan **name of the scanned tunnel** ([*contoh gambar*](wg-ios1.png)), isi saja dengan apapun yang bisa Anda ingat dengan mudah. *Hindari menggunakan karakter selain `-` dan `[a-z]`*. Profile koneksi VPN baru yang baru saja Anda tambahkan akan muncul di aplikasi WireGuard Anda.
### Menggunakan import file atau archive
1. Untuk mengimport konfigurasi dari file `.conf`, Anda perlu mendownload terlebih dahulu konfigurasi tersebut ke perangkat Anda.
2. Setelah konfigurasi tersebut terdownload ke perangkat Anda, pilih **"Create from file or archive"** dan import konfigurasi WireGuard Anda.
_Ingat, hindari menggunakan karakter selain `-` dan `[a-z]` untuk **interface** **"name"**_.
Setelah konfigurasi berhasil diimport, cukup tap tombol **"_switch_ Active"** pada profile VPN ke **on** untuk mengkatifkan koneksi VPN [[*contoh gambar connected VPN WireGuard yang aktif di iOS*](wg-ios2.png)].
## Android
Download [official WireGuard client untuk Android dari Play Store](https://play.google.com/store/apps/details?id=com.wireguard.android),pastikan bahwa aplikasi berasal dari **"[WireGuard Development Team](https://play.google.com/store/apps/developer?id=WireGuard+Development+Team)"**.
Anda dapat mengimport konfigurasi dengan menekan tombol <kbd>+</kbd> yang terletak di sisi layar kanan bawah dari aplikasi WireGuard.
### Menggunakan QR Code
1. Jika penyedia layanan VPN Anda memberikan gambar **QR Code** untuk konfigurasi WireGuardnya, pilih **"Scan from QR code"** kemudian *scan* gambar **QR Code** yang diberikan tersebut.
2. Ketika diminta untuk memasukan **Tunnel Name** ([*contoh gambar*](wg-android1.png)), isi saja dengan apapun yang bisa Anda ingat dengan mudah. *Hindari menggunakan karakter selain `-` dan `[a-z]`*. Profile koneksi VPN baru yang baru saja Anda tambahkan akan muncul di aplikasi WireGuard Anda.
### Menggunakan import file atau archive
1. Untuk mengimport konfigurasi dari file `.conf`, Anda perlu mendownload terlebih dahulu konfigurasi tersebut ke perangkat Anda.
2. Setelah konfigurasi tersebut terdownload ke perangkat Anda, pilih **"Import from file or archive"** dan import konfigurasi WireGuard Anda.
_Ingat, hindari menggunakan karakter selain `-` dan `[a-z]` untuk **interface** **"name"**_.
Setelah konfigurasi berhasil diimport, cukup tap tombol **"_switch_ Active"** pada profile VPN ke **on** untuk mengkatifkan koneksi VPN [[*contoh gambar connected VPN WireGuard yang aktif di Android*](wg-android2.png)].
## Windows dan MacOS
Saya meletakan Windows dan MacOS di sesi yang sama karena mengimport konfigurasi WireGuard untuk sistem operasi Windows dan MacOS cukup mirip. Setelah aplikasi [official WireGuard](https://www.wireguard.com/install/) terinstall:
1. Klik tombol "**Add Tunnel**" (atau pada *icon dropdown*-nya) dan "**Import tunnel(s) from file...**", kemudian pilih file konfigurasi WireGuard Anda.
2. Setelah berhasil melakukan konesi VPN WireGuard, coba lakukan pengecekan alamat IP publik Anda. Jika semua konfigurasi benar, maka IP VPN server Anda yang seharusnya tampil saat pengecekan, bukan IP dari ISP Anda.
![Koneksi VPN WireGuard di Windows](wg-windows-connected.png#center)
## Linux
Untuk pengguna Linux, Anda perlu menginstall *package* `wireguard` ke sistem Anda. Cari tahu [bagaimana cara menginstall WireGuard dari situs resmi WireGuard](https://www.wireguard.com/install/) atau dari halaman dokumentasi *distro* yang Anda gunakan.
### Menggunakan wg-quick
Cara paling mudah dan paling *simple* untuk menggunakan WireGuard adalah dengan menggunakan `wg-quick` yang tersedia setelah Anda menginstall *package* `wireguard`. Letakkan file konfigurasi WireGuard dari penyedia layanan VPN Anda ke `/etc/wireguard` dan lakukan koneksi ke VPN server menggunakan perintah berikut:
```shell
sudo systemctl start wg-quick@<interface-name>.service.
```
Ubah `<interface-name>` diatas dengan nama file (tanpa ekstensi `.conf`) dari konfigurasi WireGuard yang diberikan oleh penyedia layanan VPN Anda.
Sebagai contoh, jika Anda mengubah nama file `wg0.conf` ke `wg-do1.conf` yang berada di folder `/etc/wireguard`, Anda bisa melakukan koneksi ke VPN server menggunakan perintah `sudo systemctl start wg-quick@wg-do1.service`.
Cobalah melakukan pengecekan koneksi WireGuard dengan mengecek alamat IP publik Anda dari browser atau terminal (`curl ifconfig.me`). Jika alamat IP yang terdeteksi masih alamat IP dari ISP yang Anda gunakan, perintah pertama untuk melakukan *troubleshot* adalah `sudo wg show` atau `sudo systemctl status wg-quick@wg-do1.service`.
> _**Catatan 1**: Secara default, `wg-quick` menggunalan `resolvconf` untuk memasukan entri **DNS** baru. Hal ini akan menimbulkan masalah dengan **network manager** dan **DHCP client** yang tidak menggunakan `resolvconf`, karena mereka akan menulis ulang entri DNS di `/etc/resolv.conf` (yang akan menghapus DNS server yang telah ditambahkan oleh perintah `wg-quick`)._
> _Solusinya adalah dengan menggunakan software network manager yang mensupport `resolvconf`._
> _**Catatan 2**: Pengguna `systemd-resolved` harus memastikan bahwa `systemd-resolvconf` terinstall dan berjalan dengan baik._
### Mengunakan NetworkManager
**NetworkManager** pada *bleeding-edge* atau *rolling release distro* seperti **Arch Linux** sudah mensupport WireGuard VPN secara *native*.
#### Menggunakan NetworkManager TUI & GUI
![NetworkManager tui](wg-nmtui.png#center)
Anda dapat dengan mudah mengkonfigurasi koneksi WireGuard dan *peers*-nya menggunakan **NetworkManager TUI** atau **GUI**. Pada contoh ini, saya akan menggunakan **NetworkManager GUI**.
1. Buka **NetworkManager** GUI, klik <kbd>+</kbd> untuk menambahkan koneksi.
2. Pilih "**Import a saved VPN configuration**" import konfigurasi WireGuard Anda.
3. Kemudian, Anda dapat mengubah "**Connection name**" dan "**Interface name**" ke apapun yang bisa Anda ingat dengan mudah. Tapi, **Hindari menggunakan karakter selain `-` dan `[a-z]`** untuk "**Interface name**". Koneksi tidak akan berjalan jika Anda menggunakan karakter spesial seperi *spasi*.
![NetworkManager gui](wg-nmgui.png#center)
#### Menggunakan nmcli
`nmcli` dapat mengimport konfigurasi `wg-quick`. Sebagai contoh, untuk mengimport konfigurasi WireGuard dari `/etc/wireguard/t420.conf`:
```shell
nmcli connection import type wireguard file /etc/wireguard/t420.conf
```
Meskipun `nmcli` dapat membuat profil koneksi WireGuard, tetapi ia tidak mendukung konfigurasi untuk *peer*. Berikut ini adalah contoh konfigurasi WireGuard melalui format `.nmconnection` file yang ada pada folder `/etc/NetworkManager/system-connections/` untuk *multiple peers* dan *custom routing*:
```plain
[connection]
id=WG-<redacted>
uuid=<redacted-uuid-string>
type=wireguard
autoconnect=false
interface-name=wg-<redacted>
timestamp=1684607233
[wireguard]
private-key=<redacted_base64_encoded_private_key>
[wireguard-peer.<redacted_base64_encoded_public_key>]
endpoint=<redacted_ip_address>:<redacted_port>
persistent-keepalive=15
allowed-ips=0.0.0.0/0;
[wireguard-peer.<redacted_base64_encoded_public_key>]
endpoint=<redacted_ip_address>:<redacted_port>
persistent-keepalive=15
allowed-ips=<redacted_specific_ip_network_routes_separated_by_semicolon>
[ipv4]
address1=10.10.88.2/24
dns=192.168.1.105;192.168.1.252;
method=manual
[ipv6]
addr-gen-mode=stable-privacy
method=ignore
```
![nmcli wireguard connection example](wg-nmcli.png#center)
## Catatan
- Anda tidak dapat melakukan koneksi ke VPN server yang sama dari 2 perangkat atau lebih dengan **key** yang sama. **Setiap perangkat HARUS memiliki _key_ yang unik**.
- Untuk beberapa sistem operasi seperti Windoes, jika Anda tidak dapat mengimport konfigurasi WireGuard Anda ke aplikasi WireGuard, pastikan bahwa file konfigurasi Anda berekstensi `.conf`.
### Catatan Tambahan
- Jika Anda tertarik untuk [memiliki **VPN Server WireGuard** Sendiri]({{< ref "/tutorials/how-to-setup-your-own-wireguard-vpn-server/index.id.md" >}}) tetapi mengalami kesulitan atau keterbatasan secara teknis, saya dapat membantu Anda untuk melakukannya dengan imbalan sedikit uang. (_Saya juga menerima **Monero XMR** sebagai **imbalan** jika Anda tidak memiliki mata uang Rupiah_).
- Untuk dapat menghubungi saya, silahkan kunjungi [https://www.ditatompel.com/pages/contact](https://www.ditatompel.com/pages/contact).

View file

@ -6,6 +6,7 @@ date: 2023-06-05T19:04:57+07:00
lastmod:
draft: false
noindex: false
featured: true
# comments: false
nav_weight: 1000
# nav_icon:
@ -354,5 +355,5 @@ Ketika dikombinasikan dengan **Nginx** sebagai *reverse proxy*, Anda bahkan bisa
Akan tetapi, melakukan *maintenance* pada jaringan WireGuard yang besar bisa sangat kompleks dan susah dilakukan. Namun, ada *software* yang dapat membantu Anda untuk membantu mengatur hal itu, salah satu contohnya adalah [Netmaker](https://www.netmaker.io/).
### Catatan Tambahan
- Jika Anda memiliki kesulitan teknis untuk menmelakukan *setup* VPN server WireGuard sendiri, saya dapat membantu Anda untuk melakukannya dengan imbalan sedikit uang. (_Saya juga menerima **Monero XMR** sebagai **imbalan** jika Anda tidak memiliki mata uang Rupiah_).
- Jika Anda memiliki kesulitan teknis untuk melakukan *setup* VPN server WireGuard sendiri, saya dapat membantu Anda untuk melakukannya dengan imbalan sedikit uang. (_Saya juga menerima **Monero XMR** sebagai **imbalan** jika Anda tidak memiliki mata uang Rupiah_).
- Untuk dapat menghubungi saya, silahkan kunjungi [https://www.ditatompel.com/pages/contact](https://www.ditatompel.com/pages/contact).

View file

@ -6,6 +6,7 @@ date: 2023-06-05T19:04:57+07:00
lastmod:
draft: false
noindex: false
featured: true
# comments: false
nav_weight: 1000
# nav_icon:

View file

@ -0,0 +1,310 @@
---
title: "Menginstall WireGuard-UI untuk Mengatur WireGuard Server Anda"
description: "WireGuard-UI akan sangat mempermudah Anda dalam mengatur WireGuard peers. Artikel ini membahas langkah-langkah menginstall dan mengkonfigurasi WireGuard UI di VPS."
# linkTitle:
date: 2023-06-06T04:20:43+07:00
lastmod:
draft: false
noindex: false
# comments: false
nav_weight: 1000
# nav_icon:
# vendor: bootstrap
# name: toggles
# color: '#e24d0e'
series:
- WireGuard VPN
categories:
- Privasi
- SysAdmin
- Networking
- Self-Hosted
tags:
- WireGuard
- WireGuard UI
- Nginx
images:
# menu:
# main:
# weight: 100
# params:
# icon:
# vendor: bs
# name: book
# color: '#e24d0e'
authors:
- ditatompel
- vie
---
WireGuard-UI akan sangat mempermudah Anda dalam mengatur **WireGuard** *peers* (*clients*). Artikel ini membahas langkah-langkah menginstall dan mengkonfigurasi WireGuard UI di VPS.
<!--more-->
---
[Wireguard-UI](https://github.com/ngoduykhanh/wireguard-ui) adalah GUI berbasis website untu mmengatur konfigurasi WireGuard server yang ditulis oleh [ngoduykhanh](https://github.com/ngoduykhanh) menggunakan bahasa pemrograman **Go**. Ini bisa menjadi alternatif untuk menginstall dan mempermudah pengatur VPN server WireGuard Anda.
Jika Anda lebih memilih untuk menginstall WireGuard server **"from scratch"* dan mengatur dan mengkonfigurasi secara manual, Anda bisa mengikuti artikel saya sebelumnya mengenai "[Cara Setup VPN Server WireGuard Sendiri]({{< ref "/tutorials/how-to-setup-your-own-wireguard-vpn-server/index.id.md" >}})"
## Prasyarat
- Sebuah **VPS** (**Ubuntu** `22.04 LTS`) dengan alamat IP publik dan **Nginx** *webserver* sudah terinstall di VPS tersebut.
- Nyaman dan terbiasa dengan Linux *command-line*.
- Paham dasar-dasar *subnetting* di **IPv4** (_jujur, saya tidak begitu paham dan berpengalaman untuk subnetting di **IPv6**, jadi artikel ini hanya untuk **IPv4**_).
- Mampu mengkonfigurasi **Nginx** *Virtual Host*.
Pada artikel ini, tujuan kita adalah:
- _**WireGuard** daemon_ berjalan di port `51822/UDP`.
- **WireGuard UI** berjalan dari `127.0.0.1` port `5000`.
- **Nginx** bertugas sebagai *reverse proxy* supaya **WireGuard UI** dan WireGuard UI dapat diakses melalui protokol **HTTPS**.
## Mempersiapkan Server Anda
Pertama, pastikan server sudah *up-to-date* dan WireGuard sudah terinstall di server Anda.
```shell
sudo apt update && sudo apt upgrade
sudo apt install wireguard
```
Edit `/etc/sysctl.conf` dan tambahkan konfigurasi `net.ipv4.ip_forward=1` di bagian akhir file tersebut, kemudian jalankan perintah `sudo sysctl -p`.
```shell
sudo sysctl -p
```
Hal tersebut perlu dilakukan supaya *kernel* mengijinkan melakukan **IP forwarding**.
### Mengkonfigrasi Firewall
Anda perlu untuk menambahkan _port_ yang akan digunakan oleh WireGuard _daemon_ ke _allow-list firewall_ Anda. Dari bawaan distro **Ubuntu**, **UFW** sudah terinstall dan dapat digunakan untuk mengkonfigurasi *firewall*.
```shell
sudo ufw allow OpenSSH
sudo ufw allow 80 comment "allow HTTP" # akan digunakan oleh Nginx
sudo ufw allow 443 comment "allow HTTPS" # akan digunakan oleh Nginx
sudo ufw allow proto udp to any port 443 comment "allow QUIC" # Jika konfigurasi Nginx Anda mensupport QUIC
sudo ufw allow proto udp to any port 51822 comment "WireGuard listen port"
```
> _Perhatikan bahwa saya juga menambahkan **OpenSSH** ke allow list untuk menghindari terputusnya koneksi SSH jika sebelumnya Anda belum mengkonfigurasi / mengaktifkan UFW._
*Enable* / *restart* `ufw` menggunakan perintah berikut:
```shell
sudo ufw enable # untuk enable firewall, atau
sudo ufw reload # untuk reload firewall
```
## Mendownload & Mengkonfigurasi WireGuard-UI
Download [Wireguard-UI dari halaman _latest release_-nya](https://github.com/ngoduykhanh/wireguard-ui/releases) ke server Anda (pilih sesuai dengan sistem operasi dan arsitektur CPU server Anda).
*Extract* file `.tar.gz` yang baru saja Anda download:
```shell
tar -xvzf wireguard-ui-*.tar.gz
```
Buat folder `/opt/wireguard-ui` dan pindahkan `wireguard-ui` *binary* (dari hasil *extract* file `.tar.gz`) ke `/opt/wireguard-ui`.
```shell
mkdir /opt/wireguard-ui
mv wireguard-ui /opt/wireguard-ui/
```
Buat *environment file* untuk WireGuard-UI. Environment file tersebut nantinya akan dibaca dari `EnvironmentFile` melalui `systemd`:
```plain
# /opt/wireguard-ui/.env
SESSION_SECRET=<YOUR_STRONG_RANDOM_SECRET_KEY>
WGUI_USERNAME=<YOUR_WIREGUARD_UI_USERNAME>
WGUI_PASSWORD=<YOUR_WIREGUARD_UI_PASSWORD>
```
Jika Anda ingin mengaktifkan fitur email, Anda perlu menambahkan setting `SMTP_*` ke *environment variable* diatas. Baca [WireGuard UI Environment Variables details](https://github.com/ngoduykhanh/wireguard-ui#environment-variables) untuk informasi lebih lanjut.
### Menemukan Default Interface Server
Kemudian, cari tahu *network interface* mana yang digunakan oleh server Anda sebagai *default route*-nya. Anda bisa menggunakan perintah `ip route list default` untuk itu. Sebagai contoh, *output* dari perintah `ip route list default` saya adalah:
```plain
default via 164.90.160.1 dev eth0 proto static
```
Catat kata setelah *output* `dev` diatas, itu adalah *default network interface* server Anda. Kita membutuhkan informasi tersebut nanti. Jika dilihat dari contoh *output* diatas, *default network interface* saya `eth0`.
Buat file `/opt/wireguard-ui/postup.sh`, dan isi dengan contoh konfigurasi berikut:
```bash
#!/usr/bin/bash
# /opt/wireguard-ui/postup.sh
ufw route allow in on wg0 out on eth0
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
```
*Bash script* `postup.sh` diatas akan dieksekusi saat *service* WireGuard **dijalankan (*started*)**.
Buat file `/opt/wireguard-ui/postdown.sh`. dan isi dengan contoh konfigurasi berikut:
```bash
#!/usr/bin/bash
# /opt/wireguard-ui/postdown.sh
ufw route delete allow in on wg0 out on eth0
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
```
*Bash script* `postdown.sh` diatas akan dieksekusi saat *service* WireGuard **diberhentikan (*stopped*)**.
Ubah `eth0` dari dua *bash script* diatas dengan *default network interface* Anda (*lihat pada sesi [Menemukan Default Interface Server](#menemukan-default-interface-server) diatas*).
Kemudian, ubah *file permission* kedua *bash script* tersebut (`/opt/wireguard-ui/postup.sh` and `/opt/wireguard-ui/postdown.sh`) supaya bisa dieksekusi:
```shell
chmod +x /opt/wireguard-ui/post*.sh
```
### WireGuard-UI daemon SystemD
Untuk memanage **WireGuard-UI** daemon (Web UI) menggunakan `systemd`, buat `/etc/systemd/system/wireguard-ui-daemon.service` *systemd service* file, dan isi dengan konfigurasi berikut:
```systemd
[Unit]
Description=WireGuard UI Daemon
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
Type=simple
WorkingDirectory=/opt/wireguard-ui
EnvironmentFile=/opt/wireguard-ui/.env
ExecStart=/opt/wireguard-ui/wireguard-ui -bind-address "127.0.0.1:5000"
[Install]
WantedBy=multi-user.target
```
> WireGuard UI daemon akan *listen* ke `127.0.0.1:5000` dengan konfigurasi `systemd` service diatas.
Sekarang *reload* konfigurasi `systemd` *daemon* dan cobalah untuk menjalankan `wireguard-ui-daemon.service`.
```shell
sudo systemctl daemon-reload
sudo systemctl start wireguard-ui-daemon.service
```
Periksa dan pastikan `wireguard-ui-daemon.service` Anda berjalan dengan baik dengan menggunakan perintah `systemctl status wireguard-ui-daemon.service`:
```plain
● wireguard-ui-daemon.service - WireGuard UI Daemon
Loaded: loaded (/etc/systemd/system/wireguard-ui-daemon.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2023-06-05 23:57:47 UTC; 5s ago
Main PID: 4388 (wireguard-ui)
Tasks: 4 (limit: 1115)
Memory: 17.1M
CPU: 1.243s
CGroup: /system.slice/wireguard-ui-daemon.service
└─4388 /opt/wireguard-ui/wireguard-ui -bind-address 127.0.0.1:5000
Jun 05 23:57:47 fra1-do1 wireguard-ui[4388]: Git Ref : refs/tags/v0.5.1
Jun 05 23:57:47 fra1-do1 wireguard-ui[4388]: Build Time : 06-05-2023 23:57:47
Jun 05 23:57:47 fra1-do1 wireguard-ui[4388]: Git Repo : https://github.com/ngoduykhanh/wireguard-ui
Jun 05 23:57:47 fra1-do1 wireguard-ui[4388]: Authentication : true
Jun 05 23:57:47 fra1-do1 wireguard-ui[4388]: Bind address : 127.0.0.1:5000
Jun 05 23:57:47 fra1-do1 wireguard-ui[4388]: Email from :
Jun 05 23:57:47 fra1-do1 wireguard-ui[4388]: Email from name : WireGuard UI
Jun 05 23:57:47 fra1-do1 wireguard-ui[4388]: Custom wg.conf :
Jun 05 23:57:47 fra1-do1 wireguard-ui[4388]: Base path : /
Jun 05 23:57:49 fra1-do1 wireguard-ui[4388]: ⇨ http server started on 127.0.0.1:5000
```
Jika semuanya berjalan dengan baik, Anda bisa melihat bahwa **WireGuard-UI** sudah *listen* ke `127.0.0.1:5000` (tapi, untuk saat ini, Anda tidak dapat mengakses web UI secara *remote* sampai Anda menelesaikan sesi "*[Mengkonfigurasi Nginx Untuk WireGuard-UI](#mengkonfigurasi-nginx-untuk-wireguard-ui)*" dibawah).
Supaya `wireguard-ui-daemon.service` otomatis berjalan ketika server *restart*, jalankan perintah berikut:
```shell
sudo systemctl enable wireguard-ui-daemon.service
```
### Auto Restart WireGuard Daemon
Karena **WireGuard-UI** hanya bertugas untuk *menggenerate* konfigurasi WireGuard, Anda perlu `systemd` *service* lainnya untuk mendeteksi adanya perubahan pada konfigurasi WireGuard dan melakukan *restart* WireGuard *service* itu sendiri. Buat `/etc/systemd/system/wgui.service` dan isi dengan contoh konfigurasi berikut:
```systemd
[Unit]
Description=Restart WireGuard
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart wg-quick@wg0.service
[Install]
RequiredBy=wgui.path
```
Kemudian, buat `/etc/systemd/system/wgui.path`:
```systemd
[Unit]
Description=Watch /etc/wireguard/wg0.conf for changes
[Path]
PathModified=/etc/wireguard/wg0.conf
[Install]
WantedBy=multi-user.target
```
Reload `systemd` *daemon* dengan menjalankan perintah berikut:
```shell
systemctl daemon-reload
systemctl enable wgui.{path,service}
systemctl start wgui.{path,service}
```
### Mengkonfigurasi Nginx Untuk WireGuard-UI
Jika **Nginx** belum terinstall di server Anda, Anda perlu menginstallnya terlebih dahulu. Anda bisa menginstall Nginx mengunakan **default repositori dari Ubuntu** atau menggunakan [official Nginx repositori untuk Ubuntu](https://nginx.org/en/linux_packages.html#Ubuntu).
Setelah Nginx terinstall, buat **Nginx virtual host server block** untuk WireGuard UI:
```nginx
server {
listen 80;
server_name wgui.example.com;
root /usr/share/nginx;
access_log off;
location /.well-known/acme-challenge/ { allow all; }
location / { return 301 https://$host$request_uri; }
}
server {
listen 443 ssl http2;
server_name wgui.example.com;
access_log off;
ssl_certificate /path/to/your/ssl/cert/fullchain.pem;
ssl_certificate_key /path/to/your/ssl/cert/privkey.pem;
root /usr/share/nginx;
location / {
add_header Cache-Control no-cache;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:5000/;
}
}
```
- Ubah `wgui.example.com` dengan nama (sub)domain Anda.
- Ubah `ssl_certificate` dan `ssl_certificate_key` dengan *SSL certificate* Anda.
Setelah itu, *restart* Nginx menggunakan perintah `sudo systemctl restart nginx`.
**Harap diperhatikan** bahwa konfigurasi Nginx *virtual server block* diatas adalah contoh yang **sangat _basic_**. Jika Anda memerlukan referensi konfigurasi SSL untuk Nginx, Anda bisa menggunakan [Mozilla SSL Configuration Generator](https://ssl-config.mozilla.org/). Jika Anda ingin menggunakan [Let's Encrypt](https://letsencrypt.org/), install `python3-certbot-nginx` dan lakukan lakukan request untuk *SSL certificate* Anda menggunakan perintah `certbot --nginx -d wgui.example.com`.
## Menggunakan WireGuard-UI
Sekarang, setelah semua yang dibutuhkan selesai dikonfigurasi, saatnya untuk **mengkonfigurasi WireGuard menggunakan WireGuard-UI**. Kunjungi (sub)domain WireGuard UI Anda dan login menggunakan username dan password yang sudah Anda konfigurasi sebelumnya di `/etc/wireguard-ui/.env`.
> _**CATATAN:** **Jangan** menekan **"Apply Config"** sebelum Anda selesai mengkonfigurasi setting WireGuard dari WireGuard UI._
Masuk ke halaman **"WireGuard Server"** dan atur konfigurasi WireGuard, contoh:
- **Server Interface Addresses**: `10.10.88.1/24`
- **Listen Port**: `51822`
- **Post Up Script**: `/opt/wireguard-ui/postup.sh`
- **Post Down Script**: `/opt/wireguard-ui/postup.sh`
![WireGuard- UI Server Settings](wg-ui-server-config.png#center)
Kemudian, masuk ke halaman **"Global Settings"** dan pastikan semua konfigurasi sudah benar (terutama **"Endpoint Address"** dan **"Wireguard Config File Path"**).
Setelah itu, cobalah untuk menekan **Apply Config**. Periksa dan pastikan semuanya berjalan dengan baik (pengecekan dapat menggunakan perintah `wg show` atau `ss -ulnt` dari *command-line*).
### Membuat Peer (client)
Membuat *peers* menggunakan WireGuard UI sangat mudah, Anda hanya perlu menekan tombol **"+ New Client"** di sisi kanan atas dan isi informasi yang diperlukan (Minimal Anda hanya perlu mengisi *field* **"Name"**).
Setelah menambahkan *peers* (*clients*), tekan tombol **"Apply Config"** dan coba untuk melakukan koneksi ke WireGuard VPN server dari perangkat Anda. File konfigurasi untuk perangkat Anda dapat didownload dari **WireGuard UI**. Anda juga bisa dengan mudah mengimport konfigurasi untuk perangkat Anda menggunakan fitur *scan* **QR Code**.
![WireGuard UI clients page](wg-ui-clients.png#center)
Apa langkah selanjutnya? Bagaimana dengan [Mengkonfigurasi WireGuard VPN Client]({{< ref "/tutorials/configure-wireguard-vpn-clients/index.id.md" >}})?
## Catatan
- Jika Anda memiliki kesulitan teknis untuk melakukan *setup* VPN server WireGuard sendiri, saya dapat membantu Anda untuk melakukannya dengan imbalan sedikit uang. (_Saya juga menerima **Monero XMR** sebagai **imbalan** jika Anda tidak memiliki mata uang Rupiah_).
- Untuk dapat menghubungi saya, silahkan kunjungi [https://www.ditatompel.com/pages/contact](https://www.ditatompel.com/pages/contact).

View file

@ -1,6 +1,6 @@
---
title: "Installing WireGuard-UI to Manage Your WireGuard VPN Server"
description:
description: "To manage WireGuard peers (client) on a single server easily, you can use WireGuard-UI, a web-based user interface to manage your WireGuard setup written in Go."
# linkTitle:
date: 2023-06-06T04:20:43+07:00
lastmod:
@ -36,7 +36,7 @@ authors:
- ditatompel
---
To manage **WireGuard** *peers* (client) on a single server easily, you can use **WireGuard-UI**, a web-based user interface to manage your WireGuard setup written in Go.
To manage **WireGuard** *peers* (client) on a single server easily, you can use **WireGuard-UI**, a web-based user interface to manage your WireGuard setup written in **Go**.
<!--more-->
---
@ -110,7 +110,7 @@ WGUI_USERNAME=<YOUR_WIREGUARD_UI_USERNAME>
WGUI_PASSWORD=<YOUR_WIREGUARD_UI_PASSWORD>
```
If you want to enable email feature, you need to set up your _SMTP_\*_ environment variable. See [WireGuard UI Environment Variables details](https://github.com/ngoduykhanh/wireguard-ui#environment-variables) for more information.
If you want to enable email feature, you need to set up your `SMTP_*` environment variable. See [WireGuard UI Environment Variables details](https://github.com/ngoduykhanh/wireguard-ui#environment-variables) for more information.
### Finding Server Default Interface
Then, find out which network interface used by your server as its *default route*. You can use `ip route list default` to see that. Example output of my `ip route list default` command:
@ -204,7 +204,7 @@ sudo systemctl enable wireguard-ui-daemon.service
### Auto Restart WireGuard Daemon
Because **WireGuard-UI** only takes care of WireGuard configuration generation. You need another `systemd` to watch for the changes and restart the **WireGuard** service. Create `/etc/systemd/system/wgui.service` and fill with this following example:
Because **WireGuard-UI** only takes care of WireGuard configuration generation, you need another `systemd` to watch for the changes and restart the **WireGuard** service. Create `/etc/systemd/system/wgui.service` and fill with this following example:
```systemd
[Unit]
Description=Restart WireGuard
@ -232,6 +232,7 @@ WantedBy=multi-user.target
Apply `systemd` configurations changes by issuing this following commands:
```shell
systemctl daemon-reload
systemctl enable wgui.{path,service}
systemctl start wgui.{path,service}
```
@ -279,7 +280,7 @@ Now restart your nginx configuration `sudo systemctl restart nginx`.
**Please note** that Nginx server block configuration above is **very basic config**. If you need recommended SSL configuration for Nginx, follow this [Mozilla SSL Configuration Generator](https://ssl-config.mozilla.org/). If you want to use [Let's Encrypt](https://letsencrypt.org/) certificate, install `python3-certbot-nginx` and request your certificate using `certbot --nginx -d wgui.example.com`.
## Using WireGuard-UI
Now afrer configuring all those required services, it's time to **configure our WireGuard config using WireGuard-UI**. Go to your WireGuard-UI (sub)domain and login with username and password you've configured before from `/etc/wireguard-ui/.env`.
Now after configuring all those required services, it's time to **configure our WireGuard config using WireGuard-UI**. Go to your WireGuard-UI (sub)domain and login with username and password you've configured before from `/etc/wireguard-ui/.env`.
> _**Do not** press **"Apply Config"** before you finished configuring your WireGuard setting from WireGuard UI._