Wireguard VPN
De EC_Wiki
Autres actions
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.
- 🧱 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