endeavour: .env-Rechte, Socket-Prüfung und HTTPS-Proxy korrigiert

- deploy.sh setzt die .env auf root:mareike-docker 0640 und prüft DB_SOCKET/Socket vor dem Build
- optionale shared/deploy.conf für server-spezifische Einstellungen (z. B. MAREIKE_DB_SOCKET_DIR)
- nginx: absolute_redirect off, damit keine http://-Redirects entstehen
- Anleitung: Proxy per mod_rewrite nur unter HTTPS, keine KeyHelp-Weiterleitung, lv auf der Hauptdomain

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-26 14:30:42 +02:00
co-authored by Claude Opus 5.5
parent 985c9ce07e
commit c4ca101594
4 changed files with 115 additions and 24 deletions
+34
View File
@@ -13,6 +13,13 @@
set -euo pipefail
MAREIKE_BASE="${MAREIKE_BASE:-/opt/mareike}"
# Server-spezifische Einstellungen, z. B. MAREIKE_DB_SOCKET_DIR=/var/lib/mysql
if [[ -f "$MAREIKE_BASE/shared/deploy.conf" ]]; then
# shellcheck source=/dev/null
source "$MAREIKE_BASE/shared/deploy.conf"
fi
MAREIKE_USER="${MAREIKE_USER:-mareike-docker}"
SRC="$MAREIKE_BASE/src"
@@ -48,6 +55,28 @@ if [[ ! -f "$MAREIKE_ENV_FILE" ]]; then
exit 1
fi
# Der Container läuft als $MAREIKE_USER und muss die eingebundene .env lesen können.
# Ist sie unlesbar, ignoriert Laravel sie still und fällt z. B. auf SQLite zurück.
chown "root:$MAREIKE_GID" "$MAREIKE_ENV_FILE"
chmod 0640 "$MAREIKE_ENV_FILE"
# Der Container erreicht die KeyHelp-MariaDB nur über den Socket im eingebundenen Verzeichnis /run/mysqld.
DB_SOCKET="$( (grep -E '^DB_SOCKET=' "$MAREIKE_ENV_FILE" || true) | tail -n 1 | cut -d= -f2- | tr -d "\"' \r")"
if [[ -z "$DB_SOCKET" ]]; then
echo "DB_SOCKET fehlt in $MAREIKE_ENV_FILE (erwartet: DB_SOCKET=/run/mysqld/mysqld.sock)." >&2
exit 1
fi
if [[ "$(dirname "$DB_SOCKET")" != "/run/mysqld" ]]; then
echo "DB_SOCKET muss in /run/mysqld/ liegen (Mount-Punkt im Container), ist aber: $DB_SOCKET" >&2
exit 1
fi
if [[ ! -S "$MAREIKE_DB_SOCKET_DIR/$(basename "$DB_SOCKET")" ]]; then
echo "Kein MariaDB-Socket unter $MAREIKE_DB_SOCKET_DIR/$(basename "$DB_SOCKET")." >&2
echo "Pfad prüfen mit: mysql -NBe 'SELECT @@socket;'" >&2
echo "Liegt er woanders, MAREIKE_DB_SOCKET_DIR in $MAREIKE_BASE/shared/deploy.conf setzen." >&2
exit 1
fi
echo "==> Quellcode auf '$REF' bringen"
git -C "$SRC" fetch --tags --prune --force origin
if git -C "$SRC" show-ref --verify --quiet "refs/remotes/origin/$REF"; then
@@ -70,6 +99,11 @@ done
echo "==> Images bauen"
compose build --pull
if ! compose run --rm --no-deps app php -r 'exit(is_readable(".env") ? 0 : 1);'; then
echo ".env ist im Container nicht lesbar – Besitzer/Rechte von $MAREIKE_ENV_FILE prüfen." >&2
exit 1
fi
echo "==> Datenbank migrieren"
compose run --rm --no-deps app php artisan migrate --force