Last active
June 5, 2025 11:19
-
-
Save Bouni/583d586c0ae69bf1ef4d496fbf830516 to your computer and use it in GitHub Desktop.
FE2 Backup wiederherstellen
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
if [ $# -ne 3 ]; then | |
echo "Fehler: 3 Argumente erwartet, erhalten $#" | |
echo Verwendung: ./FE2-restore.sh Lizenz-E-Mail-Adresse Passwort Domain | |
echo Besipiel: ./FE2-restore.sh \"[email protected]\" \"s8QZ060q5QvyfJ1qtW3Dx@LBn8^3lHR*\" \"alamos.feuerwehr-musterstadt.de\" | |
exit 1 | |
fi | |
# Check if any argument is empty | |
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then | |
echo "Fehler: Alle Argumente müssen Werte enthalten" | |
echo Verwendung: ./FE2-restore.sh Lizenz-E-Mail-Adresse Passwort Domain | |
echo Besipiel: ./FE2-restore.sh \"[email protected]\" \"s8QZ060q5QvyfJ1qtW3Dx@LBn8^3lHR*\" \"alamos.feuerwehr-musterstadt.de\" | |
exit 1 | |
fi | |
email=$1 | |
password=$2 | |
url=$3 | |
# Name des FE2 Backups | |
CONFIG_ARCHIVE="FE2-Backup.zip" | |
# Name des FE2 Datenbank Dumps | |
DB_ARCHIVE="FE2-DB-Archive.gz" | |
# Pfad zu den FE2 configs | |
FE2_DOCKER_PATH="/opt/docker/alamos" | |
# Pfad zum env file | |
FE2_ENV_PATH="/opt/docker/alamos/config.env" | |
# Pfad zur Caddy config | |
CADDY_DOCKER_PATH="/opt/docker/caddy" | |
# Pfad zur Caddy config | |
CADDY_FILE_PATH="/opt/docker/caddy/Caddyfile" | |
# Pfad zum compose file | |
COMPOSE_PATH="/opt/docker/docker-compose.yaml" | |
# Verzeichnisstruktur erzeugen | |
echo "Erzeuge Verzeichnisstruktur" | |
sudo mkdir -p /opt/docker | |
sudo chown -R user:user /opt/docker | |
mkdir -p $CADDY_DOCKER_PATH/data | |
mkdir -p $CADDY_DOCKER_PATH/config | |
mkdir -p $FE2_DOCKER_PATH/data/fe2/config | |
mkdir -p $FE2_DOCKER_PATH/data/fe2/logs | |
mkdir -p $FE2_DOCKER_PATH/data/fe2/database | |
# =========================================================================================================================== | |
# CADDY | |
# =========================================================================================================================== | |
echo "Pepare Caddyfile" | |
cat << EOF > $CADDY_FILE_PATH | |
{ | |
admin off | |
log { | |
format console | |
} | |
} | |
${url} { | |
reverse_proxy alamos-fe2-server:83 | |
} | |
EOF | |
# =========================================================================================================================== | |
# ALAMOS FE2 | |
# =========================================================================================================================== | |
echo "Temp Verzeichnis erstellen" | |
temp_dir=$(mktemp -d) | |
echo "Backup entpacken" | |
unzip -o $CONFIG_ARCHIVE -d $temp_dir | |
echo "Kopiere Config ins Docker Verzeichnis" | |
cp -r $temp_dir/config/* "$FE2_DOCKER_PATH/data/fe2/config" | |
echo "Download des cacerts file aus dem Alamos GitHub repo" | |
wget -q --show-progress https://raw.githubusercontent.com/alamos-gmbh/fe2-docker/refs/heads/main/data/cacerts -O $FE2_DOCKER_PATH/data/cacerts | |
echo "Download des logback.xml aus dem Alamos GitHub repo" | |
wget -q --show-progress https://raw.githubusercontent.com/alamos-gmbh/fe2-docker/refs/heads/release/2.36/config.template/data/logback.xml -O $FE2_DOCKER_PATH/data/fe2/config/data/logback.xml | |
echo "Prepare config.env" | |
cat << EOF > $FE2_ENV_PATH | |
# Lizenz-E-Mail Adresse | |
FE2_EMAIL=${email} | |
# Lizenz-E-Mail Password | |
FE2_PASSWORD="${password}" | |
# Gewünschter Aktivierungsname | |
FE2_ACTIVATION_NAME=FE2-Docker | |
# Die nachfolgenden Werte müssen in der Regel nicht angepasst werden. | |
FE2_IP_MONGODB=alamos-fe2-db | |
FE2_PORT_MONGODB=27017 | |
# Änderung nur bei Bedarf - Wert muss auskommentiert werden, damit er genutzt wird, anderenfalls gelten die Einstellungen der logback.xml-Datei (data/fe2/config/data/logback.xml) | |
# FE2_LOG_LEVEL=debug | |
EOF | |
printf "Press any key to continue..." && read dummy | |
echo "Prepare docker-compose.yaml" | |
alamos_version=$(sed -n 's/^Version: *\([^ ]*\).*/\1/p' $temp_dir/config/version.txt) | |
mongodb_version=$(sed -n 's/^MongoDB: *\([^ ]*\).*/\1/p' $temp_dir/config/version.txt) | |
cat << EOF > $COMPOSE_PATH | |
services: | |
caddy: | |
container_name: caddy | |
image: caddy | |
volumes: | |
- /opt/docker/caddy/Caddyfile:/etc/caddy/Caddyfile | |
- /opt/docker/caddy/data:/data | |
- /opt/docker/caddy/config:/config | |
restart: unless-stopped | |
ports: | |
- "443:443" | |
networks: | |
- webserver | |
alamos-fe2-db: | |
image: mongo:${mongodb_version} | |
container_name: alamos-fe2-db | |
volumes: | |
- /opt/docker/alamos/data/fe2/config/database/configdb:/data/configdb | |
- /opt/docker/alamos/data/fe2/config/database:/data/db | |
restart: unless-stopped | |
networks: | |
- alamos | |
alamos-fe2-server: | |
image: alamosgmbh/fe2:${alamos_version} | |
container_name: alamos-fe2-server | |
hostname: ALAMOS-FE2 | |
env_file: | |
- /opt/docker/alamos/config.env | |
volumes: | |
- /opt/docker/alamos/data/fe2/logs:/Logs | |
- /opt/docker/alamos/data/fe2/config:/Config | |
- /opt/docker/alamos/data/cacerts:/usr/lib/jvm/default-jvm/jre/lib/security/cacerts | |
- /var/lib/dbus/machine-id:/var/lib/dbus/machine-id | |
- /etc/timezone:/etc/timezone:ro | |
- /etc/localtime:/etc/localtime:ro | |
restart: unless-stopped | |
healthcheck: | |
test: curl --fail http://localhost:83/ || exit 1 | |
interval: 60s | |
retries: 3 | |
start_period: 60s | |
timeout: 10s | |
depends_on: | |
- alamos-fe2-db | |
networks: | |
- alamos | |
- webserver | |
networks: | |
webserver: | |
name: webserver | |
driver: bridge | |
alamos: | |
name: alamos | |
EOF | |
echo "Datenbank wiederherstellen" | |
echo "Datenbank Container starten" | |
docker compose -f $COMPOSE_PATH up -d alamos-fe2-db | |
echo "Datenbank dump wiederherstellen" | |
docker compose -f $COMPOSE_PATH exec -T alamos-fe2-db sh -c "mongorestore --drop --gzip --archive " < "$temp_dir/db/$DB_ARCHIVE" | |
echo "Inputs löschen" | |
docker compose -f $COMPOSE_PATH exec -T alamos-fe2-db mongo de_alamos_fe2 --eval 'db.inputPluginDatabaseEntry.deleteMany({ "pluginName": { $nin: ["FE2Input", "MailInput", "DailyInput"] } })' | |
echo "Container stoppen" | |
docker compose -f $COMPOSE_PATH stop alamos-fe2-db | |
docker compose -f $COMPOSE_PATH stop alamos-fe2-server | |
echo "Container starten" | |
docker compose -f $COMPOSE_PATH up -d |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment