Improve: setup.sh + deploy.sh complete
parent
fcc3bf2529
commit
ef3b43ccbd
161
setup.sh
161
setup.sh
|
|
@ -1,17 +1,11 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# setup.sh — Aziros Server Setup
|
set -e
|
||||||
# Verwendung: ./setup.sh [development|staging|production]
|
|
||||||
# Auf einem frischen Debian 12 Server als root ausführen
|
|
||||||
|
|
||||||
set -e # Abbrechen bei Fehler
|
|
||||||
|
|
||||||
MODE=${1:-production}
|
MODE=${1:-production}
|
||||||
REPO="https://git.nexlab.at/boban/aziros.git"
|
|
||||||
USER="nexxo"
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "╔══════════════════════════════════════╗"
|
echo "╔══════════════════════════════════════╗"
|
||||||
echo "║ Aziros Server Setup v1.0 ║"
|
echo "║ Aziros Server Setup ║"
|
||||||
echo "║ Mode: $MODE ║"
|
echo "║ Mode: $MODE ║"
|
||||||
echo "╚══════════════════════════════════════╝"
|
echo "╚══════════════════════════════════════╝"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
@ -31,16 +25,17 @@ echo "→ System wird aktualisiert..."
|
||||||
apt update && apt upgrade -y
|
apt update && apt upgrade -y
|
||||||
apt install -y curl git nano ufw \
|
apt install -y curl git nano ufw \
|
||||||
ca-certificates gnupg2 \
|
ca-certificates gnupg2 \
|
||||||
apt-transport-https \
|
apt-transport-https net-tools \
|
||||||
net-tools openssh-server
|
openssh-server
|
||||||
|
echo "✅ System aktualisiert"
|
||||||
|
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
# SCHRITT 2 — User anlegen
|
# SCHRITT 2 — User anlegen
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
|
USER="nexxo"
|
||||||
if id "$USER" &>/dev/null; then
|
if id "$USER" &>/dev/null; then
|
||||||
echo "→ User $USER existiert bereits"
|
echo "→ User $USER existiert bereits"
|
||||||
else
|
else
|
||||||
echo ""
|
|
||||||
echo "→ User '$USER' wird erstellt..."
|
echo "→ User '$USER' wird erstellt..."
|
||||||
adduser --gecos "" $USER
|
adduser --gecos "" $USER
|
||||||
usermod -aG sudo $USER
|
usermod -aG sudo $USER
|
||||||
|
|
@ -50,13 +45,17 @@ fi
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
# SCHRITT 3 — Docker installieren
|
# SCHRITT 3 — Docker installieren
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
echo "→ Docker wird installiert..."
|
if command -v docker &>/dev/null; then
|
||||||
curl -fsSL https://get.docker.com | sh
|
echo "→ Docker bereits installiert"
|
||||||
|
else
|
||||||
|
echo "→ Docker wird installiert..."
|
||||||
|
curl -fsSL https://get.docker.com | sh
|
||||||
|
echo "✅ Docker installiert"
|
||||||
|
fi
|
||||||
usermod -aG docker $USER
|
usermod -aG docker $USER
|
||||||
echo "✅ Docker installiert"
|
|
||||||
|
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
# SCHRITT 4 — UFW Firewall
|
# SCHRITT 4 — Firewall
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
echo "→ Firewall wird konfiguriert..."
|
echo "→ Firewall wird konfiguriert..."
|
||||||
ufw allow OpenSSH
|
ufw allow OpenSSH
|
||||||
|
|
@ -67,7 +66,7 @@ ufw --force enable
|
||||||
echo "✅ Firewall konfiguriert"
|
echo "✅ Firewall konfiguriert"
|
||||||
|
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
# SCHRITT 5 — Git Credentials
|
# SCHRITT 5 — Git konfigurieren
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
echo "→ Git wird konfiguriert..."
|
echo "→ Git wird konfiguriert..."
|
||||||
sudo -u $USER git config \
|
sudo -u $USER git config \
|
||||||
|
|
@ -81,8 +80,10 @@ sudo -u $USER git config \
|
||||||
# SCHRITT 6 — Repo clonen
|
# SCHRITT 6 — Repo clonen
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
echo "→ Repository wird geklont..."
|
echo "→ Repository wird geklont..."
|
||||||
|
REPO="https://git.nexlab.at/boban/aziros.git"
|
||||||
|
|
||||||
if [ -d "/home/$USER/aziros" ]; then
|
if [ -d "/home/$USER/aziros" ]; then
|
||||||
echo "→ Repo existiert bereits — pull"
|
echo "→ Repo existiert — pull"
|
||||||
sudo -u $USER git -C \
|
sudo -u $USER git -C \
|
||||||
/home/$USER/aziros pull origin main
|
/home/$USER/aziros pull origin main
|
||||||
else
|
else
|
||||||
|
|
@ -94,9 +95,6 @@ echo "✅ Repository bereit"
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
# SCHRITT 7 — .env kopieren
|
# SCHRITT 7 — .env kopieren
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
echo ""
|
|
||||||
echo "→ .env Setup für Mode: $MODE"
|
|
||||||
|
|
||||||
ENV_FILE="/home/$USER/aziros/src/.env"
|
ENV_FILE="/home/$USER/aziros/src/.env"
|
||||||
|
|
||||||
if [ "$MODE" = "development" ]; then
|
if [ "$MODE" = "development" ]; then
|
||||||
|
|
@ -116,80 +114,126 @@ if [ ! -f "$ENV_FILE" ]; then
|
||||||
echo "Führe auf dem lokalen Server aus:"
|
echo "Führe auf dem lokalen Server aus:"
|
||||||
echo ""
|
echo ""
|
||||||
echo " scp ~/aziros/src/$SRC_ENV \\"
|
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 ""
|
echo ""
|
||||||
read -p "Drücke ENTER wenn .env kopiert wurde..."
|
read -p "Drücke ENTER wenn .env kopiert wurde..."
|
||||||
|
|
||||||
if [ ! -f "$ENV_FILE" ]; then
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
echo "❌ .env fehlt noch — Abbruch"
|
echo "❌ .env fehlt — Abbruch"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "✅ .env vorhanden"
|
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..."
|
echo "→ Docker Stack wird gestartet..."
|
||||||
cd /home/$USER/aziros
|
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 \
|
sudo -u $USER docker compose \
|
||||||
-f $COMPOSE_FILE up -d --build
|
-f $COMPOSE up -d --build
|
||||||
|
|
||||||
echo "→ Warte bis DB bereit ist..."
|
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 \
|
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
|
php artisan migrate --force
|
||||||
|
|
||||||
|
echo "→ Storage Link..."
|
||||||
sudo -u $USER docker compose \
|
sudo -u $USER docker compose \
|
||||||
-f $COMPOSE_FILE exec -T app \
|
-f $COMPOSE 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 \
|
|
||||||
php artisan storage:link
|
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"
|
echo "✅ Laravel konfiguriert"
|
||||||
|
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
# SCHRITT 10 — Status
|
# SCHRITT 12 — Status
|
||||||
# ═══════════════════════════════════════
|
# ═══════════════════════════════════════
|
||||||
echo ""
|
echo ""
|
||||||
echo "╔══════════════════════════════════════╗"
|
echo "╔══════════════════════════════════════╗"
|
||||||
echo "║ Setup abgeschlossen ✅ ║"
|
echo "║ Setup abgeschlossen ✅ ║"
|
||||||
echo "╚══════════════════════════════════════╝"
|
echo "╚══════════════════════════════════════╝"
|
||||||
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
|
if [ "$MODE" = "staging" ]; then
|
||||||
echo "URL: https://app.staging.aziros.com"
|
echo "URL: https://app.staging.aziros.com"
|
||||||
elif [ "$MODE" = "development" ]; then
|
elif [ "$MODE" = "development" ]; then
|
||||||
|
|
@ -199,5 +243,6 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Neu einloggen damit Docker-Gruppe aktiv:"
|
echo "Neu einloggen damit Docker aktiv:"
|
||||||
echo " su - $USER"
|
echo " su - $USER"
|
||||||
|
echo ""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue