mirror of
https://github.com/deunix-educ/Fail2banMqttActionBanishment.git
synced 2026-08-24 03:11:58 +02:00
82 lines
3.6 KiB
Plaintext
82 lines
3.6 KiB
Plaintext
# Reverse proxy nginx devant le tableau de bord Django (ASGI/Daphne,
|
|
# 127.0.0.1:8050) — WebSocket (Django Channels) inclus. PAS déployé
|
|
# automatiquement par install.sh : à copier et adapter manuellement.
|
|
#
|
|
# Pas de location /static/ dédiée ici : l'émetteur sert ses statiques
|
|
# lui-même via WhiteNoise (emitter/config/settings/production.py,
|
|
# CompressedManifestStaticFilesStorage), donc tout — /static/ compris —
|
|
# passe par le proxy_pass général vers Daphne. Ça évite une dépendance aux
|
|
# droits Unix sur staticfiles/ pour l'utilisateur nginx (ex. un $HOME en
|
|
# 700 empêche www-data de traverser jusqu'au dossier, même si staticfiles/
|
|
# lui-même est world-readable — vécu en déployant banishing.miraceti.net).
|
|
#
|
|
# Marche à suivre :
|
|
# 1. sudo apt-get install nginx
|
|
# 2. sudo certbot certonly --nginx -d __DASHBOARD_DOMAIN__ (ou webroot,
|
|
# selon la méthode déjà utilisée pour les autres domaines de ce VPS)
|
|
# 3. sed "s#__DASHBOARD_DOMAIN__#dashboard.example.org#g" \
|
|
# generic/nginx/fail2ban-emitter.example.conf \
|
|
# | sudo tee /etc/nginx/sites-available/fail2ban-emitter.conf
|
|
# 4. sudo ln -s /etc/nginx/sites-available/fail2ban-emitter.conf /etc/nginx/sites-enabled/
|
|
# 5. sudo nginx -t && sudo systemctl reload nginx
|
|
# 6. Dans .env : DJANGO_ALLOWED_HOSTS=__DASHBOARD_DOMAIN__,
|
|
# DJANGO_CSRF_TRUSTED_ORIGINS=https://__DASHBOARD_DOMAIN__,
|
|
# DJANGO_SECURE_SSL=true, puis redémarrer fail2ban-emitter-web.service
|
|
#
|
|
# Le renouvellement certbot recharge nginx automatiquement (paquet Debian,
|
|
# renewal-hooks intégré) — pas besoin d'un deploy-hook dédié comme pour
|
|
# mosquitto (nginx peut lire /etc/letsencrypt directement, contrairement à
|
|
# un utilisateur système non-root sans accès en lecture).
|
|
|
|
server {
|
|
listen 80;
|
|
listen [::]:80;
|
|
server_name __DASHBOARD_DOMAIN__;
|
|
|
|
location /.well-known/acme-challenge/ {
|
|
root /var/www/html;
|
|
}
|
|
|
|
location / {
|
|
return 301 https://$host$request_uri;
|
|
}
|
|
}
|
|
|
|
server {
|
|
# Forme choisie automatiquement par install.sh (deploy_nginx) selon la
|
|
# version nginx détectée sur CE noeud : la directive séparée "http2 on;"
|
|
# n'existe qu'à partir de nginx 1.25.1 ("unknown directive http2" sur
|
|
# une version plus ancienne — vécu en conditions réelles) ; avant cette
|
|
# version, c'est l'inverse : la forme séparée n'existe pas encore, seul
|
|
# "listen ... http2" est valide. Ne jamais coder l'une des deux en dur
|
|
# ci-dessous (marqueur substitué par install.sh — ne pas le répéter
|
|
# ailleurs dans ce fichier, y compris en commentaire : la substitution
|
|
# est un remplacement global, toute autre occurrence littérale serait
|
|
# aussi affectée).
|
|
__HTTP2_LISTEN_BLOCK__
|
|
server_name __DASHBOARD_DOMAIN__;
|
|
|
|
ssl_certificate /etc/letsencrypt/live/__DASHBOARD_DOMAIN__/fullchain.pem;
|
|
ssl_certificate_key /etc/letsencrypt/live/__DASHBOARD_DOMAIN__/privkey.pem;
|
|
|
|
location /ws/ {
|
|
proxy_pass http://127.0.0.1:8050;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
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_read_timeout 3600s;
|
|
}
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8050;
|
|
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;
|
|
}
|
|
}
|