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
|
168
docker-compose/bitwardenrs_backup/docker-compose.yml
Normal file
168
docker-compose/bitwardenrs_backup/docker-compose.yml
Normal file
@ -0,0 +1,168 @@
|
||||
## 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é. ##
|
||||
## ##
|
||||
##==============================================================================================
|
||||
## ##
|
||||
## 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"
|
||||
|
||||
services:
|
||||
bitwardenrs: # Voir : https://github.com/dani-garcia/bitwarden_rs
|
||||
image: bitwardenrs/server:latest
|
||||
container_name: bitwardenrs
|
||||
networks:
|
||||
- bitwarden_network
|
||||
environment:
|
||||
# Utiliser la commande (en SSH) : id NOM_UTILISATEUR
|
||||
- PUID=XXxxXX
|
||||
- PGID=XXxxXX
|
||||
- TZ=Europe/Paris
|
||||
|
||||
# Pour l'envoi d'emails
|
||||
- SMTP_HOST=XXxxXX
|
||||
- SMTP_FROM=XXxxXX
|
||||
- SMTP_FROM_NAME=BlaBla
|
||||
- SMTP_PORT=XXxxXX
|
||||
- SMTP_SSL=true
|
||||
- SMTP_USERNAME=XXxxXX
|
||||
- SMTP_PASSWORD=XXxxXX
|
||||
|
||||
# Nécessaire pour activer le 2FA pour la connexion à notre serveur bitwarden_rs
|
||||
# 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=XXxxXX
|
||||
|
||||
- INVITATION_ORG_NAME=Bitwarden_RS [Votre Nom, pseudo...] # Permet de spécifier un nom d'application pour les invitations d'organisation
|
||||
|
||||
# Pour enregistrer les log avec un niveau particulier
|
||||
- LOG_FILE=/data/bitwarden.log
|
||||
- LOG_LEVEL=warn
|
||||
- EXTENDED_LOGGING=true
|
||||
|
||||
# je n'aime pas les indices pour les mots de passe...
|
||||
- SHOW_PASSWORD_HINT=false
|
||||
|
||||
# Pour activer la console d'administation, accessible via : https://mon.domaine.tld/admin/
|
||||
# Voir détails ici : https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-admin-page
|
||||
# /!\
|
||||
# /!\ N'importe qui pourra accéder à la page de connextion, 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.
|
||||
# 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=false # 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'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/"
|
||||
ports:
|
||||
- XXxxXX:3012 # Choisir un port libre pour le websocket
|
||||
- XXxxXX:80 # Choisir un port libre pour l'interface WEB
|
||||
restart: unless-stopped
|
||||
|
||||
# Sauvegarde automatique de la base de données, au-cas-où !
|
||||
bitwarden_backup: # Voir : https://gitlab.com/1O/bitwarden_rs-backup
|
||||
image: bruceforce/bw_backup:latest
|
||||
container_name: bitwarden_backup
|
||||
networks:
|
||||
- bitwarden_network
|
||||
restart: always
|
||||
depends_on:
|
||||
- bitwardenrs
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /volume1/docker/bitwarden_rs/bitwarden-data/:/data/
|
||||
# Chemin d'accès pour stocker le backup
|
||||
- /volume1/docker/bitwarden_rs/bitwarden-backup:/backup_folder/
|
||||
|
||||
environment:
|
||||
# Path to the Bitwarden sqlite3 database inside the container
|
||||
- DB_FILE=/data/db.sqlite3
|
||||
|
||||
# Path to the desired backup location inside the container
|
||||
# - BACKUP_FILE=/data/db_backup/backup.sqlite3
|
||||
- BACKUP_FILE=/backup_folder/backup.sqlite3
|
||||
|
||||
# Sets the permissions of the backup file
|
||||
# The permissions should at least be 700 since the backup folder itself gets the same permissions
|
||||
# and with 600 it would not be accessible.
|
||||
- BACKUP_FILE_PERMISSIONS=700
|
||||
|
||||
# Cronjob format "Minute Hour Day_of_month Month_of_year Day_of_week Year"
|
||||
# https://crontab.guru/#0_9_*_*_*
|
||||
# minutes | heures | jour du mois | mois | jour de la semaine
|
||||
- CRON_TIME=0 18 * * *
|
||||
|
||||
# Set to true to append timestamp to the BACKUP_FILE
|
||||
- TIMESTAMP=true
|
||||
|
||||
# User ID to run the cron job with
|
||||
- UID=1038 # J'ai créé un utilisateur dédié à Bitwarden, utiliser la commande 'id nom_user'
|
||||
|
||||
# Group ID to run the cron job with
|
||||
- GID=100
|
||||
|
||||
# Path to the logfile inside the container
|
||||
#- LOGFILE
|
||||
|
||||
# Path to the cron file inside the container
|
||||
#- CRONFILE
|
||||
|
||||
# Delete old backups after X many days
|
||||
- DELETE_AFTER=14
|
||||
|
||||
networks:
|
||||
bitwarden_network:
|
||||
external:
|
||||
name: bitwarden_network
|
Loading…
Reference in New Issue
Block a user