#!/usr/bin/env bash set -euo pipefail source ./lib.sh log "App bereitstellen …" mkdir -p "$(dirname "$APP_DIR")" chown -R "$APP_USER":"$APP_GROUP" "$(dirname "$APP_DIR")" # Repo holen oder Laravel anlegen – passe GIT_REPO/GIT_BRANCH bei Bedarf an GIT_REPO="${GIT_REPO:-https://git.nexlab.at/boban/mailwolt.git}" GIT_BRANCH="${GIT_BRANCH:-main}" if [[ "${GIT_REPO}" == "https://example.com/your-repo-placeholder.git" ]]; then [[ -d "$APP_DIR" && -n "$(ls -A "$APP_DIR" 2>/dev/null || true)" ]] || \ sudo -u "$APP_USER" -H bash -lc "cd /var/www && composer create-project laravel/laravel ${APP_USER} --no-interaction" else if [[ ! -d "${APP_DIR}/.git" ]]; then sudo -u "$APP_USER" -H bash -lc "git clone --depth=1 -b ${GIT_BRANCH} ${GIT_REPO} ${APP_DIR}" else sudo -u "$APP_USER" -H bash -lc "cd ${APP_DIR} && git fetch --depth=1 origin ${GIT_BRANCH} && git reset --hard origin/${GIT_BRANCH}" fi [[ -f "${APP_DIR}/composer.json" ]] && sudo -u "$APP_USER" -H bash -lc "cd ${APP_DIR} && composer install --no-interaction --prefer-dist" fi ENV_FILE="${APP_DIR}/.env" sudo -u "$APP_USER" -H bash -lc "cd ${APP_DIR} && cp -n .env.example .env || true" grep -q '^APP_KEY=' "$ENV_FILE" || echo "APP_KEY=" >> "$ENV_FILE" sudo -u "$APP_USER" -H bash -lc "cd ${APP_DIR} && php artisan key:generate --force || true" # APP_URL heuristisch APP_URL="http://${SERVER_PUBLIC_IPV4}" UI_CERT="/etc/ssl/ui/fullchain.pem"; UI_KEY="/etc/ssl/ui/privkey.pem" if [[ -f "$UI_CERT" && -f "$UI_KEY" && resolve_ok "$UI_HOST" ]]; then APP_URL="https://${UI_HOST}" fi upsert_env APP_NAME "${APP_NAME}" upsert_env APP_URL "${APP_URL}" upsert_env APP_ENV "production" upsert_env APP_DEBUG "false" upsert_env APP_LOCALE "${APP_LOCALE}" upsert_env APP_FALLBACK_LOCALE "en" upsert_env SERVER_PUBLIC_IPV4 "${SERVER_PUBLIC_IPV4}" upsert_env SERVER_PUBLIC_IPV6 "${SERVER_PUBLIC_IPV6}" upsert_env BASE_DOMAIN "${BASE_DOMAIN}" upsert_env UI_SUB "${UI_SUB}" upsert_env WEBMAIL_SUB "${WEBMAIL_SUB}" upsert_env SYSTEM_SUB "${SYSTEM_SUB}" upsert_env MTA_SUB "${MTA_SUB}" upsert_env DB_CONNECTION "mysql" upsert_env DB_HOST "127.0.0.1" upsert_env DB_PORT "3306" upsert_env DB_DATABASE "${DB_NAME}" upsert_env DB_USERNAME "${DB_USER}" upsert_env DB_PASSWORD "${DB_PASS}" upsert_env CACHE_DRIVER "redis" upsert_env SESSION_DRIVER "redis" upsert_env REDIS_CLIENT "phpredis" upsert_env REDIS_HOST "127.0.0.1" upsert_env REDIS_PORT "6379" upsert_env REDIS_PASSWORD "${REDIS_PASS:-}" chown -R "$APP_USER":"$APP_GROUP" "$APP_DIR" chmod -R u=rwX,g=rwX,o=rX "$APP_DIR" install -d -m 0775 -o "$APP_USER" -g "$APP_GROUP" "$APP_DIR/storage" "$APP_DIR/bootstrap/cache" sudo -u "$APP_USER" -H bash -lc "cd ${APP_DIR} && php artisan optimize:clear && php artisan config:cache"