From ef3b43ccbddb5dfceca993564b9548470a171312 Mon Sep 17 00:00:00 2001 From: boban Date: Sat, 18 Apr 2026 22:58:04 +0200 Subject: [PATCH] Improve: setup.sh + deploy.sh complete --- setup.sh | 163 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 104 insertions(+), 59 deletions(-) diff --git a/setup.sh b/setup.sh index b493e30..21cdbc9 100755 --- a/setup.sh +++ b/setup.sh @@ -1,17 +1,11 @@ #!/bin/bash -# setup.sh — Aziros Server Setup -# Verwendung: ./setup.sh [development|staging|production] -# Auf einem frischen Debian 12 Server als root ausführen - -set -e # Abbrechen bei Fehler +set -e MODE=${1:-production} -REPO="https://git.nexlab.at/boban/aziros.git" -USER="nexxo" echo "" echo "╔══════════════════════════════════════╗" -echo "║ Aziros Server Setup v1.0 ║" +echo "║ Aziros Server Setup ║" echo "║ Mode: $MODE ║" echo "╚══════════════════════════════════════╝" echo "" @@ -31,16 +25,17 @@ echo "→ System wird aktualisiert..." apt update && apt upgrade -y apt install -y curl git nano ufw \ ca-certificates gnupg2 \ - apt-transport-https \ - net-tools openssh-server + apt-transport-https net-tools \ + openssh-server +echo "✅ System aktualisiert" # ═══════════════════════════════════════ # SCHRITT 2 — User anlegen # ═══════════════════════════════════════ +USER="nexxo" if id "$USER" &>/dev/null; then echo "→ User $USER existiert bereits" else - echo "" echo "→ User '$USER' wird erstellt..." adduser --gecos "" $USER usermod -aG sudo $USER @@ -50,13 +45,17 @@ fi # ═══════════════════════════════════════ # SCHRITT 3 — Docker installieren # ═══════════════════════════════════════ -echo "→ Docker wird installiert..." -curl -fsSL https://get.docker.com | sh +if command -v docker &>/dev/null; then + echo "→ Docker bereits installiert" +else + echo "→ Docker wird installiert..." + curl -fsSL https://get.docker.com | sh + echo "✅ Docker installiert" +fi usermod -aG docker $USER -echo "✅ Docker installiert" # ═══════════════════════════════════════ -# SCHRITT 4 — UFW Firewall +# SCHRITT 4 — Firewall # ═══════════════════════════════════════ echo "→ Firewall wird konfiguriert..." ufw allow OpenSSH @@ -67,7 +66,7 @@ ufw --force enable echo "✅ Firewall konfiguriert" # ═══════════════════════════════════════ -# SCHRITT 5 — Git Credentials +# SCHRITT 5 — Git konfigurieren # ═══════════════════════════════════════ echo "→ Git wird konfiguriert..." sudo -u $USER git config \ @@ -81,8 +80,10 @@ sudo -u $USER git config \ # SCHRITT 6 — Repo clonen # ═══════════════════════════════════════ echo "→ Repository wird geklont..." +REPO="https://git.nexlab.at/boban/aziros.git" + if [ -d "/home/$USER/aziros" ]; then - echo "→ Repo existiert bereits — pull" + echo "→ Repo existiert — pull" sudo -u $USER git -C \ /home/$USER/aziros pull origin main else @@ -94,9 +95,6 @@ echo "✅ Repository bereit" # ═══════════════════════════════════════ # SCHRITT 7 — .env kopieren # ═══════════════════════════════════════ -echo "" -echo "→ .env Setup für Mode: $MODE" - ENV_FILE="/home/$USER/aziros/src/.env" if [ "$MODE" = "development" ]; then @@ -116,80 +114,126 @@ if [ ! -f "$ENV_FILE" ]; then echo "Führe auf dem lokalen Server aus:" echo "" echo " scp ~/aziros/src/$SRC_ENV \\" - echo " $USER@$(hostname -I | awk '{print $1}'):~/aziros/src/.env" + SERVER_IP=$(hostname -I | awk '{print $1}') + echo " $USER@$SERVER_IP:~/aziros/src/.env" echo "" read -p "Drücke ENTER wenn .env kopiert wurde..." if [ ! -f "$ENV_FILE" ]; then - echo "❌ .env fehlt noch — Abbruch" + echo "❌ .env fehlt — Abbruch" exit 1 fi fi - echo "✅ .env vorhanden" # ═══════════════════════════════════════ -# SCHRITT 8 — Docker Compose starten +# SCHRITT 8 — Compose File wählen +# ═══════════════════════════════════════ +if [ "$MODE" = "development" ]; then + COMPOSE="docker-compose.development.yml" +elif [ "$MODE" = "staging" ]; then + COMPOSE="docker-compose.staging.yml" +else + COMPOSE="docker-compose.yml" +fi + +# ═══════════════════════════════════════ +# SCHRITT 9 — Docker Stack starten # ═══════════════════════════════════════ echo "→ Docker Stack wird gestartet..." cd /home/$USER/aziros -COMPOSE_FILE="docker-compose.yml" -if [ "$MODE" = "development" ]; then - COMPOSE_FILE="docker-compose.development.yml" -elif [ "$MODE" = "staging" ]; then - COMPOSE_FILE="docker-compose.staging.yml" -fi - sudo -u $USER docker compose \ - -f $COMPOSE_FILE up -d --build + -f $COMPOSE up -d --build echo "→ Warte bis DB bereit ist..." -sleep 15 +sleep 20 # ═══════════════════════════════════════ -# SCHRITT 9 — Laravel Setup +# SCHRITT 10 — DB User anlegen # ═══════════════════════════════════════ -echo "→ Laravel wird konfiguriert..." +echo "→ DB wird konfiguriert..." + +DB_NAME=$(grep "^DB_DATABASE=" $ENV_FILE \ + | cut -d= -f2) +DB_USER=$(grep "^DB_USERNAME=" $ENV_FILE \ + | cut -d= -f2) +DB_PASS=$(grep "^DB_PASSWORD=" $ENV_FILE \ + | cut -d= -f2) +DB_ROOT=$(grep "^DB_ROOT_PASSWORD=" $ENV_FILE \ + | cut -d= -f2) sudo -u $USER docker compose \ - -f $COMPOSE_FILE exec -T app \ + -f $COMPOSE exec -T db \ + mariadb -u root -p"$DB_ROOT" \ + -e " +CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`; +CREATE USER IF NOT EXISTS '$DB_USER'@'%' + IDENTIFIED BY '$DB_PASS'; +GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* + TO '$DB_USER'@'%'; +FLUSH PRIVILEGES; +" +echo "✅ DB konfiguriert" + +# ═══════════════════════════════════════ +# SCHRITT 11 — Laravel Setup +# ═══════════════════════════════════════ +echo "→ Composer install..." +sudo -u $USER docker compose \ + -f $COMPOSE exec -T app \ + composer install --no-dev \ + --optimize-autoloader + +echo "→ Storage Verzeichnisse..." +sudo -u $USER docker compose \ + -f $COMPOSE exec -T app \ + mkdir -p storage/framework/cache \ + storage/framework/sessions \ + storage/framework/views \ + storage/logs \ + bootstrap/cache + +sudo -u $USER docker compose \ + -f $COMPOSE exec -T app \ + chmod -R 775 storage bootstrap/cache + +echo "→ Migrationen..." +sudo -u $USER docker compose \ + -f $COMPOSE exec -T app \ php artisan migrate --force +echo "→ Storage Link..." sudo -u $USER docker compose \ - -f $COMPOSE_FILE exec -T app \ - php artisan config:cache - -sudo -u $USER docker compose \ - -f $COMPOSE_FILE exec -T app \ - php artisan view:cache - -sudo -u $USER docker compose \ - -f $COMPOSE_FILE exec -T app \ - php artisan route:cache - -sudo -u $USER docker compose \ - -f $COMPOSE_FILE exec -T app \ + -f $COMPOSE exec -T app \ php artisan storage:link +echo "→ Cache aufbauen..." +sudo -u $USER docker compose \ + -f $COMPOSE exec -T app \ + php artisan config:cache +sudo -u $USER docker compose \ + -f $COMPOSE exec -T app \ + php artisan route:cache +sudo -u $USER docker compose \ + -f $COMPOSE exec -T app \ + php artisan view:cache + echo "✅ Laravel konfiguriert" # ═══════════════════════════════════════ -# SCHRITT 10 — Status +# SCHRITT 12 — Status # ═══════════════════════════════════════ echo "" echo "╔══════════════════════════════════════╗" -echo "║ Setup abgeschlossen ✅ ║" +echo "║ Setup abgeschlossen ✅ ║" echo "╚══════════════════════════════════════╝" echo "" -echo "Mode: $MODE" -echo "Compose: $COMPOSE_FILE" -echo "" -echo "Docker Status:" -sudo -u $USER docker compose \ - -f $COMPOSE_FILE ps -echo "" +sudo -u $USER docker compose \ + -f $COMPOSE ps + +echo "" if [ "$MODE" = "staging" ]; then echo "URL: https://app.staging.aziros.com" elif [ "$MODE" = "development" ]; then @@ -199,5 +243,6 @@ else fi echo "" -echo "Neu einloggen damit Docker-Gruppe aktiv:" +echo "Neu einloggen damit Docker aktiv:" echo " su - $USER" +echo ""