From aafe982b93a329bc16b776a67a5668261d716ba6 Mon Sep 17 00:00:00 2001 From: MilesTEG Date: Sun, 4 Apr 2021 11:05:03 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20script=20pour=20faire=20fonctionne?= =?UTF-8?q?r=20les=20notifications=20websockets=20sur=20un=20NAS=20Synolog?= =?UTF-8?q?y=20sans=20avoir=20besoin=20de=20changer=20de=20reverse-proxy.?= =?UTF-8?q?=20Toute=20am=C3=A9lioration=20du=20script=20pour=20un=20verbos?= =?UTF-8?q?e=20plus=20sympa=20est=20la=20bienvenue=20;)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Bitwarden_RS__Enable_Websocket.sh | 126 ++++++++++++++++++ .../bitwardenrs_backup/docker-compose.yml | 59 ++++++-- 2 files changed, 173 insertions(+), 12 deletions(-) create mode 100644 docker-compose/bitwardenrs_backup/Bitwarden_RS__Enable_Websocket.sh diff --git a/docker-compose/bitwardenrs_backup/Bitwarden_RS__Enable_Websocket.sh b/docker-compose/bitwardenrs_backup/Bitwarden_RS__Enable_Websocket.sh new file mode 100644 index 0000000..00fda7a --- /dev/null +++ b/docker-compose/bitwardenrs_backup/Bitwarden_RS__Enable_Websocket.sh @@ -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 \ No newline at end of file diff --git a/docker-compose/bitwardenrs_backup/docker-compose.yml b/docker-compose/bitwardenrs_backup/docker-compose.yml index eb15a4a..0c2320a 100644 --- a/docker-compose/bitwardenrs_backup/docker-compose.yml +++ b/docker-compose/bitwardenrs_backup/docker-compose.yml @@ -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/"