Synology [Tuto] Installer Vaultwarden avec une sauvegarde automatique des données (nouvelle version)

Personnellement, le coffre se verrouille a chaque fermeture du navigateur de mon pc fixe, mais via un PIN, et non via le mot de passe maitre
Sur mon mac c’est via touch-ID vu que j’ai le capteur d’empreinte.
Sur Windows c’est via Windows Hello donc via le code pin de Windows car j’ai pas de capteur d’empreinte.
 
Ce que tu souhaites me semble déjà présent :
Pas vraiment. J'ai réglé à l'instant le délai d'expiration du coffre à 30 minutes puis j'ai fermé le navigateur. Lorsque je le relance il faut débloquer le coffre à nouveau alors qu'il s'est écoulé une minute à peine. Quelque soit le réglage que l'on a choisi il faut déverrouiller le coffre après le lancement du navigateur.
Elle fait quoi la combinaison CMD+Shift+Y ?
Elle déverrouille le coffre dans le navigateur après avoir demandé ton mot de passe.
 
Bonjour à tous,

Je suis nouveau ici et je suis néophyte (mais j'essaye d'apprendre et de comprendre :)).

J'ai essayé de suivre ce tutoriel, mais lorsque je suis à l'étape de déploiement via Portainer, j'obtient l'erreur suivante :
failed to deploy a stack: time="2023-06-27T08:57:22Z" level=warning msg="network vaultwarden_network: network.external.name is deprecated. Please set network.name with external: true" Container vaultwarden Creating Container vaultwarden Created Container vaultwarden_backup_ttionya Creating Container vaultwarden_backup_ttionya Created Container vaultwarden Starting Container vaultwarden Started Container vaultwarden Waiting Container vaultwarden Error dependency failed to start: container vaultwarden is unhealthy
Il y aurait un problème avec le réseau crée (via Portainer) et un autre avec le dossiers (crée via ligne de commande)?

Merci d'avance pour votre aide.
 
msg="network vaultwarden_network: network.external.name is deprecated. Please set network.name with external: true"
Comment est configurée la partie networks dans le compose.yaml ? Chez moi on trouve cela :
YAML:
networks:
  vault_bridge:
    name: vault_bridge
    external: true
 
Dernière édition:
@elans.doublet Ho ! Je n'ai jamais eu ce genre d'erreur...
Le fichier docker-compose va faire créer le réseau s'il n'existe pas.
Mais il se peut qu'une récente MAJ de Portainer fasse que ceci ne soit plus possible, auquel cas, il faudra créer au préalable le réseau...
Je vais voir si ça fonctionne sur une autre instance docker, vierge de toute installation de Vaultwarden.
 
Bon et bien chez moi ça fonctionne :
1687880846570.png
Je précise que j'ai créé de 0 le conteneur.

Dans la dernière partie, celle du réseau, tu as bien ceci (ou quelque chose qui s'en rapproche) ? :
YAML:
networks:
  vaultwarden_network:
    name: vaultwarden_network
    ipam:
      driver: default
      config:
        - subnet: 172.21.0.0/16
          ip_range: 172.21.0.0/24
          gateway: 172.21.0.1
 
Bonjour MilesTEG1 et CyberFR,

Merci déjà d’avoir pris le temps de me répondre.
Je suis désolé, de mon côté, je ne suis pas souvent disponible, c’est pourquoi je ne réponds que maintenant.
Avec vos réponses, j’ai un peu avancé sur mon problème.

Dans mes premières tentatives, j’avais laissé tel quel le fichier docker-compose.yml
YAML:
networks:                                      
  vaultwarden_network:
    external:                                  
      name: vaultwarden_network
Selon ton conseil je l’ai modifier avec ceci :
YAML:
networks:
  vaultwarden_network:
    name: vaultwarden_network
    ipam:
      driver: default
      config:
        - subnet: 172.21.0.0/16
          ip_range: 172.21.0.0/24
          gateway: 172.21.0.1

Et l’erreur "msg="network vaultwarden_network: network.external.name is deprecated…” ne s’affiche plus quand j'essaye le déploiement via Portainer.
Premier problème résolu :) !!!

Par contre, j'ai toujours un/des problèmes lors du déploiement. J’ai maintenant ce message d’erreur.
failed to deploy a stack: Container vaultwarden Creating Container vaultwarden Created Container vaultwarden_backup_ttionya Creating Container vaultwarden_backup_ttionya Created Container vaultwarden Starting Container vaultwarden Started Container vaultwarden Waiting Container vaultwarden Error dependency failed to start: container vaultwarden is unhealthy
J’ai essayé de repartir de zéro en supprimant tous les dossiers et fichiers contenus dans mon dossier /volume1/docker
J’ai recrée ceux-ci avec les lignes de commandes indiquées au point 4.3.1- Création des dossiers et du réseau du tuto.

Merci d’avance pour vos conseils.

Pour info :
  • DSM 7.2-64570
  • Paquet Docker : Container Manager 20.10.23-1413
  • Portainer (Community Edition 2.18.3)
 
Si il y a ce message c’est que Vaultwarden est lancé mais il est en unhealthy. Il faut savoir pourquoi il n’est pas healthy.
Que disent les log du Vaultwarden ?
 
Tu parle bien de ce fichier ?
/volume1/docker/vaultwarden/vaultwarden-data/vaultwarden.log
Car celui-ci est vide.

De plus, les conteneurs semblent s’être téléchargés, mais pas lancés.

J’affirme cela car dans les notifications de Portainer, j’en ai une avec plusieurs lignes comme cela :
1e5ce1e1d0de Downloading [==============================================> ] 13.15MB/14.26MB
1e5ce1e1d0de Extracting [==================================================>] 14.26MB/14.26MB
Et dans la liste d’Images de Portainer, j’ai :

1688504451515.png

Ils s’affichent également dans Docker DSM, es-ce que je peux essayer de les exécuter depuis là ou c’est une mauvaise idée?
 
Je ne sais pas ce qu'en pensera @MilesTEG1 mais tu te lances dans deux tâches en parallèle qui ne sont pas triviales, Portainer et Vaultwarden. Il aurait peut être mieux valu les scinder afin de les tester et de les maîtriser l'une après l'autre.
 
@elans.doublet Je suis d'accord avec @CyberFR : il vaudrait mieux d'abord finaliser portainer, et maitriser un peu son utilisation avant de te lancer dans l'installation de Vaultwarden.
Cela dit, d'après ce que tu montres, tes conteneurs ne sont tout simplement pas créer...
Il doit y avoir une erreur dans ton fichier docker-compose, qui ne ressort malheureusement pas distinctement dans les logs...
Il faut que tu vérifies l'indentation de tout ce que tu as mis dedans.

Tu pourrais aussi essayer de l'installer via la commande docker-compose en SSH.
Ou mieux, si tu as DSM 7.2, via Container Manager.
 
Merci à vous deux pour vos retours et votre patience à mon égare.

Concernant la pertinence d’utiliser Portainer, je n’a essayé que de suivre les recommandations faite au point 3. Préambule, prérequis et explications et j’ai suivi le tuto d’installation d’EVOTk [Tuto] Installer Portainer en Docker sur un NAS Synology .

J’ai l’impression que Portainer fonctionne normalement et je ne l’ai installé et utilisé que pour installer Vaultwarden selon ton tutoriel.

Cela dit, d'après ce que tu montres, tes conteneurs ne sont tout simplement pas créer...
Effectivement c’est bien ce qu’il me semble, mais je ne comprend pas pourquoi.

Il y a peut-être effectivement un problème avec mon fichier docker-compose, mais là aussi je ne vois pas quoi.
Je l’ai édité avec BBEdit sous macOS (j’ai aussi essayé via l’éditeur de texte de DSM, avec le même résultat).

Voici mon fichier docker-compose (j’ai remplacé mes données perso par xxxx) :


YAML:
##==============================================================================================
##                                                                                            ##
##         Fichier docker-compose.yml pour Vaultwarden avec ttionya/vaultwarden-backup        ##
##                                 Révision du fichier : v5.1                                 ##
##                                                                                            ##
##==============================================================================================
##                                                                                            ##
## 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.                                                                            ##
##                                                                                            ##
##==============================================================================================
#
# Tuto : https://www.forum-nas.fr/threads/tuto-installer-vaultwarden-avec-une-sauvegarde-automatique-des-donn%C3%A9es-nouvelle-version.20614/
#
---
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=XXXX
      - PGID=XXX
      - TZ=Europe/Paris
      
      # 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=XXXX.XXXX.XX
      - SMTP_PORT=465
      - SMTP_SECURITY=force_tls
      # Gmail StartTLS
      # - SMTP_PORT=587
      # - SMTP_SECURITY=starttls
      - SMTP_USERNAME=xxxx@xxxx.xx
      - SMTP_PASSWORD=XXXXXXXXXXXX

      - SMTP_FROM=xxxx@xxxx.xx
      - SMTP_FROM_NAME=Vaultwarden

      - 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=ndd.tld

      # Pour enregistrer les log avec un niveau particulier
      - LOG_FILE=/data/vaultwarden.log
      - LOG_LEVEL=warn
      - EXTENDED_LOGGING=true

      # 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.
      # L'utilisation d'Argon2 est recommandée, voir ici : https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token
      # 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=true   # 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’administration

      - 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 icônes 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
      
      ###############################################
      # Nouveautés v5.1 : variables pour la sécurité
      ## Nombre de secondes, en moyenne, entre les demandes de connexion à partir de la même adresse IP avant que la limitation de débit n'entre en vigueur.
      - LOGIN_RATELIMIT_SECONDS=60
      ## Autoriser une rafale de requêtes jusqu'à cette taille, tout en maintenant la moyenne indiquée par `LOGIN_RATELIMIT_SECONDS`.
      ## Notez que cela s'applique à la fois à la connexion et au 2FA, il est donc recommandé d'autoriser une taille de rafale d'au moins 2.
      - LOGIN_RATELIMIT_MAX_BURST=5

      ## Nombre de secondes, en moyenne, entre les demandes de connexion d'administrateur à partir de la même adresse IP avant que la limitation de débit n'entre en vigueur.
      - ADMIN_RATELIMIT_SECONDS=60
      ## Autoriser une rafale de requêtes jusqu'à cette taille, tout en maintenant la moyenne indiquée par `ADMIN_RATELIMIT_SECONDS`.
      - ADMIN_RATELIMIT_MAX_BURST=3

      ## Définissez la durée de vie des sessions d'administration sur cette valeur (en minutes).
      - ADMIN_SESSION_LIFETIME=20
      
      ## Contrôle si les utilisateurs peuvent définir des indices de mot de passe. Ce paramètre s'applique globalement à tous les utilisateurs.
      - PASSWORD_HINTS_ALLOWED=false
      ## Contrôle si un indice de mot de passe doit être affiché directement dans la page Web si le service SMTP n'est pas configuré.
      ## Non recommandé pour les instances accessibles au public car cela fournit un accès non authentifié à des données potentiellement sensibles.
      - SHOW_PASSWORD_HINT=false

      ## Nombre de minutes à attendre avant qu'une connexion compatible 2FA soit considérée comme incomplète, entraînant une notification par e-mail.
      ## Une connexion 2FA incomplète est celle où le bon ## le mot de passe principal a été fourni mais l'étape 2FA requise n'a pas été effectuée,
      ## ce qui indique potentiellement une compromission du mot de passe principal.
      ## Réglez sur 0 pour désactiver cette vérification.
      ## Ce paramètre s'applique globalement à tous les utilisateurs.
      - INCOMPLETE_2FA_TIME_LIMIT=2
      ###############################################
      
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

    volumes:
      - "/volume1/docker/vaultwarden/vaultwarden-data/:/data/"
    ports:
      - xxxx:3012   # Choisir un port libre pour le websocket
      - xxxx:80     # Choisir un port libre pour l'interface WEB
    restart: unless-stopped

  vaultwarden_backup_ttionya:     # Voir : https://github.com/ttionya/vaultwarden-backup
    image: ttionya/vaultwarden-backup:latest
    container_name: vaultwarden_backup_ttionya
    networks:
      - vaultwarden_network
    
    restart: always
    
    depends_on:
      vaultwarden:
        condition: service_healthy
    
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    
    volumes:
      - /volume1/docker/vaultwarden/vaultwarden-data:/data
      # Chemin d'accès pour stocker le backup et la configuration rclone, voir https://github.com/ttionya/vaultwarden-backup
      - /volume1/docker/vaultwarden/vaultwarden-backup_ttionya/config:/config
      - /volume1/docker/vaultwarden/vaultwarden-backup_ttionya/rclone_backup:/rclone_backup

    environment:
      - DATA_DIR=/data                    # Dossier de données de Vaultwarden monté avec les volumes
      - RCLONE_REMOTE_NAME=Backup_Syno    # Nom de la config rclone utilisée (voir note plus bas)
      - RCLONE_REMOTE_DIR=/rclone_backup/ # Dossier qui doit monté avec les volumes
      
      # Utiliser soit SCHEDULE soit INTERVAL (ce dernier en sec)
      # Pour SCHEDULE : https://crontab.guru/#0_22_*_*_*
      # Dans la ligne suivante, on programme l'exécution tous les jours à 22h
      - CRON=0 22 * * *
      - ZIP_ENABLE=TRUE
      - ZIP_PASSWORD=WHEREISMYPASSWORD?
      - ZIP_TYPE=7z
      #- BACKUP_FILE_DATE_SUFFIX=--%Hh%Mm%Ss
      - BACKUP_FILE_DATE=%d-%m-%Y--%Hh%Mm%Ss
      - BACKUP_KEEP_DAYS=7
      # - MAIL_SMTP_ENABLE=FALSE
      # - MAIL_SMTP_VARIABLES=''
      # - MAIL_TO=''
      # - MAIL_WHEN_SUCCESS='TRUE'
      # - MAIL_WHEN_FAILURE='TRUE'
      - TIMEZONE=Europe/Paris
      
      #############################################
      # Note à propos de la configuration de rclone
      #############################################
      # Si vous voulez faire une sauvegarde locale, il faut juste placer le fichier rclone.conf dans le dossier ../config/rclone/
      # Dans ce fichier vous trouverez ceci :
      #          [Backup_Syno]
      #          type = local
      #
      # Il faudra remplacer Backup_Syno par un autre nom au besoin.
      # Ce fichier est donc prévu pour une sauvegarde locale.
      # Pour configurer d'autres types de sauvegarde, il faut lancer la configuration de rclone avec cette commande :
      # docker run --rm -it -v /volume1/docker/vaultwarden/vaultwarden-backup_ttionya/config:/config ttionya/vaultwarden-backup:latest rclone config


networks:
  vaultwarden_network:
    name: vaultwarden_network
    ipam:
      driver: default
      config:
        - subnet: 172.21.0.0/16
          ip_range: 172.21.0.0/24
          gateway: 172.21.0.1

Tu pourrais aussi essayer de l'installer via la commande docker-compose en SSH.
Ou mieux, si tu as DSM 7.2, via Container Manager.
Je vais essayer tes recommandations en commençant par SSH.
 
C’est quand même étrange… ton docker compose me semble dénué d’erreurs .
Essaye de ne faire que Vaultwarden, en virant complètement la partie du backup.
Les ports que tu as choisis sont-ils bien dispo sur le nas ? Moi j’ai laissé le 3012 mais j’ai mis genre 8080 pour le port 80, car il est déjà pris.
 
Bonjour MilesTEG1

Nickel ton nouveau tuto.
Je vois que la nouvelle version de Vaultwarden, 1.29.0, indique : WebSocket notifications now work via the default HTTP port. No need for WEBSOCKET_ENABLED and a separate port anymore.
https://github.com/dani-garcia/vaultwarden/releases

J'ai pas update encore, mais du coup, plus besoin de la partie Websocket et du script ?
 
Bonjour MilesTEG1

Nickel ton nouveau tuto.
Je vois que la nouvelle version de Vaultwarden, 1.29.0, indique : WebSocket notifications now work via the default HTTP port. No need for WEBSOCKET_ENABLED and a separate port anymore.
https://github.com/dani-garcia/vaultwarden/releases

J'ai pas update encore, mais du coup, plus besoin de la partie Websocket et du script ?
Ça se pourrait bien en effet.
Je n’ai pas encore eu le temps d’essayer leur nouveau .conf pour nginx.
Mais oui je pense que la bidouille du websocket pour dsm et la partie du .conf nginx ne sont plus utiles.
Je ne sais pas quand j’aurais le temps de regarder, si certains se sentent l’âme aventurière 😜
 
Yep, j'attends toujours un peu quelques jours quand une nouvelle update sort, je testerai surement la semaine prochaine, ou à la 1.29.1 ;)
 
De toutes manières, le support du websocket sur le port 3012 est maintenu encore un moment :)
Mais il est sûr qu'à terme, il faudra revoir la configuration.
Je ferais une MAJ du tuto dès que j'aurais eu le temps de tester la nouveauté.
 
Petite MAJ à venir.
J'ai testé la nouvelle version qui n'a plus besoin de tout le tralala de configuration pour les notifications websockets.
Il faudra des cobayes pour valider la méthode avec le reverse proxy de DSM.