[Tuto] Installer SWAG en Docker ( Reverse Proxy )

bonjour
quelqu'un sait il comment remplacer l'image du rat dans le message. merci
Voir la pièce jointe 5400
j'ai trouvé il suffit de cliquer sur le nuage
Message automatiquement fusionné :

Salut,
Dans ton instance Gotify, tu va dans Apps
OMv42aq.png


Puis tu clique sur le petit nuage pour uploader l'image de ton choix :
vOLFPG6.png


Moi j'ai mi celle de Wikipedia : https://upload.wikimedia.org/wikipedia/commons/d/db/Fail2ban_logo.png
y a t il moyen de le personnaliser pour chaque message et non pour chaque appli .
merci
 
  • J'aime
Réactions: Poluxor
Bonjour,

Merci pour ce tuto qui m'a permis de mettre en oeuvre swag sur mon nas DIY.

Mon nas DIY est compose

Processeur : Amd Athlon II X2 215
Ram : 4Go
Stockage : 2 DD de 6To
Os : OMV 5.6.26-1

Sur mon reseau local mon nas a pour Ip 192.168.1.186 (sur lequel tourne openmediavault qui héberge (grâce a docker (nextcloud, nextclouddb, swag)) un nextcloud accessible par l'Url ar.duckdns.org/nextcloud

Mon nas est connecte a ma Freebox dont les ports sont rediriges comme suit :
80 (internet) vers : 80 de la machine 192.168.1.186
443 (internet) vers : 443 de la machine 192.168.1.186



Je souhaiterais a ajouter une autre machine sur le réseau : un serveur web 192.168.1.196 pour heberger deux sites web dynamique (ayant chacun un nom de domaine différents soit testrl.fr et exemplerl.fr

Y a t il un moyen pour configurer swag afin que les requêtes venant du web du type :
  • ar.duckdns.org/nextcloud soient dirigées vers la machine 192.168.1.186 (port 80 et 443)
  • testrl.fr soient dirigées vers la machine 192.168.1.186 (port 80 et 443)
  • exemplerl.fr soient dirigées vers la machine 192.168.1.186 (port 80 et 443)



svp merci

cordialement,

Raphael 3922
 
Salut,
Os : OMV 5.6.26-1
Il va falloir penser a passer sur OMV6 :) OMV5 est End-of-Life :)

Y a t il un moyen pour configurer swag afin que les requêtes venant du web du type :
  • ar.duckdns.org/nextcloud soient dirigées vers la machine 192.168.1.186 (port 80 et 443)
  • testrl.fr soient dirigées vers la machine 192.168.1.186 (port 80 et 443)
  • exemplerl.fr soient dirigées vers la machine 192.168.1.186 (port 80 et 443)
Bien sur, dans SWAG, sert toi du template d'exemple _template.subdomain.conf.sample qui ce trouve dans config/nginx/proxy-confs :

Exemple , dans le cas de testrl.fr, si tu souhaite que testrl.fr renvoi vers l'adresse local 192.168.1.186:80 alors dans le dossier proxy-confs créer un fichier nommé testrl.subdomain.conf qui contient ceci :

Code:
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name testrl.fr;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app 192.168.1.186;
        set $upstream_port 80;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }

}

A confirmer, mais il me semble que server_name peut contenir plusieurs noms, dans ce cas tu pourrai déclarer testrl.fr et exemplerl.fr dans la meme config, comme ceci :

Code:
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name testrl.fr exemplerl.fr;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app 192.168.1.186;
        set $upstream_port 80;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }

}

Bien sur, ces nom de domaine doivent etre configurer dans SWAG pour que le certificat généré soit OK. Cela ce passe avec la variable du conteneur : EXTRA_DOMAINS=testrl.fr,exemplerl.fr

Plus d'info : Docker SWAG - Parameters
 
  • J'aime
Réactions: Nincha
Bonjour à tous,
j'ai installé swag sur mon AS3302T, mais je bute sur le reverse proxy avec un serveur domoticz sur un raspberry sur mon réseau.
Sur la console du conteneur swag (j'utilise portainer) je vois l'ip 192.168.0.10, je peux même faire un wget http://192.168.0.10, mais lorsque je me connecte à mon https://xxxx.dyndns.org/Domoticz mon .conf me ramène systématiquement vers un

404 Not Found​

j'en peux plus ! Si quelqu'un peut m'aider.. Au moins m'indiquer comment débuguer ce genre de problème, je ne trouve pas.

vi /volume1/Docker/Swag/config/nginx/proxy-confs/domoticz.subfolder.conf
Code:
location ^~ /Domoticz/ {
    include /config/nginx/proxy.conf;
    #include /config/nginx/resolver.conf;
    resolver 192.168.0.254;
    proxy_pass http://192.168.0.10:8080;
    rewrite /Torrents(.*) $1 break;
    proxy_set_header X-Deluge-Base "/Torrents/";
}
 
Salut,

Ton fichier conf pour domoticz devrai ressembler a cela :

Code:
location ^~ /domoticz/ {

    include /config/nginx/proxy.conf;
    include /config/nginx/resolver.conf;
    set $upstream_app 192.168.0.10;
    set $upstream_port 8080;
    set $upstream_proto http;
    proxy_pass $upstream_proto://$upstream_app:$upstream_port;

}

Source : https://github.com/linuxserver/reverse-proxy-confs/blob/master/domoticz.subfolder.conf.sample

Par contre, pourquoi tu as des choses comme :
- resolver 192.168.0.254; mais visiblement tu l'intègre manuellement plutot que de laisser la ligne #include /config/nginx/resolver.conf;
- proxy_pass http://192.168.0.10:8080; Bien que fonctionnel, ce n'est pas la "norme" des confs SWAG
- rewrite /Torrents(.*) $1 break; et proxy_set_header X-Deluge-Base "/Torrents/";
 
Code:
location ^~ /Domoticz/ {
    include /config/nginx/proxy.conf;
    include /config/nginx/resolver.conf;
    proxy_pass http://192.168.0.10:8080;
}
Pas mieux. Pour le resolv.conf j'ai fait pas mal de tests, c'est pour ça.
cat /volume1/Docker/Swag/config/nginx/resolver.conf
Code:
# This file is auto-generated only on first start, based on the container's /etc/resolv.conf file. Feel free to modify it as you wish.
resolver  127.0.0.11 valid=30s;

J'ai toujours mon 404 en retour
 
Que donne la commande suivante :

En SSH depuis ton NAS : docker exec -it swag curl http://192.168.0.10:8080
ou
Depuis la console de SWAG sur Portainer : curl http://192.168.0.10:8080
 
anthropo@AS3302T:$ sudo docker exec -it swag curl http://192.168.0.10:8080
Password:
Code:
<!DOCTYPE html>
<html manifest="html5.appcache">
<head>
        <meta charset="utf-8">
        <title>Domoticz</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
        <meta name="apple-mobile-web-app-capable" content="yes">
...

root@Swag:/#curl http://192.168.0.10:8080 |more
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
Code:
<!DOCTYPE html>
<html manifest="html5.appcache">
<head>
                <meta charset="utf-8">
                <title>Domoticz</title>
                <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
                <meta name="apple-mobile-web-app-capable" content="yes">
                <meta name="mobile-web-app-capable" content="yes">
...

C'est pareil. Le pire c'est que j'ai un serveur jeedom sur une ip 192.168.0.14 et un jellyfin sur le NAS sur le port 8096 et ça fonctionne (certes pas avec la même conf mais le proxy_pass est pareil)
 
YES !

Code:
location /Domoticz {                                             
    return 301 $scheme://$host/Domoticz/;                         
}                                       
                                        
location /Domoticz/ {                   
       # enable the next two lines for http auth
       auth_basic "Restricted";                 
       auth_basic_user_file /config/nginx/.htpasswd;
                                                    
       rewrite ^/Domoticz/?(.*) /$1 break;         
       proxy_http_version       1.1;               
       proxy_read_timeout       90;       
       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         X-Scheme $scheme;                         
       proxy_set_header         Upgrade $http_upgrade;                     
       proxy_set_header         Connection $connection_upgrade;
       add_header               X-Frame-Options SAMEORIGIN;   
       proxy_pass http://192.168.0.10:8080;                   
}

il me suffisait de trouver la bonne doc (ce qui m'a valu quelques heures de galère quand même)
 
Salut,

Il va falloir penser a passer sur OMV6 :) OMV5 est End-of-Life :)


Bien sur, dans SWAG, sert toi du template d'exemple _template.subdomain.conf.sample qui ce trouve dans config/nginx/proxy-confs :

Exemple , dans le cas de testrl.fr, si tu souhaite que testrl.fr renvoi vers l'adresse local 192.168.1.186:80 alors dans le dossier proxy-confs créer un fichier nommé testrl.subdomain.conf qui contient ceci :

Code:
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name testrl.fr;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app 192.168.1.186;
        set $upstream_port 80;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }

}

A confirmer, mais il me semble que server_name peut contenir plusieurs noms, dans ce cas tu pourrai déclarer testrl.fr et exemplerl.fr dans la meme config, comme ceci :

Code:
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name testrl.fr exemplerl.fr;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app 192.168.1.186;
        set $upstream_port 80;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }

}

Bien sur, ces nom de domaine doivent etre configurer dans SWAG pour que le certificat généré soit OK. Cela ce passe avec la variable du conteneur : EXTRA_DOMAINS=testrl.fr,exemplerl.fr

Plus d'info : Docker SWAG - Parameters
Bonsoir,

Merci pour cette réponse. Je teste et je revient vers vous si nécessaire.

Bonne continuation


Raphael 3922
 
Hello;

Lors de mon docker start swag j'ai eu l'erreur suivante:
Code:
Error starting userland proxy: listen tcp4 0.0.0.0:443: bind: address already in use

un petit
Code:
sudo netstat -pna | grep 443

tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 13968/nginx: master
tcp 0 0 ip_server:443 ip_PC:56965 TIME_WAIT -
tcp 0 0 ip_server:443 ip_PC:57005 ESTABLISHED 13973/nginx: worker

J'ai un serveur ngnix qui tourne;
Je le stop
Code:
systemctl stop nginx

Relance swag

Code:
 docker start swag

Check :
Code:
sudo netstat -pna | grep 443
sudo netstat -pna | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 20301/docker-proxy
tcp6 0 0 :::443 :::* LISTEN 20308/docker-proxy

Et voila je peux continuer l'install; J'ai rajouté sur ma todo list (load balancing / reverse proxy / resau virtuel local ?? 127.0.0/24)

Un petit oubli;

7/ Activation du HSTS
Votre certificat HTTPS doit être valide avant de faire ceci !!
Pour l'activation du HSTS ( plus d'info ici : https://gist.github.com/quietsy/58590a640dd4f7a89696c68b0e6a8691#hsts ), rien de compliqué !

Editer votre fichier ssl.conf présent dans votre dossier /config/ngnix/


Edit: Si vous voulez, comme moi avoir, le dashboard et dbip, il faut le rajouter dans le docker-compose.yml à la suite de la liste environment

Code:
- DOCKER_MODS=linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip


Cela va vous créer un dashboard.subdomain.conf dans le dossier proxy-confs. qui par défaut n'autorise que les ip de réseau interne; si on tente d'accéder de l’extérieure, nous avons un beau :

403 Forbidden​



lien vers les mods : https://mods.linuxserver.io/?mod=swag
 
Dernière édition:
Salut ^^
J'ai installé SWAG en docker macvlan sur mon Synology, je suis en phase de test, et pour le moment mes fichiers de conf fonctionnent bien.

Me reste une chose à faire, c'est utiliser le Fail2Ban intégré plutôt que celui d'une instance séparée.
Mais j'ai besoin des notifications emails, et pour ça, il me faut trouver comment indiquer à F2B le serveur SMTP à utiliser ainsi que les identifiants de ce serveur.
Mais là, malgré mes recherches, je ne trouve pas comment faire.
Quelqu'un saurait-il comment faire ?

Merci d'avance :)
 
Sur le lien que j'ai mis en edit, tu peux tester ceci? :
This works for me;



Edit jail.local and add the following to the nextcloud or other jail;

Code:
    mta      = sendmail
    action   = sendmail-whois[name=nextcloud, dest=<destination email address>]


Copy ..action.d/sendmail-whois.conf to sendmail-whois.local and then edit the last line of the action, changing the sendmail command line part;

Code:
    Fail2Ban" | /usr/sbin/sendmail -t -v -H 'exec openssl s_client -quiet -tls1 -connect smtp.gmail.com:465' -au<from email account name> -ap<account password> <dest>

Edit : https://stackoverflow.com/questions/25890510/fail2ban-not-sending-email-notifications
 
Dernière édition:
Je n'ai pas de commande dans le action.d/sendmail-whois.conf
NGINX:
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
#

[INCLUDES]

before = sendmail-common.conf
         mail-whois-common.conf

[Definition]

# bypass ban/unban for restored tickets
norestored = 1

# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    See jail.conf(5) man page
# Values:  CMD
#
actionban = printf %%b "Subject: [Fail2Ban] <name>: banned <ip> from <fq-hostname>
            Date: `LC_ALL=C date +"%%a, %%d %%h %%Y %%T %%z"`
            From: <sendername> <<sender>>
            To: <dest>\n
            Hi,\n
            The IP <ip> has just been banned by Fail2Ban after
            <failures> attempts against <name>.\n\n
            Here is more information about <ip> :\n
            `%(_whois_command)s`\n
            Regards,\n
            Fail2Ban" | <mailcmd>

[Init]

# Default name of the chain
#
name = default

Mais maintenant que je sais quoi chercher, j'ai trouvé dans le sendmail-common.conf ceci :
NGINX:
# Fail2Ban configuration file
#
# Common settings for sendmail actions
#
# Users can override the defaults in sendmail-common.local

[INCLUDES]

after = sendmail-common.local

[Definition]

# Option:  actionstart
# Notes.:  command executed on demand at the first ban (or at the start of Fail2Ban if actionstart_on_demand is set to false).
# Values:  CMD
#
actionstart = printf %%b "Subject: [Fail2Ban] <name>: started on <fq-hostname>
              Date: `LC_ALL=C date +"%%a, %%d %%h %%Y %%T %%z"`
              From: <sendername> <<sender>>
              To: <dest>\n
              Hi,\n
              The jail <name> has been started successfully.\n
              Regards,\n
              Fail2Ban" | <mailcmd>

# Option:  actionstop
# Notes.:  command executed at the stop of jail (or at the end of Fail2Ban)
# Values:  CMD
#
actionstop = printf %%b "Subject: [Fail2Ban] <name>: stopped on <fq-hostname>
             Date: `LC_ALL=C date +"%%a, %%d %%h %%Y %%T %%z"`
             From: <sendername> <<sender>>
             To: <dest>\n
             Hi,\n
             The jail <name> has been stopped.\n
             Regards,\n
             Fail2Ban" | <mailcmd>

# Option:  actioncheck
# Notes.:  command executed once before each actionban command
# Values:  CMD
#
actioncheck =

# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    See jail.conf(5) man page
# Values:  CMD
#
actionban =

# Option:  actionunban
# Notes.:  command executed when unbanning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    See jail.conf(5) man page
# Values:  CMD
#
actionunban =

[Init]

# Your system mail command
#
mailcmd = /usr/sbin/sendmail -f "<sender>" "<dest>"

# Recipient mail address
#
dest = root

# Sender mail address
#
sender = fail2ban

# Sender display name
#
sendername = Fail2Ban

Je suppose que la commande est là :
# Your system mail command # mailcmd = /usr/sbin/sendmail -f "<sender>" "<dest>"

Je testerais demain, là il est grand temps que j'aille me coucher :)
Merci pour l'aide ^^
 
  • J'aime
Réactions: Poluxor
Sur le lien que j'ai mis en edit, tu peux tester ceci? :


Code:
    mta      = sendmail
    action   = sendmail-whois[name=nextcloud, dest=<destination email address>]




Code:
    Fail2Ban" | /usr/sbin/sendmail -t -v -H 'exec openssl s_client -quiet -tls1 -connect smtp.gmail.com:465' -au<from email account name> -ap<account password> <dest>

Edit : https://stackoverflow.com/questions/25890510/fail2ban-not-sending-email-notifications
Salut :)
Bon alors, j'ai tenté cette commande, mise dans le fichier sendmail-common.local, avec une petite modification :
Bash:
mailcmd = /usr/sbin/sendmail -t -v -f mon-email@gmail.com -H 'exec openssl s_client -quiet -tls1 -connect smtp.gmail.com:465' -amLOGIN -aumon-email@gmail.com -apMON-MDP mon-email@gmail.com
@Poluxor Tu peux me confirmer que ça chiffre bien le transfert du MDP et du mail envoyé ?
Par contre, pas moyen de faire fonctionner des variables dans la commande avec des <variable_1>.
Enfin faudrait que je retente les variables avec cette commande mise dans le sendmaim-common.local car j'ai essayé hier avec la commande dans le jail.local dans la partie default, mais ça n'a pas marché. (ni même cette commande en claire...

Sinon j'ai constaté une différence entre le fail2ban intégré à SWAG et celui crazy-max/fail2ban : il y a ssmtp présent dans l'image crazy-max/fail2ban et pas dans celle de SWAG.
D'ailleurs quand je regarde les variables d'environnement que j'utilise pour l'image crazy-max/fail2ban, c'est
YAML:
      - SSMTP_HOST=smtp.gmail.com
      - SSMTP_PORT=587            # Pour gmail : 587
      - SSMTP_HOSTNAME=Docker-Fail2ban      # Ce sera le nom qui sera affiché dans les emails
      - SSMTP_USER=mon-mail@gmail.com
      - SSMTP_PASSWORD=MON-MDP

Du coup je suis partagé entre l'envie de continuer à utiliser le fail2ban dédié (crazy-max/fail2ban) et celui de SWAG...
Car pour les deux, je peux avoir accès aux mêmes log... suffit de bien mettre les volumes :)