Compare commits

...

2 Commits

Author SHA1 Message Date
99501fb924 KI-AGENT: Uninstall für Selfhost-Setup ergänzen
All checks were successful
Build and Push Docker Images / build-backend (push) Successful in 12s
Build and Push Docker Images / build-frontend (push) Successful in 11s
Build and Push Docker Images / build-docs (push) Successful in 11s
Build and Push Docker Images / build-website (push) Successful in 11s
2026-06-03 09:55:40 +02:00
2fdc89565c KI-AGENT: Encryption-Key im Selfhost-Setup als Hex erzeugen 2026-06-03 09:53:23 +02:00

View File

@@ -9,6 +9,8 @@ COMPOSE_FILE="${FEDEO_COMPOSE_FILE:-$ROOT_DIR/docker-compose.yml}"
MODE="" MODE=""
START_STACK="ask" START_STACK="ask"
FORCE="false" FORCE="false"
UNINSTALL="false"
PURGE="false"
TTY_INPUT="${FEDEO_TTY_INPUT:-/dev/tty}" TTY_INPUT="${FEDEO_TTY_INPUT:-/dev/tty}"
TTY_FD="" TTY_FD=""
@@ -53,6 +55,8 @@ Nutzung:
bash scripts/selfhost-setup.sh --simple bash scripts/selfhost-setup.sh --simple
bash scripts/selfhost-setup.sh --advanced bash scripts/selfhost-setup.sh --advanced
bash scripts/selfhost-setup.sh --simple --start bash scripts/selfhost-setup.sh --simple --start
bash scripts/selfhost-setup.sh --uninstall
bash scripts/selfhost-setup.sh --uninstall --purge
Optionen: Optionen:
--simple Kurzer Assistent mit lokalen Diensten und sicheren Defaults --simple Kurzer Assistent mit lokalen Diensten und sicheren Defaults
@@ -60,6 +64,8 @@ Optionen:
--start Startet den Stack nach dem Schreiben der Konfiguration --start Startet den Stack nach dem Schreiben der Konfiguration
--no-start Schreibt nur Konfiguration und Verzeichnisse --no-start Schreibt nur Konfiguration und Verzeichnisse
--force Überschreibt eine vorhandene .env ohne Rückfrage --force Überschreibt eine vorhandene .env ohne Rückfrage
--uninstall Stoppt und entfernt den Docker-Compose-Stack
--purge Entfernt beim Uninstall zusätzlich .env und lokale Datenverzeichnisse
USAGE USAGE
} }
@@ -80,6 +86,12 @@ while [[ $# -gt 0 ]]; do
--force) --force)
FORCE="true" FORCE="true"
;; ;;
--uninstall)
UNINSTALL="true"
;;
--purge)
PURGE="true"
;;
-h|--help) -h|--help)
usage usage
exit 0 exit 0
@@ -108,6 +120,14 @@ random_secret() {
fi fi
} }
random_hex_secret() {
if command -v openssl >/dev/null 2>&1; then
openssl rand -hex 32 | tr -d '\n'
else
LC_ALL=C tr -dc 'a-f0-9' </dev/urandom | head -c 64
fi
}
env_quote() { env_quote() {
local value="$1" local value="$1"
value="${value//\'/\'\\\'\'}" value="${value//\'/\'\\\'\'}"
@@ -377,7 +397,80 @@ prepare_directories() {
chmod 600 "$ROOT_DIR/traefik/letsencrypt/acme.json" chmod 600 "$ROOT_DIR/traefik/letsencrypt/acme.json"
} }
uninstall_stack() {
need_file "$COMPOSE_FILE"
if [[ ! -f "$ENV_FILE" ]]; then
echo "Keine .env gefunden. Docker Compose wird mit Standardwerten ausgeführt."
fi
echo
echo "FEDEO Selfhost Uninstall"
echo "Compose-Datei: $COMPOSE_FILE"
echo
if [[ "$FORCE" != "true" ]]; then
if ! yes_no "Docker-Compose-Stack stoppen und Container/Netzwerke entfernen?" "n"; then
echo "Abgebrochen."
exit 0
fi
fi
if [[ -f "$ENV_FILE" ]]; then
compose_stack down --remove-orphans
else
compose -f "$COMPOSE_FILE" down --remove-orphans
fi
if [[ "$PURGE" != "true" ]]; then
echo
echo "Uninstall abgeschlossen. Lokale Daten und .env wurden behalten."
echo "Für vollständiges Entfernen erneut mit --uninstall --purge ausführen."
return
fi
echo
echo "Achtung: --purge entfernt lokale Datenbanken, Dateien, Matrix-Daten, Zertifikate und .env."
echo "Betroffene Pfade:"
echo " $ENV_FILE"
echo " $ROOT_DIR/postgres"
echo " $ROOT_DIR/minio"
echo " $ROOT_DIR/matrix/postgres"
echo " $ROOT_DIR/matrix/synapse"
echo " $ROOT_DIR/traefik/letsencrypt"
echo " $ROOT_DIR/traefik/logs"
if [[ "$FORCE" != "true" ]]; then
if ! yes_no "Diese lokalen Daten endgültig löschen?" "n"; then
echo "Daten wurden behalten."
return
fi
fi
rm -rf \
"$ENV_FILE" \
"$ROOT_DIR/postgres" \
"$ROOT_DIR/minio" \
"$ROOT_DIR/matrix/postgres" \
"$ROOT_DIR/matrix/synapse" \
"$ROOT_DIR/traefik/letsencrypt" \
"$ROOT_DIR/traefik/logs"
echo
echo "Uninstall inklusive lokaler Daten abgeschlossen."
}
main() { main() {
if [[ "$UNINSTALL" == "true" ]]; then
uninstall_stack
return
fi
if [[ "$PURGE" == "true" ]]; then
echo "--purge kann nur zusammen mit --uninstall verwendet werden." >&2
exit 1
fi
need_file "$COMPOSE_FILE" need_file "$COMPOSE_FILE"
need_file "$ENV_EXAMPLE" need_file "$ENV_EXAMPLE"
@@ -413,7 +506,7 @@ main() {
minio_password="$(random_secret)" minio_password="$(random_secret)"
cookie_secret="$(random_secret)" cookie_secret="$(random_secret)"
jwt_secret="$(random_secret)" jwt_secret="$(random_secret)"
encryption_key="$(random_secret)" encryption_key="$(random_hex_secret)"
m2m_key="$(random_secret)" m2m_key="$(random_secret)"
matrix_db_password="$(random_secret)" matrix_db_password="$(random_secret)"
matrix_turn_secret="$(random_secret)" matrix_turn_secret="$(random_secret)"