Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

Wireguard VPN

De EC_Wiki
Version datée du 29 octobre 2025 à 18:48 par Eugene (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Guide complet clé-en-main pour avoir WireTunnel fonctionnel sur Debian/Ubuntu avec venv Python propre, Gunicorn et Nginx, sans conflitsni erreurs.

1️⃣ Arrêter et nettoyer l’ancien service

sudo systemctl stop wiretunnel
sudo systemctl disable wiretunnel
sudo killall gunicorn

Supprime ou renomme l’ancien venv :

cd /var/www/wiretunnel
mv venv venv_old

2️⃣ Créer un venv Python propre

python3.11 -m venv venv
source venv/bin/activate
pip install --upgrade pip setuptools wheel

3️⃣ Installer les dépendances Python nécessaires

Si tu as un requirements.txt fiable :

pip install -r requirements.txt

Sinon, installe directement les paquets essentiels :

pip install flask gunicorn python-dotenv qrcode pillow requests

4️⃣ Vérifier que ton app.py est correct

Assure-toi que l’ordre des blueprints et routes est comme ceci :

from flask import Flask, Blueprint, render_template, request, redirect, url_for, session

# Création du blueprint
wireguard_bp = Blueprint("wiretunnel", __name__,
                         template_folder="templates",
                         static_folder="static",
                         static_url_path="/static")

# Toutes les routes ici
@wireguard_bp.route("/")
def index():
    return redirect(url_for("wiretunnel.login"))

@wireguard_bp.route("/login", methods=["GET", "POST"])
def login():
   return "Page login"

# Enregistrer le blueprint seulement à la fin
 app = Flask(__name__,
           template_folder="templates",
           static_folder="static")
 app.secret_key = "change_this_secret"
 app.register_blueprint(wireguard_bp)

 if __name__ == "__main__":
   app.run(host="127.0.0.1", port=5051)

Tout @wiretunnel_bp.route doit être défini avant app.register_blueprint.

5️⃣ Tester Gunicorn manuellement

cd /var/www/wiretunnel
source venv/bin/activate
gunicorn app:app --bind 127.0.0.1:5051

Vérifie avec :

curl http://127.0.0.1:5051/wiretunnel/

Tu devrais voir soit la redirection vers /login, soit la page “Interface WireTunnel OK”.

6️⃣ Créer un service systemd propre

Crée ou modifie /etc/systemd/system/wiretunnel.service :

sudo nano /etc/systemd/system/wiretunnel.service
[Unit]
Description=WireTunnel Web Interface
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/wiretunnel
Environment="PATH=/var/www/wiretunnel/venv/bin"
ExecStart=/var/www/wiretunnel/venv/bin/gunicorn app:app --bind 127.0.0.1:5051 --workers 3 --timeout 120
Restart=on-failure

[Install]
WantedBy=multi-user.target

7️⃣ Activer et démarrer le service

sudo systemctl daemon-reload
sudo systemctl enable wiretunnel
sudo systemctl start wiretunnel
sudo systemctl status wiretunnel --no-pager -l

8️⃣ Configurer Nginx pour le reverse proxy

Dans /etc/nginx/sites-available/wiretunnel.conf :

server {
   listen 443 ssl;
   server_name 192.168.30.11;

   ssl_certificate /etc/ssl/certs/euro-selfsigned.crt;
   ssl_certificate_key /etc/ssl/private/euro-selfsigned.key;

   location /wiretunnel/ {
       proxy_pass http://127.0.0.1:5051/wiretunnel/;
       proxy_http_version 1.1;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       proxy_redirect off;
       proxy_cookie_path / "/wiretunnel/";
       proxy_read_timeout 900s;
       proxy_send_timeout 900s;
   }
}

Test et recharge Nginx :

sudo nginx -t
sudo systemctl reload nginx

9️⃣ Vérification finale

Test Gunicorn :

curl http://127.0.0.1:5051/wiretunnel/

Test Nginx :

https://192.168.30.11/wiretunnel/

On devrait voir la redirection vers /login ou la page WireTunnel.


  1. 🧱 WireGuard : fichier wg0.conf déplacé
    • Contexte :** backend Python plante sur `/wireguard/`
    • Cause :** fichier `wg0.conf` placé dans `/etc/wireguard/peers/`
    • Solution :** créer un symlink

```bash sudo ln -s /etc/wireguard/peers/wg0.conf /etc/wireguard/wg0.conf