wg-webui-fr/LISEZMOI.md
2024-09-20 10:55:18 +02:00

5.3 KiB

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.rnmkcy.eu/yann/wg-webui-fr

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/

Environnement

Créer un fichier 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="mx.exemple.com"
SMTP_PORT=587
SMTP_USERNAME="Utilisateur@exemple.com"
SMTP_PASSWORD="Mot de passe"
SMTP_FROM="Utilisateur@exemple.com"

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

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

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 sur localhost:9500

Activer le service

sudo systemctl enable wgweb.service

Mise è jour wg-webui-fr

Exécuter les commandes suivantes

echo "Arrêt wgweb.service"
sudo systemctl stop wgweb.service
echo "Sauvegarde"
sudo cp /opt/appwg/.env _.env
echo "Supprimer appwg"
sudo rm -r /opt/appwg
echo "Construire wg-ui main.go"
cd $HOME/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/
echo "Restaurer environnement"
sudo cp $HOME/_.env /opt/appwg/.env
echo "Démarrer le service"
sudo systemctl start wgweb.service
echo "FIN reconstruction"

Wireguard ui est accessible sur localhost:8090

Appliquer automatiquement les changements à WireGuard

Utilisation de systemd (DEFAUT)

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 défini le paramètre WG_INTERFACE_NAME du fichier environnement.

Modifier le fichier existant server.json pour être identique au paramétrage de wireguard wg0.conf