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

Statut
N'est pas ouverte pour d'autres réponses.
Voilà, mise à jour pour le nouveau nom de l'image faite !
J'en ai profité pour versionné les fichiers, et le tuto aussi.

J'essaye de faire un tuto fail2ban plus tard.
 
Merci beaucoup MilesTEG1 pour ce tuto :)
Aujourd'hui, j'utilise le Bitwarden officiel. Déjà en dehors d'héberger en local la base de données, quels sont les différences avec Vaultwarden ?
De plus, avec Vaultwarden, on peut utiliser les extensions de navigateur ?!
 
Alandil a dit:
De plus, avec Vaultwarden, on peut utiliser les extensions de navigateur ?!

Vaultwarden est 100% compatible avec les appli bitwarden navigateur/mobile, ....
Certains fonctions payants de Bitwarden sont débloqué dans Vaultwarden ( partage de coffre, .. ) , mais j'utilise également la version officielle. MilesTEG1 pourra surement nous en dire plus :)
 
Pour moi le gros avantage de Vaultwarden (ex-Bitwarden_RS), c'est qu'on gère soit-même le coffre-fort de mot de passe, et que ce dernier est sur notre serveur perso !
Nos données ne transitent et ne sont pas stockées sur un serveur qui ne nous appartient pas.
Cela engendre par contre quelques contraintes dont il faut avoir connaissance :
  • Il faut avoir un serveur perso (NAS, ou autre), de préférence chez soi
  • Il faut bien sécuriser son serveur (parefeu etc...)
  • Il faut s'y connaître un petit peu pour installer Vaultwarden, et donc connaître des rudiments de Docker.

Sinon EVOTk a raison il y a quelques fonctionnalités dipsonibles dans Vaultwarden qui ne le sont que dans la version premium de Bitwarden.
On peut par exemple faire des Orgainsations et Collections et donc partager des mots de passe entre plusieurs comptes (il m'a fallu du temps pour comprendre comment ça fonctionne).
Il est détaillé ici ce qui est inclus ou pas : https://github.com/dani-garcia/vaultwarden/wiki#supported-features
Après comme je n'ai jamais utilisé la version officielle... que ce soit en auto-hébergement (car trop la misère à installer, et beaucoup trop de conteneurs lancés), ou la version hébergée par Bitwarden, je ne saurais dire davantage ;)

:geek:
 
EVOTk a dit:
Alandil a dit:
De plus, avec Vaultwarden, on peut utiliser les extensions de navigateur ?!

Vaultwarden est 100% compatible avec les appli bitwarden navigateur/mobile, ....
Certains fonctions payants de Bitwarden sont débloqué dans Vaultwarden ( partage de coffre, .. ) , mais j'utilise également la version officielle. MilesTEG1 pourra surement nous en dire plus :)
OK EVO. Pour autant, comment est-il possible de paramétrer l'extension chrome par ex avec Vaultwarden ? Je ne vois pas comment c'est possible ^^
 
Alandil a dit:
EVOTk a dit:
Alandil a dit:
De plus, avec Vaultwarden, on peut utiliser les extensions de navigateur ?!

Vaultwarden est 100% compatible avec les appli bitwarden navigateur/mobile, ....
Certains fonctions payants de Bitwarden sont débloqué dans Vaultwarden ( partage de coffre, .. ) , mais j'utilise également la version officielle. MilesTEG1 pourra surement nous en dire plus :)
OK EVO. Pour autant, comment est-il possible de paramétrer l'extension chrome par ex avec Vaultwarden ? Je ne vois pas comment c'est possible ^^

Il faut paramétrer l'url de ton serveur :
 
( > TUTO mis à jour - v3.1 < )
- 3.1 : ajout d'une capture d'écran de la configuration du reverse-proxy de DSM + ajout d'une mention concernant ce qui est à remplacer dans le docker-compose.yml
 
Bien vu ! Merci Miles !

Bon je vais réfléchir sérieusement à cette solution !
 
( > TUTO mis à jour - v4.0 < )
  • - 3.1 : ajout d'une capture d'écran de la configuration du reverse-proxy de DSM + ajout d'une mention concernant ce qui est à remplacer dans le docker-compose.yml
  • - 4.0 : changement d'image pour le backup, donc le docker-compose est modifié.
 
( > TUTO mis à jour - v4.0 < )
  • 3.1 : ajout d'une capture d'écran de la configuration du reverse-proxy de DSM + ajout d'une mention concernant ce qui est à remplacer dans le docker-compose.yml
  • 4.0 : changement d'image pour le backup, donc le docker-compose est modifié.`
  • 4.1 : actualisation de certaines captures d'écrans
  • 4.2 : correction de quelques coquilles, et mise à jour de la ligne de commande de création des dossiers en ligne de commande.
 
Bonjour,

merci pour ce tuto que j'ai suivi à la lettre et qui m'a permis d'installer mon serveur vaultwarden sur mon NAS DS220+ en utilisant docker.

Je me retrouve cependant bloqué par deux problèmes que je vais vous exposer en espérant que vous pourrez m'aider.
1 : SMTP
je n'ai pas réussi à configurer le SMTP. J'ai pourtant essayé pas mal de configurations, en recopiant celle indiquée dans mon client mail (thunderbird), en changeant les ports, ... Mais rien n'y fait. Je suis toujours en échec d'envoi de mails. J'ai un peu cherché et j'ai vu à droite à gauche que beaucoup avaient tout simplement abandonné.
Est-ce qu'il y a une astuce que je n'aurais pas vu ?

2 : Script Enable_ws.sh
J'ai là aussi suivi le tuto.
J'ai créé un dossier pour y déposer mon script :
Code:
/volume1/docker/vaultwarden/script_web_socket
j'y ai déposé mon script ayant pour nom
Code:
enable_ws.sh
Mon code, issu du fichier mis a disposition sur le premier post, et adapté à ma configuration :
Code:
#!/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 79 et 85 par l'IP du NAS    /!\       ##
##                                                                                            ##
##==============================================================================================
##                                                                                            ##
## Paramètres de lancement du script :                                                        ##
## bash /volume1/docker/vaultwarden/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                                            ##
##                                                                                            ##
##==============================================================================================

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

echo -e "\n$(date "+%R:%S - ") Script enable_ws.sh pour activer les Notifications Websockets"

f_affiche_parametre() {
    echo "          bash /volume1/docker/vaultwarden/script_web_socket/enable_ws.sh vaultwarden.XXXXXxxXXXX.xxx 10211 10212 "
    echo "                           -- vaultwarden.XXXXXxxXXXX.xxx = Nom de domaine de vaultwarden (celui du Reverse Proxy de DSM) "
    echo "                           -- 10212 = Port exposé ROCKET_PORT par Docker (Identique à celui du Reverse Proxy de DSM)"
    echo "                           -- 10211 = Port exposé WEBSOCKET_PORT par Docker"
}

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/ws.locations ]; then
  rm /etc/nginx/ws.locations
  part1=1
fi
echo """
location /notifications/hub {
    proxy_pass http://192.168.1.4:$3;
    proxy_set_header Upgrade \$http_upgrade;
    proxy_set_header Connection \"upgrade\";
}

location /notifications/hub/negotiate {
    proxy_pass http://192.168.1.4:$2;
}
""" >> $LOC_DIR/ws.locations


if ! grep -q "ws.locations" /etc/nginx/app.d/server.ReverseProxy.conf; then
    sed -i "/$1;/ a\ include $LOC_DIR/ws.locations;" /etc/nginx/app.d/server.ReverseProxy.conf
    if nginx -t 2>/dev/null; then synoservicecfg --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/ws.locations existait déjà, il a été supprimé puis recréé."
else
  echo "$(date "+%R:%S - ")    -- Le fichier $LOC_DIR/ws.locations n'existait pas, il a été créé."
fi
if [ $part2 -eq 1 ]; then
  echo "$(date "+%R:%S - ")    -- !!!!!! --->  La modification dans le fichier /etc/nginx/app.d/server.ReverseProxy.conf n'existait pas. Elle a été écrite."
  echo "$(date "+%R:%S - ")    -- !!!!!! --->  Le fichier /etc/nginx/app.d/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/app.d/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é"

exit

Lorsque je lance la commande suivante pour test (oui il manque les arguments, mais je voulais justement savoir si les erreurs étaient correctement détectées):
Code:
bash /volume1/docker/vaultwarden/script_ws/enable_ws.sh

Voici les erreurs que je reçois :
Code:
/volume1/docker/vaultwarden/script_ws/enable_ws.sh: line 40: $'\r': command not found
/volume1/docker/vaultwarden/script_ws/enable_ws.sh: line 44: $'\r': command not found

21:03:34 -  Script vaultwarden__Enable_Websocket.sh pour activer les Notifications Websockets
/volume1/docker/vaultwarden/script_ws/enable_ws.sh: line 46: $'\r': command not found
/volume1/docker/vaultwarden/script_ws/enable_ws.sh: line 47: syntax error near unexpected token `$'{\r''
'volume1/docker/vaultwarden/script_ws/enable_ws.sh: line 47: `f_affiche_parametre() {
Et là, j'avoue que je ne comprends pas les erreurs, sachant qu'il n'y a rien sur la ligne 40 et que je ne trouve pas de \r dans le code du script.

Si vous pouviez m'aider, merci
 
Salut,
Là j'ai l'impression que les retours à la ligne ne sont pas corrects...
Quel éditeur de texte avez-vous utilisé ?
Je vous conseille VScode, ou NotePad++.
 
Greg-o a dit:
J'utilise Notepad+
Il faut trouver comment changer le CRLF en LF tout court, ou l'inverse.
Je ne sais plus comment on fait par contre avec Notepad++...
 
MilesTEG1 a dit:
Greg-o a dit:
J'utilise Notepad+
Il faut trouver comment changer le CRLF en LF tout court, ou l'inverse.
Je ne sais plus comment on fait par contre avec Notepad++...

Ceci ?
4ysEaY5.png
 
Merci beaucoup à vous deux ! Je ne connaissais pas cette astuce !

Maintenant, ça fonctionne !

Et pour la configuration du SMTP, est ce que vous avez eu des difficultés ?
 
Greg-o a dit:
Merci beaucoup à vous deux ! Je ne connaissais pas cette astuce !

Maintenant, ça fonctionne !

Et pour la configuration du SMTP, est ce que vous avez eu des difficultés ?
Non pas de soucis particulier.
J’utilise gmail moi.

Et vous c’est quoi ?
Quel fai ? Et quel port avez vous essayé ? Car pas mal de fai bloque le port 25 du smtp …
 
( > TUTO mis à jour - v4.3 < )
  • 3.1 : ajout d'une capture d'écran de la configuration du reverse-proxy de DSM + ajout d'une mention concernant ce qui est à remplacer dans le docker-compose.yml
  • 4.0 : changement d'image pour le backup, donc le docker-compose est modifié.`
  • 4.1 : actualisation de certaines captures d'écrans
  • 4.2 : correction de quelques coquilles, et mise à jour de la ligne de commande de création des dossiers en ligne de commande.
  • 4.3 : Ajout d'un avertissement + explications pour la variable SIGNUPS_ALLOWED=false dans mon tuto



Avertissement concernant la variable SIGNUPS_ALLOWED
Dans la partie du docker-compose concernant Vaultwarden, il y a une variable d'environnement particulière qui bloque l'inscription de nouveaux comptes si elle a comme valeur false :
Code:
- SIGNUPS_ALLOWED=false
Ce faisant, il vous sera impossible de créer votre premier compte via l'interface web de Vaultwarden si vous la laissez sur false.
Mais... Il y a deux possibilités pour quand même avoir un compte (sinon ce n'est pas très utile comme outils...).
  • La première est peut-être la plus pratique : il suffit d'aller dans l'interface admin ( https://votre-nom-de-domaine.tld/admin ) en utilisant le ADMIN_TOKEN, et de remplir le champ email dans "Invite User" avec votre email pour vous "auto-inviter". Il faut bien entendu que l'envoi d'email soit fonctionnel, ce qui sera obligatoire pour le 2FA.
    wquYyII.png



  • La deuxième méthode c'est de mettre la variable SIGNUPS_ALLOWED sur true :

  • Code:
    - SIGNUPS_ALLOWED=true
    Et là aussi, deux possibilités :
    • Soit vous créer de base le conteneur cette variable sur true, et alors au premier lancement vous pourrez créer votre compte. Mais il faudra ensuite soit passer par l'interface admin pour passer le paramètre "Allow new signups" à false en décochant la case à cocher (chez moi c'est par défaut à false à cause de la variable SIGNUPS_ALLOWED).

    • Soit vous modifiez (après le premier lancement et la création du compte) le docker-compose en repassant la variable SIGNUPS_ALLOWED à false, et vous recréez le conteneur.


Quoique vous fassiez, je vous conseil vivement de désactiver l'inscription via la variable SIGNUPS_ALLOWED, et d'inviter chaque utilisateur avec la console admin, puis de désactiver la console admin en commentant la variable ADMIN_TOKEN (donc en recréant le conteneur). (ce n'est qu'un conseil).
 
Bonjour

Après quelques mésaventures, j'ai réussi à installer Vaultwarden.
Mais j'ai quelques questions résiduelles :

- Quels sont les impacts si on ne met pas en place la partie "Websockets" ? Est-ce que c'est simplement le fait que les extensions du navigateur ne sont pas prévenues des modifications faites dans le base, et qu'il faut faire des rafraichissements manuels ?

- Comme faut-il faire pour prendre en compte une nouvelle version de Vaultwarden ?

- A la place de la sauvegarde, je voudrais faire des exports du contenu de la base. J'ai vu que c'est possible en ligne de commande. Mais comment exécuter cette ligne de commande dans le container ? et comment automatiser cela ?

Sinon, excellent TUTO, merci MilesTEG1 ;)
 
MilesTEG1 a dit:
Non pas de soucis particulier.
J’utilise gmail moi.

Et vous c’est quoi ?
Quel fai ? Et quel port avez vous essayé ? Car pas mal de fai bloque le port 25 du smtp …

Désolé pour la réponse tardive : je n'ai pas touché au NAS ce week end :D
Voici ma config passée dans le docker-compose :
Code:
- SMTP_HOST=smtp.googlemail.com
      - SMTP_FROM=xxxxxxxxxxxxxx@gmail.com
      - SMTP_FROM_NAME=Vaultwarden
      - SMTP_PORT=465
      - SMTP_SSL=true
      - SMTP_USERNAME=xxxxxxxxxxxxxx@gmail.com
      - SMTP_PASSWORD=password
J'ai recopié les éléments de la config qui fonctionne sous thunderbird sur mon PC de bureau. Par contre, pas moyen de le faire fonctionner par Vaultwarden. J'ai essayé en changeant le port mais rien n'y fait.

Voici ce que j'ai dans la page admin :


Je suis sec sur ce problème !
 
Statut
N'est pas ouverte pour d'autres réponses.