Bitwarden_RS avec Backup automatique et programmé #46

Merged
NightPumpkin merged 5 commits from miles-bitwardenRS into master 2021-04-07 23:21:27 +02:00
2 changed files with 173 additions and 12 deletions
Showing only changes of commit aafe982b93 - Show all commits

View File

@ -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

View File

@ -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/"