Add: server setup script
parent
ae5294ce1d
commit
55f560d554
|
|
@ -0,0 +1,203 @@
|
|||
#!/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
|
||||
|
||||
MODE=${1:-production}
|
||||
REPO="https://git.nexlab.at/boban/aziros.git"
|
||||
USER="nexxo"
|
||||
|
||||
echo ""
|
||||
echo "╔══════════════════════════════════════╗"
|
||||
echo "║ Aziros Server Setup v1.0 ║"
|
||||
echo "║ Mode: $MODE ║"
|
||||
echo "╚══════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# ROOT CHECK
|
||||
# ═══════════════════════════════════════
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "❌ Bitte als root ausführen"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# SCHRITT 1 — System Update
|
||||
# ═══════════════════════════════════════
|
||||
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
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# SCHRITT 2 — User anlegen
|
||||
# ═══════════════════════════════════════
|
||||
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
|
||||
echo "✅ User $USER erstellt"
|
||||
fi
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# SCHRITT 3 — Docker installieren
|
||||
# ═══════════════════════════════════════
|
||||
echo "→ Docker wird installiert..."
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
usermod -aG docker $USER
|
||||
echo "✅ Docker installiert"
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# SCHRITT 4 — UFW Firewall
|
||||
# ═══════════════════════════════════════
|
||||
echo "→ Firewall wird konfiguriert..."
|
||||
ufw allow OpenSSH
|
||||
ufw allow 80/tcp
|
||||
ufw allow 443/tcp
|
||||
ufw allow 8080/tcp
|
||||
ufw --force enable
|
||||
echo "✅ Firewall konfiguriert"
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# SCHRITT 5 — Git Credentials
|
||||
# ═══════════════════════════════════════
|
||||
echo "→ Git wird konfiguriert..."
|
||||
sudo -u $USER git config \
|
||||
--global credential.helper store
|
||||
sudo -u $USER git config \
|
||||
--global user.name "Aziros Deploy"
|
||||
sudo -u $USER git config \
|
||||
--global user.email "deploy@aziros.com"
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# SCHRITT 6 — Repo clonen
|
||||
# ═══════════════════════════════════════
|
||||
echo "→ Repository wird geklont..."
|
||||
if [ -d "/home/$USER/aziros" ]; then
|
||||
echo "→ Repo existiert bereits — pull"
|
||||
sudo -u $USER git -C \
|
||||
/home/$USER/aziros pull origin main
|
||||
else
|
||||
sudo -u $USER git clone \
|
||||
$REPO /home/$USER/aziros
|
||||
fi
|
||||
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
|
||||
SRC_ENV=".env.development"
|
||||
elif [ "$MODE" = "staging" ]; then
|
||||
SRC_ENV=".env.staging"
|
||||
else
|
||||
SRC_ENV=".env.production"
|
||||
fi
|
||||
|
||||
if [ ! -f "$ENV_FILE" ]; then
|
||||
echo ""
|
||||
echo "╔══════════════════════════════════════╗"
|
||||
echo "║ .env fehlt — bitte jetzt kopieren ║"
|
||||
echo "╚══════════════════════════════════════╝"
|
||||
echo ""
|
||||
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"
|
||||
echo ""
|
||||
read -p "Drücke ENTER wenn .env kopiert wurde..."
|
||||
|
||||
if [ ! -f "$ENV_FILE" ]; then
|
||||
echo "❌ .env fehlt noch — Abbruch"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "✅ .env vorhanden"
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# SCHRITT 8 — Docker Compose 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
|
||||
|
||||
echo "→ Warte bis DB bereit ist..."
|
||||
sleep 15
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# SCHRITT 9 — Laravel Setup
|
||||
# ═══════════════════════════════════════
|
||||
echo "→ Laravel wird konfiguriert..."
|
||||
|
||||
sudo -u $USER docker compose \
|
||||
-f $COMPOSE_FILE exec -T app \
|
||||
php artisan migrate --force
|
||||
|
||||
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 \
|
||||
php artisan storage:link
|
||||
|
||||
echo "✅ Laravel konfiguriert"
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# SCHRITT 10 — Status
|
||||
# ═══════════════════════════════════════
|
||||
echo ""
|
||||
echo "╔══════════════════════════════════════╗"
|
||||
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 ""
|
||||
|
||||
if [ "$MODE" = "staging" ]; then
|
||||
echo "URL: https://app.staging.aziros.com"
|
||||
elif [ "$MODE" = "development" ]; then
|
||||
echo "URL: http://app.aziros.local"
|
||||
else
|
||||
echo "URL: https://app.aziros.com"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Neu einloggen damit Docker-Gruppe aktiv:"
|
||||
echo " su - $USER"
|
||||
Loading…
Reference in New Issue