Erweitern der Dokumentation
This commit is contained in:
@@ -1,3 +1,2 @@
|
|||||||
/keys
|
/keys
|
||||||
/temp
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,38 @@
|
|||||||
Dieses Projekt befasst sich mit dem automatischen verschieben der Exportierten Passwortdatein aus Vaultwarden auf ein externes WebDAV laufwerk.
|
Dieses Projekt befasst sich mit dem automatischen verschieben der Exportierten Passwortdatein aus Vaultwarden auf ein externes WebDAV laufwerk.
|
||||||
|
|
||||||
|
|
||||||
## Requirements
|
## Voraussetzungen
|
||||||
|
|
||||||
- rclone muss auf Ausführendem Host installiert sein
|
- rclone muss auf Ausführendem Host installiert sein
|
||||||
- ssh KEY authentifizierung bei sftp remote host
|
- SSH Schlüsselauthentifizierung zu allen benötigten Hosts (Docker und SFTP) muss gegeben sein.
|
||||||
- SSH KEY Authentifizierung bei Docker Host
|
|
||||||
|
|
||||||
## Funktion
|
## Funktion
|
||||||
|
|
||||||
|
Dieses Projekt besteht aus zwei Skripten, der '''setup.sh''' und der '''backup.sh''. Die Eigendliche funktion funktioniert jedoch auschließlich die '''backup.sh'''
|
||||||
|
|
||||||
|
Die '''setup.sh''' ist für die Erstellung der für das einbinden der WebDAV Freigabe benötigten vorkonfiguration zuständig. Sie fürt folgende schritte aus:
|
||||||
|
- Installieren von rclone (Programm für die Verbindung der Freigabe)
|
||||||
|
- Verschlüsselung des Benötigten Passworts
|
||||||
|
- Erstellen der rclone Konfigurationsdatei
|
||||||
|
- Sicherstellen das Berechtigungen richtig gesetzt sind
|
||||||
|
|
||||||
|
Die '''backup.sh''' ist für das Verschiben der Datein benötigt, diese solte auch mit einem cron task automatisch mit einem zeitintervall ausgeführt werden. Die ausgeführten schritte sind wie folgt:
|
||||||
|
- Erstellen des benötigten Mount Punktes für WebDAV
|
||||||
|
- Starten des benötigten Docker Containers und warten bis dieser durchgelaufen ist
|
||||||
|
- Transferieren der Datein von Remotehost auf Lokale maschine
|
||||||
|
- Einhängen / Verbinden der Webdav Freigabe
|
||||||
|
- Leeren der WebDAV freigabe von Alten Backups
|
||||||
|
- Übertragen der neunen Backups von Lokaler Maschine auf WebDAV Freigabe.
|
||||||
|
- Aushängen der WebDAV Freigabe
|
||||||
|
|
||||||
|
|
||||||
## Dateibaum
|
## Dateibaum
|
||||||
|
'''
|
||||||
|
├──.git
|
||||||
|
├── .gitignore
|
||||||
|
├── README.md
|
||||||
|
├── backup.sh
|
||||||
|
├── setup.sh
|
||||||
|
├── temp
|
||||||
|
└── webdav
|
||||||
|
'''
|
||||||
@@ -1,14 +1,16 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------------------------------------------------
|
||||||
|
# Festlegen von diversen Variablen
|
||||||
|
|
||||||
# Konfigurationsvariablen
|
# Konfigurationsvariablen
|
||||||
MOUNT_POINT="./webdav/"
|
MOUNT_POINT="./webdav/" #Ort wod die Webdav Freigabe eingehängt werden soll
|
||||||
DOCKER_HOST="kitl-v-lx-dock.kitl.bayern"
|
DOCKER_HOST="kitl-v-lx-dock.kitl.bayern" #IP oder Hostname wo der Docker Container Läuft
|
||||||
SFTP_HOST1=$DOCKER_HOST
|
SFTP_HOST1=$DOCKER_HOST #IP oder Hostname von dem Host von welchem die Datein geladen werden sollen, meist gleich zu Docker Host
|
||||||
|
|
||||||
# Nutzerdaten
|
# Nutzerdaten
|
||||||
DOCKER_USER="kitl"
|
DOCKER_USER="kitl" #Name des Nutzers für den Dockerhost
|
||||||
SFTP_USER1=$DOCKER_USER
|
SFTP_USER1=$DOCKER_USER #Name des Nutzers für den SFTPhost, meist gleich zu Docker
|
||||||
|
|
||||||
|
|
||||||
# Farben für die Ausgabe
|
# Farben für die Ausgabe
|
||||||
@@ -16,16 +18,20 @@ GREEN="\033[0;32m"
|
|||||||
RED="\033[0;31m"
|
RED="\033[0;31m"
|
||||||
NC="\033[0m" # Keine Farbe
|
NC="\033[0m" # Keine Farbe
|
||||||
|
|
||||||
# Funktion zur Ausgabe von Meldungen
|
# ----------------------------------------------------------------------------------------------------------------------
|
||||||
|
# Festlegen von Funktionen
|
||||||
|
|
||||||
|
# Funktion zur Ausgabe von log Meldungen
|
||||||
function log() {
|
function log() {
|
||||||
echo -e "${GREEN}[INFO] $1${NC}"
|
echo -e "${GREEN}[INFO] $1${NC}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Funktion zur Ausgabe von error Meldungen
|
||||||
function error() {
|
function error() {
|
||||||
echo -e "${RED}[ERROR] $1${NC}"
|
echo -e "${RED}[ERROR] $1${NC}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Funktion für das Starten des Speziefischen Docker Containers
|
||||||
function dockerremote(){
|
function dockerremote(){
|
||||||
#Enrichten von Variablen für Funktion
|
#Enrichten von Variablen für Funktion
|
||||||
REMOTE_HOST=$1
|
REMOTE_HOST=$1
|
||||||
@@ -46,10 +52,9 @@ function dockerremote(){
|
|||||||
ssh "$REMOTE_USER@$REMOTE_HOST" "while docker ps --filter name=$CONTAINER_NAME --filter status=running --quiet > /dev/null; do sleep 1; done"
|
ssh "$REMOTE_USER@$REMOTE_HOST" "while docker ps --filter name=$CONTAINER_NAME --filter status=running --quiet > /dev/null; do sleep 1; done"
|
||||||
|
|
||||||
log "Der Container ist Gestoppt mache weiter"
|
log "Der Container ist Gestoppt mache weiter"
|
||||||
REMOTE_HOST=""
|
|
||||||
REMOTE_USER=""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Funktion zum Herunterladen der Datein im angegebenen Verzeichniss
|
||||||
function sftptransfer(){
|
function sftptransfer(){
|
||||||
#Einrichten der Variablen für Funktion
|
#Einrichten der Variablen für Funktion
|
||||||
REMOTE_USER=$1
|
REMOTE_USER=$1
|
||||||
@@ -57,9 +62,11 @@ function sftptransfer(){
|
|||||||
REMOTE_DIR=$3
|
REMOTE_DIR=$3
|
||||||
LOCAL_DIR="./temp"
|
LOCAL_DIR="./temp"
|
||||||
|
|
||||||
|
# Prüfung das Localdir auch Existiert bevor
|
||||||
log "Sicherstellen das $LOCAL_DIR existiert"
|
log "Sicherstellen das $LOCAL_DIR existiert"
|
||||||
mkdir -p "$LOCAL_DIR"
|
mkdir -p "$LOCAL_DIR"
|
||||||
|
|
||||||
|
# Anmelden über SFTP und Herunterladen der Datein
|
||||||
log "Lade Datein von $REMOTE_DIR herunter"
|
log "Lade Datein von $REMOTE_DIR herunter"
|
||||||
sftp "$REMOTE_USER"@"$REMOTE_HOST" << EOF
|
sftp "$REMOTE_USER"@"$REMOTE_HOST" << EOF
|
||||||
cd $REMOTE_DIR
|
cd $REMOTE_DIR
|
||||||
@@ -69,10 +76,10 @@ function sftptransfer(){
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
log "Datein Heruntergeladen"
|
log "Datein Heruntergeladen"
|
||||||
REMOTE_HOST=""
|
|
||||||
REMOTE_USER=""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------------------------
|
||||||
|
# Begin des Eigentlichen Scripts
|
||||||
|
|
||||||
# Sicherstellen, dass das Skript als root ausgeführt wird
|
# Sicherstellen, dass das Skript als root ausgeführt wird
|
||||||
if [[ $EUID -ne 0 ]]; then
|
if [[ $EUID -ne 0 ]]; then
|
||||||
@@ -86,6 +93,13 @@ log "Erstelle den Mount-Punkt $MOUNT_POINT..."
|
|||||||
mkdir -p "$MOUNT_POINT"
|
mkdir -p "$MOUNT_POINT"
|
||||||
chmod 755 "$MOUNT_POINT"
|
chmod 755 "$MOUNT_POINT"
|
||||||
|
|
||||||
|
# Starten von Docker Container
|
||||||
|
dockerremote "$DOCKER_USER" "$DOCKER_HOST" "bw-export-iuk"
|
||||||
|
|
||||||
|
# Holen der Datein welche durch Docker Container Erstellt wurden
|
||||||
|
sftptransfer "$SFTP_USER1" "$SFTP_HOST1" "/sftpuser/export/data/"
|
||||||
|
|
||||||
|
|
||||||
# WebDAV-Freigabe mounten
|
# WebDAV-Freigabe mounten
|
||||||
log "Mounten der WebDAV-Freigabe nach $MOUNT_POINT..."
|
log "Mounten der WebDAV-Freigabe nach $MOUNT_POINT..."
|
||||||
rclone mount webdav: "$MOUNT_POINT" --daemon --allow-other --umask 002 || {
|
rclone mount webdav: "$MOUNT_POINT" --daemon --allow-other --umask 002 || {
|
||||||
@@ -95,14 +109,11 @@ rclone mount webdav: "$MOUNT_POINT" --daemon --allow-other --umask 002 || {
|
|||||||
log "WebDAV-Freigabe erfolgreich gemountet."
|
log "WebDAV-Freigabe erfolgreich gemountet."
|
||||||
|
|
||||||
|
|
||||||
|
# Leeren des Kommsafe Ordners von Alten Backups
|
||||||
|
rm -rf $MOUNT_POINT
|
||||||
|
|
||||||
dockerremote "$DOCKER_USER" "$DOCKER_HOST" "bw-export-iuk"
|
# Übertragen der Aktuellen Backups nach Komsafe
|
||||||
|
mv ./temp/* $MOUNT_POINT
|
||||||
rm -rf ./webdav/
|
|
||||||
|
|
||||||
sftptransfer "$SFTP_USER1" "$SFTP_HOST1" "/sftpuser/export/data/"
|
|
||||||
|
|
||||||
mv ./temp/* ./webdav/
|
|
||||||
|
|
||||||
|
|
||||||
# Webdav Unmounten
|
# Webdav Unmounten
|
||||||
@@ -112,3 +123,5 @@ if mountpoint -q "$MOUNT_POINT"; then
|
|||||||
else
|
else
|
||||||
log "Der Mount-Punkt ist bereits unmountet."
|
log "Der Mount-Punkt ist bereits unmountet."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
log "Backup der Datein erfolgreich ausgeführt"
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
# Variablen
|
# Variablen
|
||||||
WEBDAV_USER="tim.schilling@koenigsbrunn.de"
|
WEBDAV_USER="tim.schilling@koenigsbrunn.de"
|
||||||
WEBDAV_PASS="HgdKS-P2004!"
|
WEBDAV_PASS="HgdKS-P2004!"
|
||||||
|
|
||||||
WEBDAV_URL="https://www.kommsafe.de/webdav/Stadt%20K%C3%B6nigsbrunn/IuK/KITL-VaultWarden%20Backups"
|
WEBDAV_URL="https://www.kommsafe.de/webdav/Stadt%20K%C3%B6nigsbrunn/IuK/KITL-VaultWarden%20Backups"
|
||||||
RCLONE_CONFIG="/root/.config/rclone/rclone.conf"
|
RCLONE_CONFIG="/root/.config/rclone/rclone.conf"
|
||||||
|
|
||||||
@@ -12,11 +11,12 @@ GREEN="\033[0;32m"
|
|||||||
RED="\033[0;31m"
|
RED="\033[0;31m"
|
||||||
NC="\033[0m" # Keine Farbe
|
NC="\033[0m" # Keine Farbe
|
||||||
|
|
||||||
# Funktion zur Ausgabe von Meldungen
|
# Funktion zur Ausgabe von log Meldungen (Grün)
|
||||||
function log() {
|
function log() {
|
||||||
echo -e "${GREEN}[INFO] $1${NC}"
|
echo -e "${GREEN}[INFO] $1${NC}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Funktion zur Ausgabe von error Meldungen (Rot)
|
||||||
function error() {
|
function error() {
|
||||||
echo -e "${RED}[ERROR] $1${NC}"
|
echo -e "${RED}[ERROR] $1${NC}"
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Verschlüsseltes Passwort generieren
|
# Verschlüsseltes Passwort generieren, unter nutung des rclone obscure befehls
|
||||||
log "Verschlüssele das WebDAV-Passwort..."
|
log "Verschlüssele das WebDAV-Passwort..."
|
||||||
ENCRYPTED_PASSWORD=$(rclone obscure "$WEBDAV_PASS")
|
ENCRYPTED_PASSWORD=$(rclone obscure "$WEBDAV_PASS")
|
||||||
if [[ -z "$ENCRYPTED_PASSWORD" ]]; then
|
if [[ -z "$ENCRYPTED_PASSWORD" ]]; then
|
||||||
@@ -56,10 +56,9 @@ vendor = other
|
|||||||
user = $WEBDAV_USER
|
user = $WEBDAV_USER
|
||||||
pass = $ENCRYPTED_PASSWORD
|
pass = $ENCRYPTED_PASSWORD
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
# Festlegen der Berechtigungen auf nur lesen für Besitzer
|
||||||
chmod 600 "$RCLONE_CONFIG"
|
chmod 600 "$RCLONE_CONFIG"
|
||||||
log "rclone-Konfiguration gespeichert unter $RCLONE_CONFIG."
|
log "rclone-Konfiguration gespeichert unter $RCLONE_CONFIG."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
log "Vorbereitungen abgeschlossen"
|
log "Vorbereitungen abgeschlossen"
|
||||||
|
|||||||
Reference in New Issue
Block a user