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:
@@ -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
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ APP_ENV=production
|
||||
APP_DEBUG=false
|
||||
# Erzeugen mit: echo "base64:$(openssl rand -base64 32)" – danach NIE mehr ändern (verschlüsselte Daten!)
|
||||
APP_KEY=
|
||||
# Domain des Dach-Tenants "lv"
|
||||
APP_URL=https://<lv-subdomain>.meine-anmeldung.digital
|
||||
# Die Hauptdomain ist der Dach-Tenant "lv"; Gruppen laufen als <gruppe>.meine-anmeldung.digital
|
||||
APP_URL=https://meine-anmeldung.digital
|
||||
# Kein ASSET_URL: Assets kommen von der jeweiligen Tenant-Domain selbst.
|
||||
|
||||
APP_LOCALE=de
|
||||
|
||||
@@ -17,6 +17,10 @@ server {
|
||||
index index.php;
|
||||
|
||||
server_tokens off;
|
||||
|
||||
# nginx sieht hinter dem Proxy nur http. Eigene Redirects (z. B. /tinymce → /tinymce/) daher relativ halten,
|
||||
# sonst landet der Browser auf http://.
|
||||
absolute_redirect off;
|
||||
client_max_body_size 70m;
|
||||
|
||||
location / {
|
||||
|
||||
Reference in New Issue
Block a user