KI-AGENT: Ergänze Selfhost Curl Installer
All checks were successful
Build and Push Docker Images / build-backend (push) Successful in 11s
Build and Push Docker Images / build-frontend (push) Successful in 11s
Build and Push Docker Images / build-website (push) Successful in 11s
Build and Push Docker Images / build-docs (push) Successful in 11s
All checks were successful
Build and Push Docker Images / build-backend (push) Successful in 11s
Build and Push Docker Images / build-frontend (push) Successful in 11s
Build and Push Docker Images / build-website (push) Successful in 11s
Build and Push Docker Images / build-docs (push) Successful in 11s
This commit is contained in:
14
README.md
14
README.md
@@ -138,6 +138,20 @@ Alternativ kannst du die Konfiguration geführt erzeugen lassen:
|
||||
bash scripts/selfhost-setup.sh
|
||||
```
|
||||
|
||||
Auf einem frischen Server kannst du den Checkout und die Konfiguration direkt per One-Liner vorbereiten:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://git.federspiel.tech/flfeders/FEDEO/raw/branch/dev/scripts/selfhost-install.sh | bash
|
||||
```
|
||||
|
||||
Der schnelle One-Liner mit direktem Stack-Start:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://git.federspiel.tech/flfeders/FEDEO/raw/branch/dev/scripts/selfhost-install.sh | bash -s -- --simple --start
|
||||
```
|
||||
|
||||
Der Installer prüft Basispakete, installiert Docker auf Wunsch über das offizielle Docker-Installationsscript, klont oder aktualisiert FEDEO nach `/opt/fedeo` und startet anschließend den geführten Setup-Assistenten.
|
||||
|
||||
Für den schnellen Standardpfad:
|
||||
|
||||
```bash
|
||||
|
||||
185
scripts/selfhost-install.sh
Executable file
185
scripts/selfhost-install.sh
Executable file
@@ -0,0 +1,185 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
FEDEO_REPO_URL="${FEDEO_REPO_URL:-https://git.federspiel.tech/flfeders/FEDEO.git}"
|
||||
FEDEO_REF="${FEDEO_REF:-dev}"
|
||||
FEDEO_DIR="${FEDEO_DIR:-/opt/fedeo}"
|
||||
SETUP_ARGS=("$@")
|
||||
FEDEO_USE_SUDO_DOCKER="${FEDEO_USE_SUDO_DOCKER:-false}"
|
||||
|
||||
SUDO=""
|
||||
if [[ "$(id -u)" -ne 0 ]]; then
|
||||
if command -v sudo >/dev/null 2>&1; then
|
||||
SUDO="sudo"
|
||||
else
|
||||
echo "Dieses Script braucht Schreibrechte für $FEDEO_DIR oder sudo." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
usage() {
|
||||
cat <<'USAGE'
|
||||
FEDEO Selfhost Installer
|
||||
|
||||
Typischer One-Liner:
|
||||
curl -fsSL https://git.federspiel.tech/flfeders/FEDEO/raw/branch/dev/scripts/selfhost-install.sh | bash
|
||||
|
||||
Mit Optionen für den Setup-Assistenten:
|
||||
curl -fsSL https://git.federspiel.tech/flfeders/FEDEO/raw/branch/dev/scripts/selfhost-install.sh | bash -s -- --simple --start
|
||||
curl -fsSL https://git.federspiel.tech/flfeders/FEDEO/raw/branch/dev/scripts/selfhost-install.sh | bash -s -- --advanced
|
||||
|
||||
Umgebung:
|
||||
FEDEO_DIR=/opt/fedeo
|
||||
FEDEO_REPO_URL=https://git.federspiel.tech/flfeders/FEDEO.git
|
||||
FEDEO_REF=dev
|
||||
USAGE
|
||||
}
|
||||
|
||||
yes_no() {
|
||||
local label="$1"
|
||||
local default_value="${2:-j}"
|
||||
local answer
|
||||
|
||||
while true; do
|
||||
read -r -p "$label [$default_value]: " answer
|
||||
answer="${answer:-$default_value}"
|
||||
case "$answer" in
|
||||
y|Y|j|J|yes|Yes|ja|Ja)
|
||||
return 0
|
||||
;;
|
||||
n|N|no|No|nein|Nein)
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
echo "Bitte ja oder nein eingeben."
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
have() {
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
install_base_packages() {
|
||||
local missing=()
|
||||
for binary in git curl openssl; do
|
||||
if ! have "$binary"; then
|
||||
missing+=("$binary")
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "${#missing[@]}" -eq 0 ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if ! have apt-get; then
|
||||
echo "Fehlende Programme: ${missing[*]}" >&2
|
||||
echo "Bitte installiere sie manuell und starte den Installer erneut." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Installiere Basispakete: ${missing[*]}"
|
||||
$SUDO apt-get update
|
||||
$SUDO apt-get install -y ca-certificates curl git openssl
|
||||
}
|
||||
|
||||
ensure_docker() {
|
||||
if have docker && docker compose version >/dev/null 2>&1; then
|
||||
FEDEO_USE_SUDO_DOCKER="false"
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ -n "$SUDO" ]] && have docker && $SUDO docker compose version >/dev/null 2>&1; then
|
||||
FEDEO_USE_SUDO_DOCKER="true"
|
||||
return
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Docker Engine mit Compose Plugin wurde nicht gefunden."
|
||||
if ! have curl; then
|
||||
echo "curl fehlt, Docker kann nicht automatisch installiert werden." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if yes_no "Docker jetzt über das offizielle Docker-Installationsscript installieren?" "j"; then
|
||||
curl -fsSL https://get.docker.com | $SUDO sh
|
||||
else
|
||||
echo "Bitte Docker Engine inkl. Compose Plugin installieren und den Installer erneut starten." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if docker compose version >/dev/null 2>&1; then
|
||||
FEDEO_USE_SUDO_DOCKER="false"
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ -n "$SUDO" ]] && $SUDO docker compose version >/dev/null 2>&1; then
|
||||
FEDEO_USE_SUDO_DOCKER="true"
|
||||
return
|
||||
fi
|
||||
|
||||
if ! docker compose version >/dev/null 2>&1; then
|
||||
echo "Docker Compose ist nach der Installation noch nicht verfügbar." >&2
|
||||
echo "Melde dich ggf. neu an oder prüfe die Docker-Installation." >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
prepare_checkout() {
|
||||
echo
|
||||
echo "Zielverzeichnis: $FEDEO_DIR"
|
||||
echo "Repository: $FEDEO_REPO_URL"
|
||||
echo "Version/Branch: $FEDEO_REF"
|
||||
|
||||
if [[ -d "$FEDEO_DIR/.git" ]]; then
|
||||
echo "Bestehenden FEDEO-Checkout aktualisieren..."
|
||||
git -C "$FEDEO_DIR" fetch --prune origin
|
||||
git -C "$FEDEO_DIR" checkout "$FEDEO_REF"
|
||||
git -C "$FEDEO_DIR" pull --ff-only origin "$FEDEO_REF"
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ -e "$FEDEO_DIR" ]]; then
|
||||
echo "$FEDEO_DIR existiert bereits, ist aber kein Git-Checkout." >&2
|
||||
echo "Bitte FEDEO_DIR auf ein leeres Ziel setzen oder das Verzeichnis prüfen." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
$SUDO mkdir -p "$FEDEO_DIR"
|
||||
if [[ -n "$SUDO" ]]; then
|
||||
$SUDO chown "$(id -u):$(id -g)" "$FEDEO_DIR"
|
||||
fi
|
||||
|
||||
git clone --branch "$FEDEO_REF" "$FEDEO_REPO_URL" "$FEDEO_DIR"
|
||||
}
|
||||
|
||||
main() {
|
||||
if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cat <<'EOF'
|
||||
FEDEO Selfhost Installer
|
||||
|
||||
Dieser Installer bringt die typische Serverstruktur mit:
|
||||
- prüft Basispakete
|
||||
- installiert Docker optional automatisch
|
||||
- klont oder aktualisiert FEDEO nach /opt/fedeo
|
||||
- startet danach den geführten Selfhost-Assistenten
|
||||
|
||||
EOF
|
||||
|
||||
install_base_packages
|
||||
ensure_docker
|
||||
prepare_checkout
|
||||
|
||||
echo
|
||||
echo "Starte Selfhost-Assistent..."
|
||||
cd "$FEDEO_DIR"
|
||||
export FEDEO_USE_SUDO_DOCKER
|
||||
exec bash scripts/selfhost-setup.sh "${SETUP_ARGS[@]}"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
@@ -10,6 +10,14 @@ MODE=""
|
||||
START_STACK="ask"
|
||||
FORCE="false"
|
||||
|
||||
compose() {
|
||||
if [[ "${FEDEO_USE_SUDO_DOCKER:-false}" == "true" ]]; then
|
||||
sudo docker compose "$@"
|
||||
else
|
||||
docker compose "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
usage() {
|
||||
cat <<'USAGE'
|
||||
FEDEO Selfhost Setup
|
||||
@@ -458,7 +466,7 @@ main() {
|
||||
fi
|
||||
|
||||
if [[ "$START_STACK" == "yes" ]]; then
|
||||
docker compose -f "$COMPOSE_FILE" up -d
|
||||
compose -f "$COMPOSE_FILE" up -d
|
||||
else
|
||||
echo
|
||||
echo "Start später mit:"
|
||||
|
||||
Reference in New Issue
Block a user