[Tuto] Installer SWAG en Docker ( Reverse Proxy )

Non il faut renseigner des serveurs DNS, par exemple :
1.1.1.1 Cloudflair
8.8.8.8 Google
94.140.14.14 Adguard
Les serveurs DNS servent à identifier l'adresse ip derrière le nom de domaine, ce sont des annuaires tu renseignes ceux de ton choix
Merci. Donc si je comprends "bien" comme un néophyte .... Si je redirige dans le Cpanel de l'hébergeur les DNS ne "mondomaine.com" vers ex: 8.8.8.8 et 8.8.4.4... L'adresse dans le cpanel va pointer vers le pot commun et "croiser" son homologue qui pointe vers mon Swag avec les infos du cpanel.ini ? et Bingo la chaine est faite ?

Edit ;-(

chrome_hXIOwiAYKd (Phone).png
 
Dernière édition:
ton conteneur est il bien configuré pour pouvoir accéder à l'extérieur et donc internet ?
Oui... Le serveur tourne. News entre temps, grâce à l'aide d'un ami... SWAG est visible a travers mondomaine.com en redirigeant l'adresse public. Quid quand l'adresse changera ? Nouveau soucis... L'adresse mondomaine.com est en HTTPS et lors de la redirection vers l'adresse public, ça passe en HTTP .... Dans les options SSL certificate de portainer, impossible de forcer le https sans mettre des fichiers...
 
Bonjour,
J'ai suivi ce tuto pour tester swag et j'ai deux questions.
J'ai configurer vaultwarden, j'ai du modifier le fichier config/fail2ban/filter.d/vaultwarden.conf comme ceci pour avoir le blocage :

[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$
ignoreregex =

J'ai bien mon mon proxy en https://vaultwarden.[...]
J'ai loupé quelque chose?

Autre chose avec le blocage géographique, peut on bloquer avec fail2ban les ip non FR et ajouter un fichier de log pour voir les blocages?
La j'ai bien une non accecibilité des ip étrangère qui fonctionne mais dans les log de fail2ban ou nginx je ne vois pas ces ip quand elle essaient de se connecter. Et sur le dashboard de swag les prisons de fail2ban indique aucun blocage.
A quel niveau se fait l'interdiction pour que fail2ban ou nginx ne les voient pas?
 
@Cruchot
C'est étonnant que tu aies du changer la règles F2B pour Vaultwarden...
J'ai pris le conteneur des fichiers directement sur le GH de Vaultwardenn, et j'ai donc ceci (à priori comme toi) :
Code:
## /volume1/docker/fail2ban/filter.d/vaultwarden-auth.local
## See : https://github.com/dani-garcia/vaultwarden/wiki/Fail2Ban-Setup#synology-dsm

[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$
ignoreregex =

et :
Code:
## /volume1/docker/fail2ban/filter.d/vaultwarden-admin-auth.local
## See : https://github.com/dani-garcia/vaultwarden/wiki/Fail2Ban-Setup#synology-dsm

[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Invalid admin token\. IP: <ADDR>.*$
ignoreregex =

Autre chose avec le blocage géographique, peut on bloquer avec fail2ban les ip non FR et ajouter un fichier de log pour voir les blocages?
La j'ai bien une non accecibilité des ip étrangère qui fonctionne mais dans les log de fail2ban ou nginx je ne vois pas ces ip quand elle essaient de se connecter. Et sur le dashboard de swag les prisons de fail2ban indique aucun blocage.
A quel niveau se fait l'interdiction pour que fail2ban ou nginx ne les voient pas?
Pour bloquer par IP, c'est depuis SWAG que tu pourras le faire, avec le MOD de géoblocking :
Sinon c'est depuis le pare-feu du routeur.
 
@MilesTEG

Ok merci pour tes précisions, je vais creuser ça avec swag. J'utilise maxmind sur mon npm actuel en ayant compilé les modules.
 
Dernière édition:
Autre chose avec le blocage géographique, peut on bloquer avec fail2ban les ip non FR et ajouter un fichier de log pour voir les blocages?
La j'ai bien une non accecibilité des ip étrangère qui fonctionne mais dans les log de fail2ban ou nginx je ne vois pas ces ip quand elle essaient de se connecter. Et sur le dashboard de swag les prisons de fail2ban indique aucun blocage.
A quel niveau se fait l'interdiction pour que fail2ban ou nginx ne les voient pas?

Le module dpip de Swag est indépendant de fail2ban; il retourne un '404' au niveau de Nginx dans le cas ou l'IP n'est pas dans la 'whitelist' définit dans son fichier de config.
Tu inclue son fichier de config soit globalement à la config de Nginx (/config/nginx.conf), soit localement au niveau de chaque proxy (dans /config/sites-avalaible).
 
j'ai testé en ajoutant le module swag-maxmind , le container est ok mais en ajoutant include /config/nginx/maxmind.conf; à /config/nginx/nginx.conf quand je le redémarre j'ai cette erreur dans les logs:

nginx: [emerg] MMDB_open("/config/geoip2db/GeoLite2-City.mmdb") failed - Error opening the specified MaxMind DB file in /config/nginx/maxmind.conf:1

Le mod ne télécharge pas GeoLite2-City.mmdb dans /config/geoip2db un bug?
 
De mémoire il faut ajouter une variable d’environnement avec la licence (gratuite) maxmind.

Suis bien les points listés ici : https://github.com/linuxserver/dock...ile#maxmind-docker-mod-for-nginx-based-images
J’utilise un fichier contenant les lignes à placer dans chaque fichier .conf des proxy-confs ainsi je ne mets que le include dans ces fichiers de configuration.

Et c’est dans le fichier maxmind.conf que tu spécifies les pays à bannir et ceux à autoriser.
Perso je n’utilise que la liste des autorisés : FR 😄
 
J'ai bien suivi les indications de https://github.com/linuxserver/dock...ile#maxmind-docker-mod-for-nginx-based-images.
Je suis étonné qu'il n'y ai besoin que de MAXMINDDB_LICENSE_KEY=<license-key> dans le docker-compose.yml et pas du login du compte.
On est bien d'accord que je mets la clé sans les <>.
Ce que j'ai fait c'est que j'ai récupéré les fichiers de ma config npm ou j'ai aussi la basse liste MAXMIND en suivant ce tuto https://domopi.eu/ajouter-la-geoip-a-nginx-proxy-manager/. et la ça fonctionne mais ça risque de poser problème pour la maj.
Je passe qu'il doit y avoir un problème lors de la récupération de MAXMIND avec mon container swag.
Peut on utiliser la même licence-key pour deux container? c'est peut être ça aussi le problème.
Je fais pareil que toi je n'autorise que le FR (y)
 
@Cruchot
Oui c'est sans les <> qu'il faut mettre la clé.

Pour le fait d'utiliser la même clé pour deux machines différentes, je ne suis pas sûr que ça fonctionne bien, surtout si elles font les appels en même temps.
Crée en un seconde. Ou via un autre compte.
 
@MilesTEG
J'ai testé de supprimer la clé, je l'ai recréé, je l'utilise que sur une machine et ça ne change rien, donc je pense vraiment à un bug du module swag-maxmind.
Quand tu regarde la notice de mise à jour Geoip sur le site de maxmind, il faut plus d'info que juste la clé:

# GeoIP.conf file - used by geoipupdate program to update databases
# from http://www.maxmind.com
AccountID YOUR_ACCOUNT_ID_HERE
LicenseKey YOUR_LICENSE_KEY_HERE
EditionIDs YOUR_EDITION_IDS_HERE

Ça fonctionne chez toi avec juste la clé?

Ci dessous les logs de swag au demarrage:

Applying the maxmind mod...
Downloading GeoIP2 City database.
tar: short read
Applied the maxmind mod
[custom-init] No custom files found, skipping...
[ls.io-init] done.
nginx: [emerg] MMDB_open("/config/geoip2db/GeoLite2-City.mmdb") failed - Error opening the specified MaxMind DB file in /config/nginx/maxmind.conf:1

Server ready
nginx: [emerg] MMDB_open("/config/geoip2db/GeoLite2-City.mmdb") failed - Error opening the specified MaxMind DB file in /config/nginx/maxmind.conf:1
nginx: [emerg] MMDB_open("/config/geoip2db/GeoLite2-City.mmdb") failed - Error opening the specified MaxMind DB file in /config/nginx/maxmind.conf:1
nginx: [emerg] MMDB_open("/config/geoip2db/GeoLite2-City.mmdb") failed - Error opening the specified MaxMind DB file in /config/nginx/maxmind.conf:1
 
Dernière édition:
Moi j'ai ça comme log :
Code:
[mod-init] Running Docker Modification Logic
[mod-init] Adding linuxserver/mods:swag-auto-reload to container
[mod-init] linuxserver/mods:swag-auto-reload at sha256:9dbae5d11b0dab3c5825a700ea1933a606a81df6312186da0f167e6ed8b6039e has been previously applied skipping
[mod-init] Adding linuxserver/mods:swag-dashboard to container
[mod-init] linuxserver/mods:swag-dashboard at sha256:594c67a6b598c080f019ef64b7978d4408e451f88530293646e395d8324460a7 has been previously applied skipping
[mod-init] Adding linuxserver/mods:swag-maxmind to container
[mod-init] linuxserver/mods:swag-maxmind at sha256:bb158926d3ef7bc99993ba17f735a21b4826e1b72a89069f33a94358a2730b71 has been previously applied skipping
[mod-init] Adding themepark-dev/theme.park:swag to container
[mod-init] themepark-dev/theme.park:swag at sha256:f4d005f7c8e341fedf2bc3ed6b43d2d3781f874b42399bd1cdc9608393808c57 has been previously applied skipping
[mod-init] Adding linuxserver/mods:swag-crowdsec to container
[mod-init] linuxserver/mods:swag-crowdsec at sha256:2e9a619ae4636f656bed3d3335407dbe75b0182bd13b4cf2e9f30d737d45c5f1 has been previously applied skipping
[mod-init] Adding linuxserver/mods:universal-package-install to container
[mod-init] linuxserver/mods:universal-package-install at sha256:179666823e425c84f903183aa0b76eb4fe6ce386fdeb55ca85b56b7791669140 has been previously applied skipping
[migrations] started
[migrations] 01-nginx-site-confs-default: skipped
[migrations] done
usermod: no changes
───────────────────────────────────────

      ██╗     ███████╗██╗ ██████╗
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝

   Brought to you by linuxserver.io
───────────────────────────────────────

To support the app dev(s) visit:
Certbot: https://supporters.eff.org/donate/support-work-on-certbot

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    1000
User GID:    65538
───────────────────────────────────────

using keys found in /config/keys
Variables set:
PUID=1000
PGID=65538
TZ=Europe/Paris
URL=srv.ndd.tld
SUBDOMAINS=wildcard
EXTRA_DOMAINS=
ONLY_SUBDOMAINS=false
VALIDATION=dns
CERTPROVIDER=
DNSPLUGIN=ovh
EMAIL=xxxxxx@mail.com
STAGING=false

Using Let's Encrypt as the cert provider
SUBDOMAINS entered, processing
Wildcard cert for srv.ndd.tld will be requested
E-mail address entered: xxxxxx@mail.com
dns validation via ovh plugin is selected
Certificate exists; parameters unchanged; starting nginx
The cert does not expire within the next day. Letting the cron script handle the renewal attempts overnight (2:08am).
**** Configuring CrowdSec nginx Bouncer ****
**** Adding ssmtp to OS package install list ****
**** Applying the SWAG dashboard mod... ****
libmaxminddb
**** libmaxminddb already installed, skipping ****
**** goaccess already installed, skipping ****
**** swag-auto-reload deps already installed, skipping ****
**** libmaxminddb already installed, skipping ****
**** Applied the SWAG dashboard mod ****
**** Successfully configured CrowdSec nginx Bouncer v1.0.7 ****
[mod-init] **** Installing all mod packages ****
fetch http://dl-cdn.alpinelinux.org/alpine/v3.19/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.19/community/x86_64/APKINDEX.tar.gz
OK: 212 MiB in 238 packages
Applying the maxmind mod...
Applied the maxmind mod
-------------------------
|  SWAG theme.park Mod  |
-------------------------
Variables set:
'TP_BRANCH'=

No branch set, defaulting to live
[custom-init] No custom files found, skipping...
MOD Auto-reload: Watching the following files/folders for changes (excluding .sample and .md files):
/config/nginx
[ls.io-init] done.
Server ready
nginx: [error] [lua] crowdsec.lua:57: init(): error loading captcha plugin: no recaptcha site key provided, can't use recaptcha
nginx: [alert] [lua] crowdsec_nginx.conf:4):8: [Crowdsec] Initialisation done
warning: state file /config/log/logrotate.status is world-readable and thus can be locked from other unprivileged users. Skipping lock acquisition...

le mod maxmind se charge bien.
 
@MilesTEG tu as essayé de repartir de 0 est de lancer swag sans les bases de donné dans geoip2db voir si swag les créés?

J'ai ajouté le container geoip qui pointe vers le dossier geoip2db de swag pour me gerer la mise à jour de la base de donné

libmaxminddb
**** goaccess already installed, skipping ****
**** libmaxminddb already installed, skipping ****
**** libmaxminddb already installed, skipping ****
**** Applied the SWAG dashboard mod ****
Applying the maxmind mod...
Applied the maxmind mod
[custom-init] No custom files found, skipping...
[ls.io-init] done.

Server ready
 
Dernière édition:
@MilesTEG tu as essayé de repartir de 0 est de lancer swag sans les bases de donné dans geoip2db voir si swag les créés?

J'ai ajouté le container geoip qui pointe vers le dossier geoip2db de swag pour me gerer la mise à jour de la base de donné

libmaxminddb
**** goaccess already installed, skipping ****
**** libmaxminddb already installed, skipping ****
**** libmaxminddb already installed, skipping ****
**** Applied the SWAG dashboard mod ****
Applying the maxmind mod...
Applied the maxmind mod
[custom-init] No custom files found, skipping...
[ls.io-init] done.

Server ready
Non, je t'avoue que mon conteneur tourne depuis pas mal de temps, donc pas fait depuis zéro depuis un bon paquet de temps...
 
@Cruchot
Tu pourrais détailler ce que tu as fait pour le conteneur geoip ?

je vais tenter une installation fraiche sur un NUC pour voir.
 
@MilesTEG

Le dernier chemin du container est dispo ici: ghcr.io/maxmind/geoipupdate:latest

La j'ai laissé l'ancien chemin:

Code:
version: '3'
services:
  geoip:
    container_name: geoipupdate
    network_mode: swag_default
    image: maxmindinc/geoipupdate:latest
    restart: unless-stopped
    volumes:
      - /ton chemin vers container swag/Swag/config/geoip2db:/usr/share/GeoIP
    environment:
      TZ: "Europe/PARIS"
      GEOIPUPDATE_ACCOUNT_ID: XXXXXX
      GEOIPUPDATE_LICENSE_KEY: "XXXXXXXXXXXXXXXXXXXXXXX"
      GEOIPUPDATE_EDITION_IDS: "GeoLite2-City GeoLite2-Country GeoLite2-ASN"    # Bases à télécharger
      GEOIPUPDATE_FREQUENCY: 12                # Màj toutes les 12h
      GEOIPUPDATE_PRESERVE_FILE_TIMES: 1       # Conserver la date originale de création des fichiers.
 
Dernière édition:
@Cruchot
Installation fraiche sur le NUC, j'ai juste conservé mes fichiers .conf de nginx et fail2ban, et le ovh.ini (que j'avais initialement oublié ^^ d'où une erreur de certificat XD)
Je n'ai pas gardé le dossier geoip2db.
J’ai aussi remis les fichiers logs vides que j’utilise dans les proxy-confs.
Et tout fonctionne même le mod maxmind. La base de données s’est bien téléchargée.
J’ai eu quelques soucis à cause des fichiers logs non présents et le mod crowdsec qui ne voulait pas de télécharger probablement à cause des logs aussi.
Mais une fois résolut le soucis des fichiers logs tout s’est finalisé correctement : pas d’erreur sur le mod maxmind et la base de données est bien présente.

Du coup je ne comprend pas pourquoi chez toi ça n’a pas voulu se faire…

Sinon y a t’il une plus-value à avoir un conteneur geoip dédié ?
 
Elle est forte celle la!!! je reste poli :LOL:

Bon, ben je continu de creuser...
La plus-value que je vois c'est que tu peux avoir + de db pour plus d'info, des réglages plus fin sur la maj des db, rien de transcendant.
Merci pour ton retour
 
La plus-value que je vois c'est que tu peux avoir + de db pour plus d'info, des réglages plus fin sur la maj des db,
Concrètement il y a quoi comme plus dans les bdd supplémentaires ?
Si ça apporte un vrai plus je suis preneur mais est-ce que swag va bien utiliser ces bdd supplémentaires ?