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