79 lines
2.4 KiB
Bash
Executable File
79 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Deploy Katheryn website infrastructure to Netcup
|
|
|
|
set -e
|
|
|
|
REMOTE_HOST="netcup"
|
|
REMOTE_PATH="/opt/websites/katheryn-website"
|
|
LOCAL_PATH="/home/jeffe/Github/katheryn-website"
|
|
|
|
echo "=== Deploying Katheryn Website Infrastructure ==="
|
|
|
|
# 1. Create remote directory
|
|
echo "[1/5] Creating remote directory..."
|
|
ssh $REMOTE_HOST "mkdir -p $REMOTE_PATH/directus"
|
|
|
|
# 2. Copy Docker Compose and config files
|
|
echo "[2/5] Copying configuration files..."
|
|
scp $LOCAL_PATH/directus/docker-compose.yml $REMOTE_HOST:$REMOTE_PATH/directus/
|
|
scp $LOCAL_PATH/directus/.env.example $REMOTE_HOST:$REMOTE_PATH/directus/
|
|
|
|
# 3. Generate .env on server if it doesn't exist
|
|
echo "[3/5] Checking/generating credentials..."
|
|
ssh $REMOTE_HOST "
|
|
if [ ! -f $REMOTE_PATH/directus/.env ]; then
|
|
echo 'Generating secure credentials...'
|
|
DB_PASSWORD=\$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 32)
|
|
ADMIN_PASSWORD=\$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 24)
|
|
DIRECTUS_SECRET=\$(openssl rand -hex 32)
|
|
|
|
cat > $REMOTE_PATH/directus/.env << EOF
|
|
# Database
|
|
DB_USER=directus
|
|
DB_PASSWORD=\${DB_PASSWORD}
|
|
DB_DATABASE=katheryn
|
|
|
|
# Directus Admin
|
|
ADMIN_EMAIL=katheryn@katheryntrenshaw.com
|
|
ADMIN_PASSWORD=\${ADMIN_PASSWORD}
|
|
|
|
# Security
|
|
DIRECTUS_SECRET=\${DIRECTUS_SECRET}
|
|
EOF
|
|
chmod 600 $REMOTE_PATH/directus/.env
|
|
echo ''
|
|
echo '========================================='
|
|
echo 'ADMIN CREDENTIALS (SAVE THESE!):'
|
|
echo 'Email: katheryn@katheryntrenshaw.com'
|
|
echo \"Password: \${ADMIN_PASSWORD}\"
|
|
echo '========================================='
|
|
else
|
|
echo '.env already exists, skipping generation'
|
|
fi
|
|
"
|
|
|
|
# 4. Deploy with Docker Compose
|
|
echo "[4/5] Deploying Directus..."
|
|
ssh $REMOTE_HOST "cd $REMOTE_PATH/directus && docker compose up -d"
|
|
|
|
# 5. Wait for health check
|
|
echo "[5/5] Waiting for services to be healthy..."
|
|
ssh $REMOTE_HOST "
|
|
echo 'Waiting for Directus to start...'
|
|
for i in {1..30}; do
|
|
if docker exec katheryn-cms wget -q --spider http://localhost:8055/server/health 2>/dev/null; then
|
|
echo 'Directus is healthy!'
|
|
exit 0
|
|
fi
|
|
echo 'Waiting... (\$i/30)'
|
|
sleep 5
|
|
done
|
|
echo 'Warning: Health check timed out'
|
|
docker logs katheryn-cms --tail 50
|
|
"
|
|
|
|
echo ""
|
|
echo "=== Deployment Complete ==="
|
|
echo "Directus should be available at: https://cms.katheryntrenshaw.com"
|
|
echo "(Once Cloudflare tunnel is configured)"
|