[Tuto] Installer SWAG en Docker ( Reverse Proxy )

Tu ajoutes cependant plutôt un .conf avec la bonne config dedans
Tu veux dire que je copie colle le .conf.sample concerné (si tant est qu'il y ait déjà un fichier exemple dans proxy-confs) en le renommant pour virer .sample et je fais mes modifs dedans?

Hello,
Je viens de vérifier, et dans mon YML, j'ai mis ça :
Code:
- ONLY_SUBDOMAINS=false   # If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to true
Et donc je n'ai pas de variable SUBDOMAINS=.
Et le wildcard fonctionne très bien.
Bon je viens de re-déployer, avec un peu de difficultés car j'ai voulu créer mes clés api OVH pour uniquement mon domaine, et j'avais oublié une ligne de get. Résultat je me prenais des erreurs, et j'ai eu un peu de mal à trouver comment supprimer l'api erroné sur mon compte OVH.

Au cas où pour ceux qui galéreraient comme moi pour la gestion des api, voici le topic qui m'a dépanné: ovh-gestion-api-tokens

J'ai fait quelques tests, même si je force le compose avec un only-sub-domain à true, swag le considère à false.

Question HS, ton avatar, c'est un ver des sables de Dune ?
 
Dernière édition:
Bonjour

Je galere avec ma configuration, je ne suis pas totalement satisfait. J'ai un miniPC type NUC sur lequel j'ai installe proxmox. Dessus j'ai plusieurs VMs et Containers Linux
  • Un LXC sur lequel j'ai installe docker, portainer ainsi que tous mes containers dont swag
  • Un LXC sur lequel j'ai installe Adguard qui me sert de DNS local
Swag et Adguard sont bien visibles sur mon reseau local avec adresses IP figees (macvlan).

Pourriez vous me confirmer que la premiere ligne est correcte ? *.ndd.fr sont rediriges vers l'IP du container SWAG. adguard.png

J'ai installe Vaultwarden mais cette installation n'est pas fonctionnelle - j'arrive a
  • Creer des utilisateurs,
  • Se connecter a distance sur ordinateurs, sur telephones
  • Importer des mots de passe depuis une sauvegarde faite sur une precedente installation (sur mon NAS).
Par contre
  1. J'ai une erreur type 405 quand je tente de modifier un mot de passe
  2. Aucun moyen de verifier l'adresse de mes utilisateurs (on recoit la demande, le lien me renvoit une erreur "localhost...') Corrige: il m'a fallu aller sur la page admin et saisir mon adresse en https://coffre.ndd.fr

Pb 2 Vaultwarden.png

Je pense que c'est lie a SWAG, mon fichier dans swag est le suivant - Suis je dans le vrai ou bien je dois regarder le docker Vaultwarden ?

YAML:
## Version 2022/09/08
# make sure that your dns has a cname set for vaultwarden and that your vaultwarden container is not using a base url
# make sure your vaultwarden container is named "vaultwarden"
# set the environment variable WEBSOCKET_ENABLED=true on your vaultwarden container

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

    server_name coffre.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 128M;

    # enable for ldap auth (requires ldap-location.conf in the location block)
    #include /config/nginx/ldap-server.conf;

    # enable for Authelia (requires authelia-location.conf in the location block)
    #include /config/nginx/authelia-server.conf;

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

    }

    location ~ (/vaultwarden)?/admin {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app vaultwarden;
        set $upstream_port 80;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }

    location ~ (/vaultwarden)?/notifications/hub {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app vaultwarden;
        set $upstream_port 3012;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }

    location ~ (/vaultwarden)?/notifications/hub/negotiate {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app vaultwarden;
        set $upstream_port 80;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }
}
 

Pièces jointes

  • Pb 1 Vaultwarden.png
    Pb 1 Vaultwarden.png
    15.9 KB · Affichages: 18
Dernière édition:
@Jfamiens Bonjour,
Tente peut-être déjà par changer set $upstream_app vaultwarden; en :
Config Apache:
set $upstream_app 192.168.X.Y;        # Où tu remplaces bien évidemment X et Y par tes valeurs ^^

Attention, si tu as des conteneurs en macvlan, dont SWAG, et que ton vaultwarden est sur la même machine hôte, il te faut une IP virtuelle pour que ça marche. Et dans ce cas-là, l'IP à mettre est la virtuelle.

Mon .conf ressemble à ceci :

Code:
## Version 2022/02/08
# make sure that your dns has a cname set for vaultwarden and that your vaultwarden container is not using a base url
# make sure your vaultwarden container is named "vaultwarden"
# set the environment variable WEBSOCKET_ENABLED=true on your vaultwarden container

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

    server_name coffre.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 128M;

    # enable for ldap auth, fill in ldap details in ldap.conf
    #include /config/nginx/ldap.conf;

    # enable for Authelia
    #include /config/nginx/authelia-server.conf;
   
    # GeoIP Blocking with Maxmind Docker-MOD
    include /config/nginx/maxmind-geoblock_and_LAN.conf;

    # Custom error pages
    include /config/nginx/error_pages.conf;

    # Custom error files
    access_log /config/log/nginx/access_vaultwarden.log;
    error_log /config/log/nginx/error_vaultwarden.log;

    location / {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;

        # enable the next two lines for ldap auth
        #auth_request /auth;
        #error_page 401 =200 /ldaplogin;

        # enable for Authelia
        #include /config/nginx/authelia-location.conf;

        # GeoIP Blocking with Maxmind Docker-MOD
        include /config/nginx/maxmind-geoblock_and_LAN.conf;

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

    }

    location /admin {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;

        # enable the next two lines for ldap auth
        #auth_request /auth;
        #error_page 401 =200 /ldaplogin;

        # enable for Authelia
        #include /config/nginx/authelia-location.conf;

        # GeoIP Blocking with Maxmind Docker-MOD
        include /config/nginx/maxmind-geoblock_and_LAN.conf;

        # Restrict access to some IPs only (LAN & VPNs)
        include /config/nginx/ACL.IP-LAN.conf;

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

    }

    location /notifications/hub {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;

        # GeoIP Blocking with Maxmind Docker-MOD
        include /config/nginx/maxmind-geoblock_and_LAN.conf;

        # Restrict access to some IPs only (LAN & VPNs)
        # include /config/nginx/ACL.IP-LAN.conf;

        set $upstream_app 192.168.2.230;
        set $upstream_port 3012;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }

    location /notifications/hub/negotiate {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;

        # GeoIP Blocking with Maxmind Docker-MOD
        include /config/nginx/maxmind-geoblock_and_LAN.conf;

        # Restrict access to some IPs only (LAN & VPNs)
        # include /config/nginx/ACL.IP-LAN.conf;

        set $upstream_app 192.168.2.230;
        set $upstream_port 882;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;
    }


}

PS : tu peux supprimer les blocs :
Config Apache:
        # GeoIP Blocking with Maxmind Docker-MOD

        include /config/nginx/maxmind-geoblock_and_LAN.conf;



        # Restrict access to some IPs only (LAN & VPNs)

        # include /config/nginx/ACL.IP-LAN.conf;
car ils correspondent à des fichiers que tu n'auras pas à moins de les créer :

Code:
# Fichier maxmind-geoblock_and_LAN.conf à placer dans /config/nginx/ à coté du ngonx.conf
#
# # Version 2022/08/21 - File to be included in all site-confs/*.conf files for SWAG-Nginx

if ($lan-ip = yes) { set $geo-whitelist yes; }
if ($geo-whitelist = no) { return 404; }


Code:
# Fichier ACL.IP-LAN.conf à placer dans /config/nginx/ à coté du ngonx.conf
#
# For my Synology DSM, I created an Access Control Profiles to restrict access only to LAN and VPN IP adresses
# This Access Control Profile is a file in the /etc/nginx/conf.d folder
# But for SWAG-Nginx, it must be with another file.

# Allow all from LAN IPs
allow 192.168.2.0/24;

# Allow all from VPNs IPs
allow 192.168.10.0/24;
allow 192.168.11.0/24;

# Deny all
deny all;


PPS : change les ports de connexion par tes ports définis dans le docker-compose.yml.
Voir mon tuto vaultwarden.
 
@Jfamiens Bonjour,
Tente peut-être déjà par changer set $upstream_app vaultwarden; en :
Config Apache:
set $upstream_app 192.168.X.Y;        # Où tu remplaces bien évidemment X et Y par tes valeurs ^^

Attention, si tu as des conteneurs en macvlan, dont SWAG, et que ton vaultwarden est sur la même machine hôte, il te faut une IP virtuelle pour que ça marche. Et dans ce cas-là, l'IP à mettre est la virtuelle.

PPS : change les ports de connexion par tes ports définis dans le docker-compose.yml.
Voir mon tuto vaultwarden.
Merci @MilesTEG1

Mon NUC a l'adresse IP 192.160.0.90 et le container LXC "docker" a l'adresse 192.168.0.53. Tous mes containers sont sur ce LXC.

Je viens donc de modifier mon fichier vaultwarden.subdomain.conf en remplacant le nom du container "vaultwarden" par cette adresse en 0.53, j'ai redemarre swag - je me retrouve avec une erreur 502 Bad Gateway. En sus, je me retrouve avec des erreurs de reseau / chargement de mon environnement.

Pour ton tuto, je suis dessus afin d'identifier ce qui est different (a part bien sur que je ne touche pas au NAS)!
 
Oh ! Je ne sais pas pourquoi ça ne fonctionne pas comme prévu... je ne maitrise pas l'aspect LXC docker 😅
 
Oh ! Je ne sais pas pourquoi ça ne fonctionne pas comme prévu... je ne maitrise pas l'aspect LXC docker 😅
J'ai pu trouver l'erreur pour mon 2e probleme. Il me reste le principal sur Vaultwarden.

En allant sur ton tuto, tu parles d'un probleme similaire

##==============================================================================================
## ##
## NOTE IMPORTANTE ##
## ----------------- ##
## ##
## Lors de l'importation d'un fichier contenant beaucoup d'entrées, j'ai eu une erreur ##
## 405 Not Allowed - Nginx ##
## Après quelques recherches, et un certains nombre de minutes, il s'est avéré que les ##
## expiration du délai ... (les timeout) dans le reverse proxy par défaut de 60s étaient ##
## trop faible. ##
## En passant les 3 valeurs à 300s (5min), ça a réglé mon problème. ##
## (Pensez à relancer le script vaultwarden__Enable_Websocket.sh après ces modifications) ##
## ##
##==============================================================================================
 
Dernière édition:
Bonjour, tout d'abord merci pour les tutos.
J'ai bien télécharger le fichier docker-compose.yml et fais les modifications mais lors du lancement de la création du conteneur j'obtient
Code:
Creating network "swag_default" with the default driver
ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
 
Hello; petite question:
J'utilise Partainer-ce
J'ai le projet d'avoir plusieurs wordpress différents sur le même serveur mais avec des noms de domaines propre à chacun d'eux. le reverse proxy de swag est la solution?

J'ai aussi d'autre stacks des "mono" et des "groupes".
Je pensais rajouter à tous mes conteneurs pour son faill2ban:
networks: - backend_network
Mais j'ai une stack qui a déjà son
Code:
networks:
- backend_network2
Ca va poser problème si je fait ça?
Service: Swag: Blabla networks: -backend_network -backend_network2 -backend_network3
 
Hello; petite question:
J'utilise Partainer-ce
J'ai le projet d'avoir plusieurs wordpress différents sur le même serveur mais avec des noms de domaines propre à chacun d'eux. le reverse proxy de swag est la solution?

J'ai aussi d'autre stacks des "mono" et des "groupes".
Je pensais rajouter à tous mes conteneurs pour son faill2ban:
networks: - backend_network
Mais j'ai une stack qui a déjà son
Code:
networks:
- backend_network2
Ca va poser problème si je fait ça?
Service: Swag: Blabla networks: -backend_network -backend_network2 -backend_network3
Dommage que je ne peux pas éditer....

Pour info, ça refonctionne bien chez moi. J'ai galéré à chercher des solutions sur le réseau interne de Swag (backend_network2)
Alors que, (si j'ai bien compris) Il me manquait le *.ndd.fr CNAME ndd.fr chez mon provider DNS


DNS.PNG
 
  • J'aime
Réactions: Nincha et EVO
Bonjour à tous,

Je rencontre un soucis au moment de déployer la stack swag avec portainer.
Voilà le message d'erreur:

Capture d’écran 2023-02-17 à 5.14.42 PM.png

Visiblement un problème avec le port 443.
Capture d’écran 2023-02-17 à 5.19.23 PM.png
Je pensais à un conflit avec Nextcloud déjà installé mais même en arrêtant la stack nextcloud la stack swag me renvoie un message d'erreur.
Auriez-vous un idée?
 
Salut,
C'est le port 443 sur ton hote qui est utilisé, ici nextcloud utilise le port 445 sur l'hote donc c'est pas lui.

C'est quoi ton systeme ? Si c'est OMV, de mémoire par défaut l'interface HTTPS de OMV est sur le port 443
 
Salut,
C'est le port 443 sur ton hote qui est utilisé, ici nextcloud utilise le port 445 sur l'hote donc c'est pas lui.

C'est quoi ton systeme ? Si c'est OMV, de mémoire par défaut l'interface HTTPS de OMV est sur le port 443

Je suis bien sur OMV6, et j'avais complètement oublié que j'avais coché connexion SSL dans OMV :LOL:
La stack s'est bien déployée correctement, plus qu'à suivre la fin du tuto pour la partie OVH.
Merci @EVOTk pour le tuto et pour la soluce ;)
 
  • J'aime
Réactions: EVO
Bonjour à tous,

J'ai récemment installé SWAG en macvlan sur mon NAS Synology pour profiter du reverse proxy, fail2ban, certificats & C°.

Ma configuration a l'air de marcher, j'arrive à accéder aux conteneurs Docker que j'ai installés sans aucun soucis. Le réseau macvlan marche, l'hôte virtuel aussi, les ports sont redirigés au niveau de la box...

Cependant (et oui...), je n'arrive pas à me connecter aux applications Synology (DSM, File, Photos...). Dans les fichiers *.conf (swag/config/nginx/proxy-confs/) :
- Si je mets la variable $upstream_proto en http, j'obtiens une erreur 400.​
- Si je mets la variable $upstream_proto en https, j'obtiens une erreur 502.​

Là où le bas blesse, c'est que j'arrive bien à y accéder avec l'url proxiée directe (https + IP de l'hôte virtuel + port).

Vous en conviendrez, je suppose, cela me gêne !

Auriez-vous quelques idées de solution ? Merci d'avance !

PS : quelques captures d'écran de ma config pour donner quelques détails (un exemple de reverse proxy domain.conf + docker-compose de SWAG).
 

Pièces jointes

  • Capture d’écran 2023-02-18 192233.png
    Capture d’écran 2023-02-18 192233.png
    144.9 KB · Affichages: 16
  • Capture d’écran 2023-02-18 192551.png
    Capture d’écran 2023-02-18 192551.png
    75.3 KB · Affichages: 13
Hello

J'ai un problème sur Nextcloud, je n'arrive pas à virer les deux avertissements en jaune:
Capture d’écran 2023-02-20 à 8.53.19 PM.png

J'ai bien décommenté les lignes correspondantes dans le ssl.conf (j'ai testé sur celui de nextcloud et celui de swag) et relancé les containers.
Nextcloud et swag sont dans 2 stacks séparées et Nextcloud passe par le réseau swag.
Une idée?
 
Hello

J'ai un problème sur Nextcloud, je n'arrive pas à virer les deux avertissements en jaune:
Voir la pièce jointe 8175

J'ai bien décommenté les lignes correspondantes dans le ssl.conf (j'ai testé sur celui de nextcloud et celui de swag) et relancé les containers.
Nextcloud et swag sont dans 2 stacks séparées et Nextcloud passe par le réseau swag.
Une idée?
Si tu utilise le conteneur nextcloud linuxserver alors les entêtes sont incluses dans le docker donc si tu le rajoute dans SWAG tu les doubles, ce qui provoque l'avertissement
 
Bonjour à tous,

J'ai récemment installé SWAG en macvlan sur mon NAS Synology pour profiter du reverse proxy, fail2ban, certificats & C°.

Ma configuration a l'air de marcher, j'arrive à accéder aux conteneurs Docker que j'ai installés sans aucun soucis. Le réseau macvlan marche, l'hôte virtuel aussi, les ports sont redirigés au niveau de la box...

Cependant (et oui...), je n'arrive pas à me connecter aux applications Synology (DSM, File, Photos...). Dans les fichiers *.conf (swag/config/nginx/proxy-confs/) :
- Si je mets la variable $upstream_proto en http, j'obtiens une erreur 400.​
- Si je mets la variable $upstream_proto en https, j'obtiens une erreur 502.​

Là où le bas blesse, c'est que j'arrive bien à y accéder avec l'url proxiée directe (https + IP de l'hôte virtuel + port).

Vous en conviendrez, je suppose, cela me gêne !

Auriez-vous quelques idées de solution ? Merci d'avance !

PS : quelques captures d'écran de ma config pour donner quelques détails (un exemple de reverse proxy domain.conf + docker-compose de SWAG).

Problème résolu !

Pour la communauté et note à moi-même : il faut rediriger SWAG vers le bon type de ports (HTTP ou HTTPS) des applications syno, en faisant correspondre la variable $upstream_proto en conséquence 😇
 
bonjour,

J'ai actuellement une stack swag (sous portainer) avec un nom de domaine duckdns et l'environnement suivant. Cela marche bien (excepté que google considère mon site comme dangereux...). Je fais donc un essai avec un autre fournisseur de nom de domaine. J'essaye actuellement LWS mais je ne trouve pas la bonne configuration pour la section environnement.
1677778723676.png
Quelqu'un pourrait-il partager un exemple qui m'aiderait ?
Merci d'avance.