WireGuard UI pour la gestion des configurations clients et serveur
Go to file
yako m 66c4bf5af4 binaire appwg 2024-04-10 14:55:27 +02:00
api first commit 2023-12-03 15:40:29 +01:00
appwg binaire appwg 2024-04-10 14:55:27 +02:00
core first commit 2023-12-03 15:40:29 +01:00
model first commit 2023-12-03 15:40:29 +01:00
storage first commit 2023-12-03 15:40:29 +01:00
template modifications 2023-12-05 18:33:05 +01:00
ui Clients.vue et moment.js 2023-12-21 17:11:15 +01:00
util first commit 2023-12-03 15:40:29 +01:00
.env first commit 2023-12-03 15:40:29 +01:00
Dockerfile first commit 2023-12-03 15:40:29 +01:00
LICENSE-WTFPL first commit 2023-12-03 15:40:29 +01:00
README.md Clients.vue et moment.js 2023-12-21 17:11:15 +01:00
go.mod first commit 2023-12-03 15:40:29 +01:00
main.go first commit 2023-12-03 15:40:29 +01:00
web-ui-a.png modifications 2023-12-03 16:55:04 +01:00
web-ui.png modifications 2023-12-03 16:35:52 +01:00

README.md

Wg Gen Web

Générateur de configuration simple basé sur le Web pour WireGuard.

Why another one ?

Toutes les implémentations de WireGuard UI essaient de gérer le service en appliquant des configurations et en créant des règles de réseau.

Cette implémentation ne fait que générer de la configuration et c'est à vous de créer des règles réseau et d'appliquer la configuration à WireGuard.

Par exemple en surveillant le répertoire généré avec inotifywait ou avec systemd.path.

Le but est d'exécuter Wg Gen Web dans un espace et WireGuard sur le système hôte.

Caractéristiques

  • Libre-service et basé sur le web
  • QR-Code pour une configuration pratique du client mobile
  • Support optionnel multi-utilisateurs derrière un proxy d'authentification
  • Prise en charge de l'authentification simple
  • Zéro dépendance externe - juste un binaire unique utilisant le module noyau wireguard
  • Déploiement de binaires et de conteneurs

Vous devez avoir WireGuard installé sur la machine qui exécute wg-ui.

Wg ui

Installation de Go (Debian)

Installer la dernière version de Go à partir de (https://golang.org/dl/)

cd ~
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
echo "export PATH=$PATH:/usr/local/go/bin"  >> ~/.bashrc
source ~/.bashrc

Installer la version LTS de nodejs pour le frontend

# debian
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo bash -
sudo apt update
sudo apt install nodejs

Cloner wg-webui-fr

git clone https://gitea.xoyize.xyz/yako/wg-webui-fr

Utilisation systemd

Créer le service /etc/systemd/system/wgweb.service

[Unit]
Description=Wireguard web
After=network.target

[Service]

Type=simple

Restart=on-failure
RestartSec=10

WorkingDirectory=/opt/appwg
ExecStart=/opt/appwg/wg-ui

[Install]
WantedBy=multi-user.target

Recharger

sudo systemctl daemon-reload

Construire wg-webui-fr

Exécuter les commandes suivantes

cd ~/wg-webui-fr/
go mod tidy
go build -o wg-ui main.go
cd ui
export NODE_OPTIONS=--openssl-legacy-provider
export VUE_APP_API_BASE_URL=http://localhost:8080/api/v1.0
npm install
npm run build
sudo mkdir -p /opt/appwg/ui
sudo cp ../wg-ui /opt/appwg
sudo cp -r dist /opt/appwg/ui/

Créer un fihcier environnement /opt/appwg/.env

SERVER=127.0.0.1
PORT=8090
GIN_MODE=debug

WG_CONF_DIR=/opt/appwg/wireguard
WG_INTERFACE_NAME=wg0.conf

SMTP_HOST=127.0.0.1
SMTP_PORT=587
SMTP_USERNAME=""
SMTP_PASSWORD=""
SMTP_FROM="wg-web-ui@wg-web-ui.xyz"

ATTENTION!!! il faut au minimun un fichier wg0.conf dans /opt/appwg/wireguard
Avec une installation de l'application wireguard, WG_CONF_DIR=/etc/wireguard

Activer et lancer le service

sudo systemctl enable wgweb.service --now

Wireguard ui est accessible sur localhost:8090

Pour un accès via ssh

ssh -L 9500:localhost:8090 utilisateur@adresse_serveur

Accès navigateur

Ensuite ouvrir un navigateur localement su localhost:9500

Activer le service

sudo systemctl enable wgweb.service

Mise è jour wg-webui-fr

Exécuter les commandes suivantes

sudo systemctl stop wgweb.service
cd ~/wg-webui-fr/
go build -o wg-ui main.go
cd ui
export NODE_OPTIONS=--openssl-legacy-provider
export VUE_APP_API_BASE_URL=http://localhost:8080/api/v1.0
npm install
npm run build
sudo cp ~/wg-webui-fr/wg-ui /opt/appwg
sudo cp -r ~/wg-webui-fr/ui/dist /opt/appwg/ui/
sudo systemctl start wgweb.service

Wireguard ui est accessible sur localhost:8080

Appliquer automatiquement les changements à WireGuard

Utilisation de systemd

Utilisation de systemd.path pour surveiller les changements de répertoire voir systemd doc

# /etc/systemd/system/wg-gen-web.path
[Unit]
Description=Watch /etc/wireguard for changes

[Path]
PathModified=/etc/wireguard

[Install]
WantedBy=multi-user.target

Ce .path activera le fichier unit avec le même nom

# /etc/systemd/system/wg-gen-web.service
[Unit]
Description=Restart WireGuard
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart wg-quick@wg0.service

[Install]
WantedBy=multi-user.target

Ce qui va redémarrer le service WireGuard

Activer et lancer

sudo systemctl enable wg-gen-web.path --now

Utiliser inotifywait

Pour tout autre système d'initialisation, créez un daemon exécutant ce script

#!/bin/sh
while inotifywait -e modify -e create /etc/wireguard; do
  wg-quick down wg0
  wg-quick up wg0
done

Comment utiliser avec une configuration WireGuard existante

Après le premier lancement, Wg Gen Web créera le fichier server.json dans le répertoire data avec toutes les informations sur le serveur.

N'hésitez pas à modifier ce fichier afin d'utiliser vos clés existantes.