##============================================================================================== ## ## ## Fichier docker-compose.yml pour Vaultwarden seulement ## ## Révision du fichier : v4.0 ## ## ## ## Voir tuto : https://www.forum-nas.fr/viewtopic.php?f=56&t=15341&p=99007#p99007 ## ## ## ##============================================================================================== ## ## ## Attention, avec ce fichier, il faut avoir créer le réseau "vaultwarden_network" avant de ## ## créer les conteneurs. ## ## ## ## La mise en place de fail2ban se fera avec un docker-compose dédié. ## ## ## ##============================================================================================== ## ## ## 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) ## ## ## ##============================================================================================== ## ## ## Ajout des Notifications Websocket ## ## ## ## Pour qu'elles'fonctionnent, il faut configurer le reverse-proxy correctement. ## ## Pour celui de DSM, il n'est malheureusement pas possible de configurer les ## ## redirections /notifications/hub vers le serveur WebSocket ni celles vers le port normal ## ## /notifications/hub/negotiate ## ## Voir cet article pour tout ce qui n'est pas possible via l'interface de DSM : ## ## https://github.com/dani-garcia/vaultwarden/wiki/Enabling-WebSocket-notifications ## ## ## ## Dès lors, il faut ruser et passer par l'exécution d'un petit script qui va créer un ## ## fchier ws.locations contenant les modifications précédentes, et qui va écrire une ## ## ligne dans le fichier /etc/nginx/app.d/server.ReverseProxy.conf pour inclure le ## ## fichier ws.locations au niveau de la section concernant le nom de domaine pour ## ## vaultwarden. ## ## Comme cela, il n'est pas nécessaire de passer par le changement de reverse-proxy, assez ## ## complexe à mettre en oeuvre... ## ## ## ## Le script est : vaultwarden__Enable_Websocket.sh ## ## ## ## Il faudra la lancer régulièrement et à chaque redémarrage du NAS, via deux tâches ## ## plannifiées dédiées, en donnant 3 paramètres au fichier : ## ## - le nom de domaine de vaultwarden ## ## - le port HTTP exposé (donc pas l'interne du conteneur) pour l'interface graphique ## ## - le port websocket exposé (donc pas l'interne du conteneur) ## ## Voir les commentaires de ce fichier vaultwarden__Enable_Websocket.sh pour plus ## ## d'explications. ## ## ## ##============================================================================================== --- version: "2.4" services: vaultwarden: image: vaultwarden/server:latest # https://github.com/dani-garcia/vaultwarden # https://github.com/dani-garcia/vaultwarden/wiki container_name: vaultwarden networks: - vaultwarden_network environment: # Utiliser la commande (en SSH) : id NOM_UTILISATEUR - PUID=1000 - PGID=100 - TZ=Europe/Paris # Pour l'envoi d'emails - SMTP_HOST=XXxxXX - SMTP_FROM=XXxxXX - SMTP_FROM_NAME=BlaBla - SMTP_PORT=XXxxXX - SMTP_SSL=true - SMTP_USERNAME=XXxxXX - SMTP_PASSWORD=XXxxXX - INVITATION_ORG_NAME=Vaultwarden [Votre Nom, pseudo...] # Permet de spécifier un nom d'application pour les invitations d'organisation # Nécessaire pour activer le 2FA pour la connexion à notre serveur Vaultwarden # Il est possible de spécifier un port de connexion dans l'URL. Le https:// est obligatoire. # Pour cette option, il est donc OBLIGATOIRE d'avoir fait le nécessaire pour avoir du HTTPS (certificats, reverse-proxy, ...) - DOMAIN=XXxxXX # Pour enregistrer les log avec un niveau particulier - LOG_FILE=/data/vaultwarden.log - LOG_LEVEL=warn - EXTENDED_LOGGING=true # je n'aime pas les indices pour les mots de passe... - SHOW_PASSWORD_HINT=false # Pour activer la console d'administation, accessible via : https://mon.domaine.tld/admin/ # Voir détails ici : https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page # /!\ # /!\ N'importe qui pourra accéder à la page de connexion, alors blinder le token d'amdin ci-dessous (64 caractères pour moi) ! # /!\ Il est de plus TRÈS important d'avoir ACTIVÉ le HTTPS avant l'activation de cette option. # /!\ # Je conseille de ne l'activer qu'en cas de nécessité, et de la désactiver après. # Pour désactiver, il suffit de commenter la ligne ci-dessous. - ADMIN_TOKEN=XXxxXX # À noter : # La première fois que vous enregistrez un paramètre dans la page d'administration, 'config.json' sera généré # dans votre 'DATA_FOLDER'. Les valeurs de ce fichier auront priorité sur les valeurs 'environnement'. - SIGNUPS_ALLOWED=false # Fait en sorte que les inscriptions soient bloquées, seul l'admin pourra inviter # des utilisateurs avec un envoi d'email depuis la console d'administation - WEBSOCKET_ENABLED=true # Active les WebSocket notifications (Nécessite la configuration du reverse-proxy) # Durant le nombre importants d'essais, j'en suis venu à laisser le port par défaut # pour le WEBSOCKET_PORT. Il est possible que ça fonctionne avec un port différent. # Il faudra alors décommenter la ligne suivante, et changer le port exposé plus bas. #- WEBSOCKET_PORT=3012 # Par défaut = 3012 # Pour activer la récupération des icones des IP LAN, il faut mettre sur false la variable ICON_BLACKLIST_NON_GLOBAL_IPS - ICON_BLACKLIST_NON_GLOBAL_IPS=false # Par défaut = true # On défini ici quelques chemins de dossiers qu'il faudra créer (pas sur que le conteneur les crées lui-même...) - ICON_CACHE_FOLDER=data/icon_cache - ATTACHMENTS_FOLDER=data/attachments - SENDS_FOLDER=data/sends labels: - "com.centurylinklabs.watchtower.enable=true" volumes: - "/volume1/docker/vaultwarden/vaultwarden-data/:/data/" ports: - XXxxXX:3012 # Choisir un port libre pour le websocket - XXxxXX:80 # Choisir un port libre pour l'interface WEB restart: unless-stopped networks: vaultwarden_network: external: name: vaultwarden_network