Deploy via rsync statt git auf DS — kein git auf DS nötig
This commit is contained in:
parent
4499055b99
commit
43c63f0e59
2 changed files with 141 additions and 141 deletions
|
|
@ -2,10 +2,9 @@
|
|||
# ==============================================================
|
||||
# BAN YARO — Ersteinrichtung auf der DiskStation
|
||||
#
|
||||
# Läuft auf deinem MAC und richtet die DS per SSH ein.
|
||||
# Du musst dieses Skript NICHT auf die DS kopieren.
|
||||
# Läuft auf deinem MAC, richtet DS per SSH + rsync ein.
|
||||
# Kein git auf DS nötig — Dateien kommen direkt vom Mac.
|
||||
#
|
||||
# Voraussetzung: SSH-Port auf DS offen, SSH-Key eingerichtet
|
||||
# Aufruf: bash scripts/setup-ds.sh
|
||||
# ==============================================================
|
||||
|
||||
|
|
@ -15,44 +14,32 @@ DS_HOST="ds"
|
|||
DS_IP="10.47.11.10"
|
||||
DS_SSH_PORT="22"
|
||||
DS_PATH="/volume1/docker/ban-yaro"
|
||||
REPO_URL="https://git.motocamp.de/rene/banyaro.git" # HTTPS, kein SSH-Key auf DS nötig
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
|
||||
# Farben
|
||||
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
|
||||
ok() { echo -e "${GREEN} ✓ $1${NC}"; }
|
||||
warn() { echo -e "${YELLOW} ⚠ $1${NC}"; }
|
||||
err() { echo -e "${RED} ✗ $1${NC}"; }
|
||||
err() { echo -e "${RED} ✗ $1${NC}"; exit 1; }
|
||||
|
||||
echo ""
|
||||
echo "=== Ban Yaro — Ersteinrichtung DS1621 ==="
|
||||
echo ""
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# 0. SSH-Port prüfen BEVOR wir irgendwas versuchen
|
||||
# 0. SSH-Port prüfen
|
||||
# ----------------------------------------------------------
|
||||
echo "→ Prüfe SSH-Erreichbarkeit (${DS_IP}:${DS_SSH_PORT})..."
|
||||
|
||||
if ! nc -z -w3 "$DS_IP" "$DS_SSH_PORT" 2>/dev/null; then
|
||||
err "DS nicht erreichbar auf Port ${DS_SSH_PORT}!"
|
||||
echo ""
|
||||
echo " Mögliche Ursachen:"
|
||||
echo " • SSH-Port in der Fritz!Box ist geschlossen"
|
||||
echo " • DS-Firewall blockiert Port ${DS_SSH_PORT}"
|
||||
echo " • DS ist offline"
|
||||
echo ""
|
||||
echo " → SSH-Port öffnen, dann erneut ausführen."
|
||||
echo ""
|
||||
exit 1
|
||||
err "DS nicht erreichbar auf Port ${DS_SSH_PORT}!
|
||||
Ursachen: SSH-Port in Fritz!Box geschlossen, DS offline
|
||||
→ Port öffnen, dann erneut ausführen."
|
||||
fi
|
||||
ok "SSH-Port ${DS_SSH_PORT} erreichbar"
|
||||
|
||||
# SSH-Verbindung selbst testen
|
||||
if ! ssh -q -o ConnectTimeout=5 -o BatchMode=yes "$DS_HOST" exit 2>/dev/null; then
|
||||
err "SSH-Verbindung zu '${DS_HOST}' fehlgeschlagen!"
|
||||
echo ""
|
||||
echo " Prüfe: ssh ${DS_HOST} (muss ohne Passwort funktionieren)"
|
||||
echo ""
|
||||
exit 1
|
||||
err "SSH-Verbindung fehlgeschlagen — prüfe: ssh ${DS_HOST}"
|
||||
fi
|
||||
ok "SSH-Verbindung funktioniert"
|
||||
|
||||
|
|
@ -66,27 +53,27 @@ ssh "$DS_HOST" "
|
|||
mkdir -p '${DS_PATH}/data/media/dogs'
|
||||
mkdir -p '${DS_PATH}/data/media/diary'
|
||||
mkdir -p '${DS_PATH}/data/media/poison'
|
||||
echo ' Verzeichnisstruktur:'
|
||||
find '${DS_PATH}/data' -type d | sed 's/^/ /'
|
||||
"
|
||||
ok "Verzeichnisse angelegt"
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# 2. Repo klonen oder aktualisieren
|
||||
# 2. Dateien per rsync übertragen (kein git auf DS nötig)
|
||||
# ----------------------------------------------------------
|
||||
echo ""
|
||||
echo "→ Repository..."
|
||||
echo "→ Dateien übertragen (rsync)..."
|
||||
|
||||
ssh "$DS_HOST" "
|
||||
if [ -d '${DS_PATH}/.git' ]; then
|
||||
echo ' Existiert bereits — aktualisiere...'
|
||||
cd '${DS_PATH}' && git pull
|
||||
else
|
||||
echo ' Klone von ${REPO_URL}...'
|
||||
git clone '${REPO_URL}' '${DS_PATH}'
|
||||
fi
|
||||
"
|
||||
ok "Repository bereit"
|
||||
rsync -az --delete \
|
||||
--exclude='.git' \
|
||||
--exclude='data/' \
|
||||
--exclude='backend/venv/' \
|
||||
--exclude='backend/__pycache__/' \
|
||||
--exclude='backend/*.pyc' \
|
||||
--exclude='.env' \
|
||||
--exclude='*.db' \
|
||||
--exclude='.DS_Store' \
|
||||
"${ROOT}/" "${DS_HOST}:${DS_PATH}/"
|
||||
|
||||
ok "Dateien übertragen"
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# 3. .env anlegen
|
||||
|
|
@ -94,46 +81,43 @@ ok "Repository bereit"
|
|||
echo ""
|
||||
echo "→ Konfiguration (.env)..."
|
||||
|
||||
ssh "$DS_HOST" "
|
||||
if [ -f '${DS_PATH}/.env' ]; then
|
||||
echo ' .env existiert bereits — wird nicht überschrieben.'
|
||||
else
|
||||
cp '${DS_PATH}/.env.example' '${DS_PATH}/.env'
|
||||
echo ' .env angelegt aus .env.example'
|
||||
fi
|
||||
"
|
||||
ENV_EXISTS=$(ssh "$DS_HOST" "[ -f '${DS_PATH}/.env' ] && echo yes || echo no")
|
||||
|
||||
# Prüfen ob JWT_SECRET noch der Default ist
|
||||
JWT_CHECK=$(ssh "$DS_HOST" "grep 'JWT_SECRET' '${DS_PATH}/.env' | grep -c 'bitte-aendern'" 2>/dev/null || true)
|
||||
if [ "$JWT_CHECK" -gt "0" ]; then
|
||||
warn ".env muss noch angepasst werden!"
|
||||
if [ "$ENV_EXISTS" = "yes" ]; then
|
||||
ok ".env existiert bereits"
|
||||
else
|
||||
ssh "$DS_HOST" "cp '${DS_PATH}/.env.example' '${DS_PATH}/.env'"
|
||||
warn ".env angelegt — muss noch angepasst werden!"
|
||||
fi
|
||||
|
||||
# Prüfen ob JWT_SECRET noch Default ist
|
||||
JWT_UNSET=$(ssh "$DS_HOST" "grep -c 'bitte-aendern' '${DS_PATH}/.env' 2>/dev/null || echo 0")
|
||||
|
||||
if [ "$JWT_UNSET" -gt "0" ]; then
|
||||
echo ""
|
||||
echo " Mindestens setzen:"
|
||||
warn "JWT_SECRET ist noch nicht gesetzt!"
|
||||
echo ""
|
||||
echo " ssh ${DS_HOST}"
|
||||
echo " nano ${DS_PATH}/.env"
|
||||
echo ""
|
||||
echo " ┌─────────────────────────────────────────────────────┐"
|
||||
echo " │ JWT_SECRET=<langer-zufaelliger-string> │"
|
||||
echo " │ KI_MODE=local │"
|
||||
echo " │ KI_LOCAL_URL=http://10.47.11.10:1234/v1 │"
|
||||
echo " └─────────────────────────────────────────────────────┘"
|
||||
echo " ┌──────────────────────────────────────────────┐"
|
||||
echo " │ Mindestens setzen: │"
|
||||
echo " │ JWT_SECRET=<langer-zufaelliger-string> │"
|
||||
echo " │ KI_MODE=local │"
|
||||
echo " └──────────────────────────────────────────────┘"
|
||||
echo ""
|
||||
read -r -p " .env jetzt bearbeiten? [J/n] " REPLY
|
||||
if [[ "${REPLY}" =~ ^[Jj]$ ]] || [[ -z "${REPLY}" ]]; then
|
||||
ssh -t "$DS_HOST" "nano '${DS_PATH}/.env'"
|
||||
if [[ "${REPLY}" =~ ^[Jj]$|^$ ]]; then
|
||||
ssh -t "$DS_HOST" "vi '${DS_PATH}/.env'"
|
||||
else
|
||||
warn "Nicht vergessen: .env vor dem nächsten Start anpassen!"
|
||||
warn "Nicht vergessen: .env vor dem Start anpassen!"
|
||||
fi
|
||||
else
|
||||
ok ".env konfiguriert"
|
||||
fi
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# 4. Docker-Image bauen und starten
|
||||
# 4. Docker bauen und starten
|
||||
# ----------------------------------------------------------
|
||||
echo ""
|
||||
echo "→ Docker build (kann 2-3 Minuten dauern)..."
|
||||
echo "→ Docker build (dauert 2-3 Minuten)..."
|
||||
|
||||
ssh "$DS_HOST" "
|
||||
cd '${DS_PATH}' &&
|
||||
|
|
@ -147,33 +131,30 @@ ok "Container gestartet"
|
|||
# ----------------------------------------------------------
|
||||
echo ""
|
||||
echo "→ Warte auf App-Start..."
|
||||
sleep 4
|
||||
sleep 5
|
||||
|
||||
STATUS=$(ssh "$DS_HOST" \
|
||||
"sudo docker ps --filter name=ban-yaro --format '{{.Status}}'" 2>/dev/null || true)
|
||||
|
||||
STATUS=$(ssh "$DS_HOST" "sudo docker ps --filter name=ban-yaro --format '{{.Status}}'" 2>/dev/null || true)
|
||||
if echo "$STATUS" | grep -q "Up"; then
|
||||
ok "Container läuft: ${STATUS}"
|
||||
ok "Container läuft — ${STATUS}"
|
||||
else
|
||||
err "Container-Status: ${STATUS}"
|
||||
echo " → Logs prüfen: make logs"
|
||||
warn "Container-Status: '${STATUS}' — Logs prüfen: make logs"
|
||||
fi
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# 6. Zusammenfassung
|
||||
# 6. Fertig
|
||||
# ----------------------------------------------------------
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "=================================="
|
||||
ok "Setup abgeschlossen!"
|
||||
echo ""
|
||||
echo " Nächste Schritte:"
|
||||
echo ""
|
||||
echo " 1. NPM-Eintrag anlegen:"
|
||||
echo " Host: banyaro.app"
|
||||
echo " Ziel: http://10.47.11.10:3010"
|
||||
echo " NPM-Eintrag anlegen:"
|
||||
echo " Host: banyaro.app"
|
||||
echo " Ziel: http://10.47.11.10:3010"
|
||||
echo ""
|
||||
echo " 2. Logs prüfen:"
|
||||
echo " make logs"
|
||||
echo ""
|
||||
echo " 3. App aufrufen:"
|
||||
echo " https://banyaro.app"
|
||||
echo " Logs: make logs"
|
||||
echo " App: https://banyaro.app"
|
||||
echo ""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue