first commit
This commit is contained in:
		
							
								
								
									
										241
									
								
								LISEZMOI.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										241
									
								
								LISEZMOI.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,241 @@
 | 
			
		||||
# Wg Gen Web
 | 
			
		||||
 | 
			
		||||
<h1><img src="./web-ui.png" ></h1>
 | 
			
		||||
 | 
			
		||||
Générateur de configuration simple basé sur le Web pour [WireGuard](https://wireguard.com).
 | 
			
		||||
 | 
			
		||||
## 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](https://github.com/inotify-tools/inotify-tools/wiki) 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
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
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](https://www.freedesktop.org/software/systemd/man/systemd.path.html)
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
# /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**
 | 
			
		||||
		Reference in New Issue
	
	Block a user