[Tuto] Installer SWAG en Docker ( Reverse Proxy )

@MilesTEG
Bon apparemment la liste city inclue la liste country donc pas besoin de la country. On peux régler la fréquence de mise à jour dans maxmind.conf donc je ne voie plus d'avantage, a part que pour moi si je veux que ça fonctionne il me faut geoipupdate
Quand je vois les issues du mod sur github je suis pas le seul à avoir "tar: short read" sans geoipupdate, ça rassure...😁
 
  • Haha
Réactions: MilesTEG
@MilesTEG
Bon apparemment la liste city inclue la liste country donc pas besoin de la country. On peux régler la fréquence de mise à jour dans maxmind.conf donc je ne voie plus d'avantage, a part que pour moi si je veux que ça fonctionne il me faut geoipupdate
Quand je vois les issues du mod sur github je suis pas le seul à avoir "tar: short read" sans geoipupdate, ça rassure...😁
Oué, les images et mods linuxserver c’est la plaie quand ça marche pas , niveau support c’est vraiment pas ça…
 
Je suis pas trop à l'aise avec les scripts mais c'est celui qui s'occupe d'extraire la db. Et je comprend pas comment il peut renseigner le edition_id=${EDITION_ID avec juste la clé? car a aucun moment on renseigne le ID du compte si c'est bien ça qu'il renseigne.
Pourquoi le container geoipupdate a besoin de l'ID du compte maxmind pour recuperer la db et pas le mod de swag, elle est forte celle la!

Code:
#!/bin/sh

. /etc/libmaxminddb.cron.conf

set -e

[ -z "$MAXMINDDB_FILES"       ] && MAXMINDDB_FILES="GeoLite2-City.mmdb"
[ -z "$MAXMINDDB_URL"         ] && MAXMINDDB_URL="https://download.maxmind.com/app/geoip_download"
[ -z "$MAXMINDDB_LIBDIR"      ] && MAXMINDDB_LIBDIR="/var/lib/libmaxminddb"
[ -z "$MAXMINDDB_LICENSE_KEY" ] && { echo "No MaxMind license key found; exiting. Please enter your license key into /etc/libmaxminddb.cron.conf"; exit 1; }

clean_up() {
    [ -n "$TMPDIR" ] && rm -rf "$TMPDIR"
}
trap clean_up EXIT TERM INT QUIT

TMPDIR="$(mktemp -d)"
for filename in $MAXMINDDB_FILES; do
    EDITION_ID=$(echo "${filename}" | sed 's/\.mmdb$//')
    curl --silent "${MAXMINDDB_URL}?edition_id=${EDITION_ID}&license_key=${MAXMINDDB_LICENSE_KEY}&suffix=tar.gz" -o "$TMPDIR/${filename}.tar.gz"
    tar xf "$TMPDIR/${filename}.tar.gz" -C "$TMPDIR" --strip-components=1
    mv "$TMPDIR/$filename" "$MAXMINDDB_LIBDIR"
done
exit 0
 
Dernière édition:
  • Wow
Réactions: MilesTEG
Je suis pas trop à l'aise avec les scripts mais c'est celui qui s'occupe d'extraire la db. Et je comprend pas comment il peut renseigner le edition_id=${EDITION_ID avec juste la clé? car a aucun moment on renseigne le ID du compte si c'est bien ça qu'il renseigne.
Pourquoi le container geoipupdate a besoin de l'ID du compte maxmind pour recuperer la db et pas le mod de swag, elle est forte celle la!
Aucune idée…
La de ce que je vois , c’est que swag ne va pas prendre en compte toutes les bdd mais juste la geoip city, non ?
 
Hello par ici,
Je m'arrache les cheveux sur SWAG pour le faire fonctionner sur le NUC dans une VM Débian avec Docker.
J'ai tenté tout ce que je pouvais : from scratch, en récupérant les données du SWAG fonctionnel sur le Syno (docker aussi), en partant de 0 puis en copiant les quelques fichiers de conf...
Dans tous les cas, je teste sur un domaine test qui pointe vers Calibre-Web qui ne nécessite pas à priori de configuration particulière...
L'instance Calibre-Web fonctionne bien depuis l'IP, ou via le SWAG du Syno.

Mais dès que je passe sur celui du NUC, patatras... Erreur, connexion refusée.
J'aurais besoin d'aide pour trouver ce qui ne va pas...
PS : j'ai bien fait une réécriture DNS de calibre-test.mon-ndd.ovh dans AdGuardHome, et j'ai aussi créé une redirection du port 443 vers l'IP de la VM Docker-Swag.
J'ai aussi autorisé dans le parefeu du routeur la connexion sur ce port 443 à destination de cette IP.

Mais que je tente depuis le LAN ou depuis la connexion 5G de mon smartphone, même topo : erreur, connexion refusée
1709423719791.png

Bref, je tourne en bourique, car je ne comprends pas ce qui coince...

Quelqu'un pourrait-il m'aider ?



PS : je me suis dit que je pourrais tenter Nginx Proxy Manager, mais la création du certificat ne fonctionne pas pour OVH avec DNS Challenge... il y a une erreur de commande certbot...
 
Hello @MilesTEG,

As tu tester une URL autre que calibre-web comme 'cequetuveux.mon-ndd.ovh' pour voir si au moins tu arrive sur le site par défaut de nginx ?
Si tu as un connexion refused dans ce cas là aussi, c'est que ca bloque en amont de Nginx (Firewall, box...), sinon c'est un problème de config au niveau de Nginx.

PS : J'ai installé Nginx dans un container LXC Debian12 avec une validation DNS de certificat OVH avec acme.sh sans remcontrer de probleme.
 
PS : J'ai installé Nginx dans un container LXC Debian12 avec une validation DNS de certificat OVH avec acme.sh sans remcontrer de probleme.
Je veux bien ta méthode détaillée s’il te plaît 😇
(Un tuto peut être ? 😉)

As tu tester une URL autre que calibre-web comme 'cequetuveux.mon-ndd.ovh' pour voir si au moins tu arrive sur le site par défaut de nginx ?
Si tu as un connexion refused dans ce cas là aussi, c'est que ca bloque en amont de Nginx (Firewall, box...), sinon c'est un problème de config au niveau de Nginx.
Oui j’avais essayé mais quoique je fasse j’avais cette erreur. Je ré-essayerais pour être sûr .
Mais je n’ai pas de pare-feu sur le proxmox… juste sur le routeur .
À la limite si ça bloquait que depuis internet c’est que ce serait le routeur qui bloque mais même quand je change la réécriture dns de mon domaine *.mon-ndd.ovh pour pointer vers l’IP de swag nuc , ça ne fonctionne pas et j’ai aussi cette erreur.
 
@Bambusa29
Alors, test depuis la 5G :
  • Redirection de port dans le routeur :
    1709453963435.png
  • Parefeu du routeur :
    1709453667355.png
    On voit qu'il y a eu des connexions :) donc ça fonctionne :D
Mais l'accès à un domaine non configuré dans SWAG donne ceci :
1709453472258.jpeg

Je n'ai même pas la page par défaut de nginx pour un domaine inconnu pour lui...
Bref, je sèche.
Où puis-je regarder pour ce qui bloque ?
 
Je vois un 41 en résultat pour ta règle de pare feu sur ton routeur, donc a priori c'est que cela passe.
Dans les logs de Swag, tu ne vois rien de particulier ? Pas de problème de certificat dans les logs ?
 
@Bambusa29
Je n'ai que deux fichiers log : access.log et error.log
Le dernier est rempli par ceci (et rien d'autre) :

Code:
2024/03/03 10:00:58 [error] 626#626: [lua] crowdsec.lua:57: init(): error loading captcha plugin: no recaptcha site key provided, can't use recaptcha
2024/03/03 10:00:58 [alert] 626#626: [lua] crowdsec_nginx.conf:4):8: [Crowdsec] Initialisation done


Par contre je pense que j'ai un problème de certificat.
Le log de letsencrypt dit ceci :

Code:
<------------------------------------------------->
<------------------------------------------------->
cronjob running on Sun Mar  3 02:08:00 CET 2024
Running certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/mon_ndd.ovh.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Renewal configuration file /etc/letsencrypt/renewal/mon_ndd.ovh.conf is broken.
The error was: expected /etc/letsencrypt/live/mon_ndd.ovh/cert.pem to be a symlink
Skipping.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
No renewals were attempted.
Additionally, the following renewal configurations were invalid:
  /etc/letsencrypt/renewal/mon_ndd.ovh.conf (parsefail)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0 renew failure(s), 1 parse failure(s)
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.
 
@Bambusa29
J'ai fini par trouver ce qui n'allait pas...
Purée... un truc tout con...
J'ai conservé une bonne partie du docker-compose de mon install du Syno (en macvlan), or pour le NUC j'ai choisi de faire un network bridge.
et bien sûr je n'ai pas pensé à mettre les ports dans le yml :rolleyes::ROFLMAO:

une fois fait, et bien, boom tout fonctionne comme il faut !
Punaise, tout ce temps perdu pour une connerie d'oubli...

Bon bref, maintenant que tout fonctionne, il me faut trouver une solution pour que le fail2ban de nginx et le crowdsec puisse parser les logs des applications qui ont un parser...

En attendant, mon reverse proxy n'est plus dépendant du Syno, car ça me faisait de plus en plus chier... un reboot du NAS = plus de résolution de ndd...
Un plantage du lien vers le routeur = mon script réactive les interfaces désactivées, et boom plus de résolution du ndd à cause du macvlan et des réseaux liés à l'interface soi-disant KO.

Bref, maintenant, le NAS ne sera plus mon lien faible ^^
 
  • J'aime
Réactions: Bambusa29