Bitwarden_RS avec Backup automatique et programmé #46
| @@ -0,0 +1,126 @@ | ||||
| #!/bin/bash | ||||
| ##============================================================================================== | ||||
| ##                                                                                            ## | ||||
| ##                          Script Bitwarden_RS__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. Bitwarden_RS :                                                                      ## | ||||
| ##        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/bitwarden_rs/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 89 et 95 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 Bitwarden_rs (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 | ||||
| # declare -r nb_param=$#                           # Nombre d'argument(s) fourni(s) au script. | ||||
| # declare -r param_1="$1"                          # 1er argument fourni | ||||
| # declare -r param_2="$2"                          # 1er argument fourni | ||||
| # declare -r param_3="$3"                          # 1er argument fourni | ||||
|  | ||||
| echo -e "\n$(date "+%R:%S - ") Script Bitwarden_RS__Enable_Websocket.sh pour activer les Notifications Websockets" | ||||
| echo "$(date "+%R:%S - ") Exécution des commandes..." | ||||
|  | ||||
| f_affiche_parametre() { | ||||
|     echo "                       bash /volume1/docker/bitwarden/enable_ws.sh vault.example.com 5555 5556 " | ||||
|     echo "                           -- vault.example.com = Nom de domaine de Bitwarden_rs (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" | ||||
| } | ||||
|  | ||||
| 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 | ||||
| fi | ||||
|  | ||||
|  | ||||
| ############################################################################################################# | ||||
| ## 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.2.200:$3; | ||||
|     proxy_set_header Upgrade \$http_upgrade; | ||||
|     proxy_set_header Connection \"upgrade\"; | ||||
| } | ||||
|  | ||||
| location /notifications/hub/negotiate { | ||||
|     proxy_pass http://192.168.2.200:$2; | ||||
| } | ||||
| """ >> $LOC_DIR/ws.locations | ||||
|  | ||||
| if [ $part1 -eq 1 ]; then | ||||
|   echo "$(date "+%R:%S - ")    -- 1ère étape du script : le fichier existait déjà, il a été supprimé." | ||||
| fi | ||||
| echo "$(date "+%R:%S - ")    -- 1ère étape du script : écriture du fichier $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 | ||||
|  | ||||
|     echo "$(date "+%R:%S - ")    -- Étape finale du script atteinte : Écriture dans le fichier server.ReverseProxy.conf." | ||||
|     part2=1 | ||||
| fi | ||||
| ## | ||||
| ## Fin de la partie de création/modification de fichiers | ||||
| ############################################################################################################# | ||||
|  | ||||
|  | ||||
|  | ||||
| echo "$(date "+%R:%S - ")    -- Vérification du fichier créé lors de la 1ère étape du script (qu'elle ait été exécuté maintenant ou précédemment) :" | ||||
| echo "cat /etc/nginx/ws.locations" | ||||
| cat /etc/nginx/ws.locations | ||||
| if [ ! $part2 -eq 1 ]; then | ||||
|   echo "$(date "+%R:%S - ")    -- 2ème étape du script inutile donc non exécutée : la modification du fichier server.ReverseProxy.conf a déjà été effectuée lors d'une précédente exécution" | ||||
| fi | ||||
| echo "$(date "+%R:%S - ") Script Bitwarden_RS__Enable_Websocket.sh terminé" | ||||
|  | ||||
| exit | ||||
| @@ -1,17 +1,47 @@ | ||||
| ## Discord Plex FR : https://discord.gg/ERpYMqS | ||||
| ## Version 2021-04-03 | ||||
| ##======================================================================================== | ||||
| ##                                                                                      ## | ||||
| ##          Fichier docker-compose.yml pour Bitwarden_RS avec Bitwarden-Backup          ## | ||||
| ##                                                                                      ## | ||||
| ##======================================================================================== | ||||
| ##                                                                                      ## | ||||
| ## Attention, avec ce fichier, il faut avoir créer le réseau "bitwarden_network" avant  ## | ||||
| ## de créer les conteneurs.                                                             ## | ||||
| ##                                                                                      ## | ||||
| ##          La mise en place de fail2ban se fera avec un docker-compose dédié.          ## | ||||
| ##                                                                                      ## | ||||
| ##======================================================================================== | ||||
| ##============================================================================================== | ||||
| ##                                                                                            ## | ||||
| ##             Fichier docker-compose.yml pour Bitwarden_RS avec Bitwarden-Backup             ## | ||||
| ##                                                                                            ## | ||||
| ##============================================================================================== | ||||
| ##                                                                                            ## | ||||
| ## Attention, avec ce fichier, il faut avoir créer le réseau "bitwarden_network" avant de     ## | ||||
| ## créer les conteneurs.                                                                      ## | ||||
| ##                                                                                            ## | ||||
| ##             La mise en place de fail2ban se fera avec un docker-compose dédié.             ## | ||||
| ##                                                                                            ## | ||||
| ##============================================================================================== | ||||
| ##                                                                                            ## | ||||
| ##                              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/bitwarden_rs/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             ## | ||||
| ## bitwarden_RS.                                                                              ## | ||||
| ## Comme cela, il n'est pas nécessaire de passer par le changement de reverse-proxy, assez    ## | ||||
| ## complexe à mettre en oeuvre...                                                             ## | ||||
| ##                                                                                            ## | ||||
| ## Le script est : Bitwarden_RS__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 bitwarden                                                           ## | ||||
| ## - 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 Bitwarden_RS__Enable_Websocket.sh pour plus            ## | ||||
| ## d'explications.                                                                            ## | ||||
| ##                                                                                            ## | ||||
| ##============================================================================================== | ||||
|  | ||||
| --- | ||||
| version: "2" | ||||
|  | ||||
| @@ -68,6 +98,11 @@ services: | ||||
|                                 # 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 | ||||
|        | ||||
|  | ||||
|     volumes: | ||||
|       - "/volume1/docker/bitwarden_rs/bitwarden-data/:/data/" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user