Synology [Tuto] Installer Vaultwarden avec une sauvegarde automatique de la base de données

Statut
N'est pas ouverte pour d'autres réponses.
Il faudrait utiliser la balise code pour que je vérifie si les espaces sont bien mis pour l'indentation ;)


En attendant, supprime toute la partie concernant le backup du yml. Pour être sûr que Vaultwarden fonctionne bien tout seul :)
Si tu utilises Portainer, regarde bien la partie supérieure droite de la fenêtre, un message d'erreur s'y affichera s'il y en a une. Tu peux faire une capture d'écran si tu t'y prends vite :p
 
Re Salut ! J'ai une question petite question j'essaye de regarder de mon coté mais, en cas de pepins pour la restauration cela se passe comment ? Je vois qu'on obtient un ficher de BDD en sqlite3 et des clés mais il y une méthode même approximative ? (Que je me la mette dans un coin on ne sait jamais)
Au niveau de vaulwarden on peut importé des CSV mais je ne vois trop rien de plus
 
  • J'aime
Réactions: MilesTEG
Re Salut ! J'ai une question petite question j'essaye de regarder de mon coté mais, en cas de pepins pour la restauration cela se passe comment ? Je vois qu'on obtient un ficher de BDD en sqlite3 et des clés mais il y une méthode même approximative ? (Que je me la mette dans un coin on ne sait jamais)
Au niveau de vaulwarden on peut importé des CSV mais je ne vois trop rien de plus
Bien vu, c’est une très bonne question.
Je n’ai jamais testé la restauration de ce backup ??
Il faudrait que je teste ça sur une instance temporaire.
La méthode est décrite ici : https://github.com/ttionya/vaultwarden-backup#restore

Dès que j’ai un moment je teste ça.
 
  • J'aime
Réactions: EVO et lugubre
Bonjour,

J'hébergeais déjà Bitwarden depuis un moment, mais il me manquait les notifications Websocket. J'ai un peu galéré mais j'ai réussi (y). merci pour le tuto ;)
 
  • J'aime
Réactions: MilesTEG
Bonsoir,
Il va falloir que je fasse une petite MAJ du tuto pour que les Notifications WebSocket continuent de fonctionner avec la dernière version de Vaultwarden 1.25.1.
Car avec ce tuto, normalement, ça ne fonctionnera plus.
Il faudra aussi modifier dans le docker-compose une variable d'environement pour la configuration SMPT, car celle utilisée est dépréciée.

Rappel : les Notifications WebSocket servent à la synchronisation en direct entre le coffre fort (serveur Vaultwarden), et les applications desktop (pas les mobiles) et les extensions de navigateurs.

Pour les WebSocket Notification, le correctif à appliquer est simple, il faut modifier la partir du script qui écrit le fichier websocket.locations.vaultwarden :

Avant :
Bash:
###########################################...
## Début de la partie de création/modification de fichiers
##
if [ -f $LOC_DIR/websocket.locations.vaultwarden ]; then
  rm $LOC_DIR/websocket.locations.vaultwarden
  part1=1
fi
echo """
location /notifications/hub {
    proxy_pass http://192.168.2.200:$PORT_CONT;
    proxy_set_header Upgrade \$http_upgrade;
    proxy_set_header Connection \"upgrade\";
}

location /notifications/hub/negotiate {
    proxy_pass http://192.168.2.200:$PORT_ACCES;
}
""" >>$LOC_DIR/websocket.locations.vaultwarden
Après :
Bash:
###########################################...
## Début de la partie de création/modification de fichiers
##
if [ -f $LOC_DIR/websocket.locations.vaultwarden ]; then
  rm $LOC_DIR/websocket.locations.vaultwarden
  part1=1
fi
echo """
location /notifications/hub/negotiate {
    proxy_http_version 1.1;
    proxy_set_header \"Connection\" \"\";
   
    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_pass http://$IP_NAS:$PORT_ACCES;
}

location /notifications/hub {
    proxy_http_version 1.1;
    proxy_set_header Upgrade \$http_upgrade;
    proxy_set_header Connection \"upgrade\";

    proxy_set_header Host \$host;
    proxy_set_header X-Real-IP \$remote_addr;
    proxy_set_header Forwarded \$remote_addr;
    proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto \$scheme;
    proxy_pass http://$IP_NAS:$PORT_CONT;
}

""" >>$LOC_DIR/websocket.locations.vaultwarden

Il faudra aussi veiller à ce que le reverse proxy dans DSM pour le domaine de vaultwarden soit configuré ainsi pour les en-têtes personnalisés (il faudra supprimer les lignes qui ne sont pas sur la capture suivante et ajouter ce qui y est) :
1658098185960.png



Pour la configuration du SMTP dans le docker-compose :
Je vous invite à consulter ce lien : https://github.com/dani-garcia/vaultwarden/wiki/SMTP-Configuration

Ce qui change dans le .yml :
YAML:
      # Pour l'envoi d'emails
      # Domains: gmail.com, googlemail.com
      # SMTP_SSL and SMTP_EXPLICIT_TLS are DEPRECIATED, https://github.com/dani-garcia/vaultwarden/wiki/SMTP-Configuration
      # Gmail FullSSL
      - SMTP_HOST=smtp.gmail.com
      - SMTP_PORT=465
      - SMTP_SECURITY=force_tls
      # Gmail StartTLS
      # -  SMTP_PORT=587
      # - SMTP_SECURITY=starttls


Voilà, j'ai pas bien plus de temps pour mettre à jour maintenant le tuto, mais ça viendra ^^ un jour prochain ;)
 
  • J'aime
Réactions: FX Cachem et EVO
Bon, j'ai fait encore une modification dans mon script websocket, afin de restreindre l'accès à la page d'admin aux seules IP LAN et VPN.
Je me rends compte que je n'ai pas non plus modifié le script du tuto depuis le passage à DSM7, car avec ce dernier il a fallu revoir la commande de recherche.

Le script suivant fonctionne avec DSM7 (et DSM6 si on décommente/commente les bonnes lignes) :
Ce qui a changé en plus de la commande de recherche/ajout, c'est surtout les proxy_headers pour le websockets.

Bash:
#!/bin/bash
##==============================================================================================
##                                                                                            ##
##                          Script vaultwarden__Enable_Websocket.sh                           ##
##                                                                                            ##
##          Source : https://gist.github.com/nstanke/3949ae1c4706854d8f166d1fb3dadc81         ##
##                                                                                            ##
##==============================================================================================
##                                                                                            ##
##   Ce script pemet de router ce qui ne peut pas être fait avec le reverse-proxy             ##
##   de DSM (Synology) pour faire fonctionner les notifications Websocket                     ##
##   Doc. vaultwarden :                                                                       ##
##        Route the /notifications/hub endpoint to the WebSocket server, by default           ##
##        at port 3012, making sure to pass the Connection and Upgrade headers.               ##
##        (Note the port can be changed with WEBSOCKET_PORT variable)                         ##
##        https://github.com/dani-garcia/vaultwarden/wiki/Enabling-WebSocket-notifications    ##
##                                                                                            ##
##==============================================================================================
##                                                                                            ##
##                             Principe de Tâche planifier à créer                            ##
##                                                                                            ##
## Il faut lancer régulièrement le script car toutes modifications faites dans l'interface    ##
## graphique du Reverse-Proxy de DSM va modifier le fichier de configuration. Il en va de     ##
## même lorsque le NAS redémarre.                                                             ##
##                                                                                            ##
##==============================================================================================
##                                                                                            ##
##        /!\    Il faut modifier l'adresse IP en ligne 58 par l'IP du NAS    /!\             ##
##                                                                                            ##
##==============================================================================================
##                                                                                            ##
## Paramètres de lancement du script :                                                        ##
## bash /volume1/docker/bitwarden/enable_ws.sh vault.example.com 5555 5556                    ##
##                                                                                            ##
## -- vault.example.com = Nom de domaine de vaultwarden (celui du Reverse Proxy de DSM)       ##
## -- 5555 = Port exposé ROCKET_PORT par Docker (Identique à celui du Reverse Proxy de DSM)   ##
## -- 5556 = Port exposé WEBSOCKET_PORT par Docker                                            ##
##                                                                                            ##
##==============================================================================================

##===========================================================================================================
##                                                                                                         ##
## Ma commande à lancer :                                                                                  ##
## bash /volume1//docker/_Scripts-DOCKER/Bitwarden_RS__Enable_Websocket.sh mon-ndd-a-moi.tld 8001 30120    ##
##                                                                                                         ##
##===========================================================================================================

LOC_DIR="/etc/nginx"
part1=0
part2=0





MY_DOMAIN=$1
PORT_ACCES=$2
PORT_CONT=$3
IP_NAS="192.168.2.200"
echo -e "\n$(date "+%R:%S - ") Script Bitwarden_RS__Enable_Websocket.sh pour activer les Notifications Websockets"

f_affiche_parametre() {
  echo "          bash /volume1/docker/_Scripts-DOCKER/vaultwarden__Enable_Websocket.sh vault.example.com 5555 5556 "
  echo "                           -- vault.example.com = Nom de domaine de vaultwarden (celui du Reverse Proxy de DSM) "
  echo "                           -- 5555 = Port exposé ROCKET_PORT par Docker (Identique à celui du Reverse Proxy de DSM)"
  echo "                           -- 5556 = Port exposé WEBSOCKET_PORT par Docker"
  echo
  echo "La commande que tu dois lancer c'est : ./vaultwarden__Enable_Websocket.sh vtwrdn.pili-serv.ovh 882 3012"
  echo
}


if [ ! $# -eq 3 ]; then
    if [ $# -eq 0 ]; then
        # Aucun paramètre n'a été fourni. On va afficher la liste de ce qui peut être utilisé.
        echo "$(date "+%R:%S - ") Aucun paramètre fourni ! Revoir l'appel du script :"
        f_affiche_parametre
    else
        echo "$(date "+%R:%S - ") Le nombre de paramètres fournis n'est pas correct ! Revoir l'appel du script :"
        f_affiche_parametre
    fi
    echo -e "$(date "+%R:%S - ") ECHEC de lancement du script !!!!!!!!!\n"
    exit 1
fi

echo "$(date "+%R:%S - ") Exécution des commandes..."


#############################################################################################################
## Début de la partie de création/modification de fichiers
##
if [ -f $LOC_DIR/websocket.locations.vaultwarden ]; then
  rm $LOC_DIR/websocket.locations.vaultwarden
  part1=1
fi
echo """
location /notifications/hub/negotiate {
    proxy_http_version 1.1;
    proxy_set_header \"Connection\" \"\";
    
    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_pass http://$IP_NAS:$PORT_ACCES;
}

location /notifications/hub {
    proxy_http_version 1.1;
    proxy_set_header Upgrade \$http_upgrade;
    proxy_set_header Connection \"upgrade\";

    proxy_set_header Host \$host;
    proxy_set_header X-Real-IP \$remote_addr;
    proxy_set_header Forwarded \$remote_addr;
    proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto \$scheme;
    proxy_pass http://$IP_NAS:$PORT_CONT;
}

location /admin {
    # See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
    # auth_basic "Private";
    # auth_basic_user_file /path/to/htpasswd_file;

    # 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
    #include conf.d/.acl.8210faa5-6e80-40c3-9b29-38711430319d.conf*;
    allow 192.168.2.0/24;
    allow 192.168.10.0/24;
    allow 192.168.11.0/24;
    deny all;

    proxy_http_version 1.1;
    proxy_set_header \"Connection\" \"\";

    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_pass http://$IP_NAS:$PORT_ACCES/admin;
}
""" >>$LOC_DIR/websocket.locations.vaultwarden

# Note : avec DSM7, le chemin d'accès du fichier server.ReverseProxy.conf a changé
#         DSM6.2  = /etc/nginx/app.d/server.ReverseProxy.conf
#         DSM7    = /etc/nginx/sites-enabled/server.ReverseProxy.conf
if ! grep -q "websocket.locations.vaultwarden" /etc/nginx/sites-enabled/server.ReverseProxy.conf; then

  # Commandes fonctionnelles avec DSM6.2.x, mais plus avec DSM 7.0 (RC)
  #sed -i "/$1;/ a\ include $LOC_DIR/websocket.locations.vaultwarden;" /etc/nginx/app.d/server.ReverseProxy.conf
  #if nginx -t 2>/dev/null; then synoservicecfg --reload nginx; else exit 1; fi

  # Commande fonctionnelles avec DSM 7 (RC)
  sed -r "s#^([[:blank:]]*server_name[[:blank:]]*${MY_DOMAIN}[[:blank:]]*;[[:blank:]]*)\$#\1\n\n\t\tinclude ${LOC_DIR}/websocket.locations.vaultwarden;#" /etc/nginx/sites-enabled/server.ReverseProxy.conf > /etc/nginx/sites-enabled/server.ReverseProxy.conf.new
  mv /etc/nginx/sites-enabled/server.ReverseProxy.conf.new /etc/nginx/sites-enabled/server.ReverseProxy.conf

  if nginx -t 2>/dev/null; then synosystemctl reload nginx; else exit 1; fi

  part2=1 # Variable pour indiquer que cette partie a été exécutée

fi
##
## Fin de la partie de création/modification de fichiers
#############################################################################################################

if [ $part1 -eq 1 ]; then
  echo "$(date "+%R:%S - ")    -- Le fichier $LOC_DIR/websocket.locations.vaultwarden existait déjà, il a été supprimé puis recréé."
  echo "$(date "+%R:%S - ")    -- On relance nginx."
  if nginx -t 2>/dev/null; then synosystemctl reload nginx; else exit 1; fi
else
  echo "$(date "+%R:%S - ")    -- Le fichier $LOC_DIR/websocket.locations.vaultwarden n'existait pas, il a été créé."
fi
if [ $part2 -eq 1 ]; then
  echo "$(date "+%R:%S - ")    -- !!!!!! --->  La modification dans le fichier /etc/nginx/sites-enabled/server.ReverseProxy.conf n'existait pas. Elle a été écrite."
  echo "$(date "+%R:%S - ")    -- !!!!!! --->  Le fichier /etc/nginx/sites-enabled/server.ReverseProxy.conf a du être réinitialisé après un reboot ou lors d'une modification du reverse-proxy dans DSM."
else
  echo "$(date "+%R:%S - ")    -- La modification du fichier /etc/nginx/sites-enabled/server.ReverseProxy.conf a déjà été effectuée lors d'une précédente exécution. Aucune modification n'est donc nécessaire."
fi

echo "$(date "+%R:%S - ") Script vaultwarden__Enable_Websocket.sh terminé"

# Pour vérification
#cp /etc/nginx/websocket.locations.vaultwarden /volume1/docker/
#cp /etc/nginx/sites-enabled/server.ReverseProxy.conf /volume1/docker/

exit


Il est a noter que pour la restriction des IP LAN & VPN pour la page admin, vous pouvez chercher en SSH quel fichier DSM à généré pour un profle de contrôle d'accès.
1658183260323.png

Maintenant, votre page admin ne sera plus accessible en-dehors de votre LAN, à moins d'y accéder via un serveur VPN installé sur le NAS ou sur une autre machine du réseau.
Moi c'est via le réseau 192.168.10.X et 192.168.11.X en fonction du type de VPN utilisé (L2TP, OpenVPN, etc...).


Voilà voilà

J'ai aussi le projet de remettre en forme correctement ce tuto, peut-être sur GitHub, comme ça la modification sera plus simple pour moi.
++
 
  • J'aime
Réactions: aware2
Merci pour le tuto, il fonctionne super bien.
J'ai pas activé le websocket car c'est pas 100% nécessaire dans mon cas, je suppose que cela viendra peut-être de base dans les prochaines version de vaultwarden.
 
  • J'aime
Réactions: MilesTEG
Merci pour le tuto, il fonctionne super bien.
J'ai pas activé le websocket car c'est pas 100% nécessaire dans mon cas, je suppose que cela viendra peut-être de base dans les prochaines version de vaultwarden.
De rien.
Les notifications websocket c’est pour que les applications desktop et les extensions navigateur de Bitwarden se synchronisent toutes seules avec le serveur Vaultwarden.
Tout dépend de l’utilisation que tu fais de Vaultwarden ? mais c’est fonctionnel si tu les actives. Par contre ca ne pourra pas venir plus tard puisque c’est déjà là.

En revanche, la synchronisation mobile c’est autre chose, c’est pas implémenté encore… peut être un jour…
Là il faut lancer cette synchronisation manuellement en lançant Bitwarden sur le téléphone. Sinon quand tu vas remplir une champ de mot de passe avec un que tu viens de créer sur le serveur, il n’apparaîtra pas puisque l’application ne se synchronise pas toute seule.
 
  • J'aime
Réactions: Snulort
Tout dépend de l’utilisation que tu fais de Vaultwarden ? mais c’est fonctionnel si tu les actives. Par contre ca ne pourra pas venir plus tard puisque c’est déjà là.
Pour le moment je fais la synchro manuellement car il y a que moi sur Vault mais je vais rajouter une org et inviter la famille et la la synchro auto sera intéressante.
 
  • J'aime
Réactions: MilesTEG
Merci pour la MAJ ! Niveau websocket j'ai cahngé le reverse proxy et mis un Nging Proxy Manager qui fait bien le taf. J'avait trouvé une config sur internet et la je viens de remplacer par ta config .... je t'avouerais que je n'ai pas assez de connaissance la dedans pour juger de la dif mais en tout cas sa fonctionne nickel.
 
  • J'aime
Réactions: MilesTEG
Merci pour la MAJ ! Niveau websocket j'ai cahngé le reverse proxy et mis un Nging Proxy Manager qui fait bien le taf. J'avait trouvé une config sur internet et la je viens de remplacer par ta config .... je t'avouerais que je n'ai pas assez de connaissance la dedans pour juger de la dif mais en tout cas sa fonctionne nickel.
Bonjour 👋🏻
Merci 🙏🏻
En ce qui concerne les entrées du reverse proxy , je n’utilise plus celui de dsm mais swag en docker.
Je posterais le .conf dans la journée pour ceux qui voudraient utiliser un RP alternatif 😉
 
Comme promis, voilà le vaultwarden.subdomain.conf que j'utilise.

Avant le .conf lui-même, il faut que j'explique plusieurs choses :
  • La première, c'est que j'utilise les thèmes de https://theme-park.dev/ pour la plupart de me services. J'ai donc installé le MOD pour SWAG, ainsi j'ai tous les thèmes dans le dossier de nginx : .../docker/swag/config/www/theme-park/...
  • La seconde, c'est que je limite l'accès à la partie administration aux seules IP LAN via l'inculusion d'un fichier ACL.IP-LAN.conf qui contient les restrictions d'accès (voir le fichier plus bas).
  • Une 3ème : j'utilise le MOD de swag-maxmind qui permet de bloquer ou autoriser les IP en fonction de leur provenance. C'est un peu redondant avec ce que peut faire les parefeu des Syno (NAS et routeur), mais dans le doute où le pare-feu se met à déconner... 😅 C'est l'include du fichier maxmind-geoblock_and_LAN.conf.


NGINX:
## 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 vaultwarden.*;
    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;
        # THEME.PARK - Début
        set $app bitwarden;
        set $theme dracula;
        # You can also do: $scheme://$host/themepark
        set $tp_domain vaultwarden.my-domaine-name.tld/themepark;  
        proxy_set_header Accept-Encoding ""; 
        sub_filter
        '</head>'
        '<link rel="stylesheet" type="text/css" href="https://$tp_domain/css/base/$app/$app-base.css">
        <link rel="stylesheet" type="text/css" href="https://$tp_domain/css/theme-options/$theme.css">
        </head>';
        sub_filter_once on;
        # THEME.PARK - Fin
    
        # 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 ~ (/vaultwarden)?/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;
        
        # THEME.PARK - Début
        set $app bitwarden;
        set $theme dracula;
        # You can also do: $scheme://$host/themepark
        set $tp_domain vaultwarden.my-domaine-name.tld/themepark;  
        proxy_set_header Accept-Encoding ""; 
        sub_filter
        '</head>'
        '<link rel="stylesheet" type="text/css" href="https://$tp_domain/css/base/$app/$app-base.css">
        <link rel="stylesheet" type="text/css" href="https://$tp_domain/css/theme-options/$theme.css">
        </head>';
        sub_filter_once on;
        # THEME.PARK - Fin
        # 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 ~ (/vaultwarden)?/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 ~ (/vaultwarden)?/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;
    }
    # Ceci n'est là que pour n'autoriser en accès que les .css
    location ~* themepark/css/.*/.*\.css$ {
        # GeoIP Blocking with Maxmind Docker-MOD
        include /config/nginx/maxmind-geoblock_and_LAN.conf;
        alias /config/www/;
        try_files $uri $uri/ /index.html;
    }
    location = /themepark/ {
        # GeoIP Blocking with Maxmind Docker-MOD
        include /config/nginx/maxmind-geoblock_and_LAN.conf;
        return 301 $scheme://$http_host/themepark;
    }
    # Là on refuse tout accès aux autres fichiers
    location = /themepark {
        # GeoIP Blocking with Maxmind Docker-MOD
        include /config/nginx/maxmind-geoblock_and_LAN.conf;
        root /config/www/default;
        try_files $uri /404.html;
    }
}

Le fichier ACL.IP-LAN.conf :
NGINX:
## ACL.IP-LAN.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;

Et pour faire bonne mesure, voilà le proxy.conf et le ssl.conf
NGINX:
## Version 2022/09/01 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/proxy.conf.sample

# Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

# Proxy Connection Settings
proxy_buffers 32 4k;
proxy_connect_timeout 240;
proxy_headers_hash_bucket_size 128;
proxy_headers_hash_max_size 1024;
proxy_http_version 1.1;
proxy_read_timeout 240;
proxy_redirect http:// $scheme://;
proxy_send_timeout 240;

# Proxy Cache and Cookie Settings
proxy_cache_bypass $cookie_session;
#proxy_cookie_path / "/; Secure"; # enable at your own risk, may break certain apps
proxy_no_cache $cookie_session;

# Proxy Header Settings
proxy_set_header Connection $connection_upgrade;
proxy_set_header Early-Data $ssl_early_data;
proxy_set_header Host $host;
proxy_set_header Proxy "";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Method $request_method;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Real-IP $remote_addr;

# add_header X-Robots-Tag "none, nosnippet, noarchive";


NGINX:
## Version 2022/08/05 - Changelog: https://github.com/linuxserver/docker-baseimage-alpine-nginx/commits/master/root/defaults/ssl.conf.sample

### Mozilla Recommendations
# generated 2022-08-05, Mozilla Guideline v5.6, nginx 1.17.7, OpenSSL 1.1.1k, intermediate configuration
# https://ssl-config.mozilla.org/#server=nginx&version=1.17.7&config=intermediate&openssl=1.1.1k&guideline=5.6

ssl_certificate /config/keys/cert.crt;
ssl_certificate_key /config/keys/cert.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;

# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
ssl_dhparam /config/nginx/dhparams.pem;

# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
#add_header Strict-Transport-Security "max-age=63072000" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;

# verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /config/keys/cert.crt;

# Optional additional headers
#add_header Cache-Control "no-transform" always;
#add_header Content-Security-Policy "upgrade-insecure-requests; frame-ancestors 'self'";
#add_header Permissions-Policy "interest-cohort=()";
#add_header Referrer-Policy "same-origin" always;
#add_header X-Content-Type-Options "nosniff" always;
#add_header X-Frame-Options "SAMEORIGIN" always;
#add_header X-UA-Compatible "IE=Edge" always;
add_header X-XSS-Protection "1; mode=block" always;

# add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
add_header X-Robots-Tag "none, nosnippet, noarchive";
 
Bonjour à tous,

Un grand merci à MilesTEG1 pour le super tuto et aussi à tous les autres. (y)

J'ai pour le moment réalisé toutes les étapes jusque la création des conteneurs sans soucis mais lorsque je souhaite invité un nouvel utilisateur, j'ai un soucis avec l'envoie d'email avec l'erreur suivante :
Capture d’écran 2022-11-11 à 21.22.11.png

Code:
[2022-11-11 21:22:02.720][vaultwarden::mail][ERROR] SMTP Connection error: failed to lookup address information: Temporary failure in name resolution

Voici ma configuration :
Capture d’écran 2022-11-11 à 19.59.44.png

J'ai bien généré un mdp pour l'application du fait de la 2FAI, comme lu dans les post précédent.

J'ai remarqué que dans l'onglet diagnostic qu'il n'avait pas accès à internet :
Capture d’écran 2022-11-11 à 21.18.28.png

Pensez-vous que cela peut-être à l'origine de mon problème ?

Merci pour votre aide.
 
J'ai suivis le tuto en utilisant le docker-compose.yml par portainer.

Le réseau vaultwarden_network a été créé par portainer.
 
Statut
N'est pas ouverte pour d'autres réponses.