[Tuto] Installer SWAG en Docker ( Reverse Proxy )

Nincha

Padawan
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:

Jfamiens

Nouveau membre
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: 17
Dernière édition:

MilesTEG1

Modérateur
Membre du personnel
@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

Nouveau membre
@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)!
 

MilesTEG1

Modérateur
Membre du personnel
Oh ! Je ne sais pas pourquoi ça ne fonctionne pas comme prévu... je ne maitrise pas l'aspect LXC docker 😅
 

Jfamiens

Nouveau membre
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:

yow

Nouveau membre
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
 
Haut Bas