#!/bin/bash # FluentGerman.ai — Debian deployment setup script # Run as root or with sudo set -e APP_NAME="fluentgerman" APP_DIR="/opt/$APP_NAME" APP_USER="fluentgerman" DB_NAME="fluentgerman" DB_USER="fluentgerman" echo "=== FluentGerman.ai — Deployment Setup ===" # 1. System user if ! id "$APP_USER" &>/dev/null; then useradd --system --no-create-home --shell /bin/false "$APP_USER" echo "✓ Created system user: $APP_USER" fi # 2. Install Python if needed apt-get update -qq apt-get install -y -qq python3 python3-venv python3-pip > /dev/null echo "✓ Python installed" # 3. PostgreSQL database setup sudo -u postgres psql -tc "SELECT 1 FROM pg_roles WHERE rolname='$DB_USER'" | grep -q 1 || \ sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD 'CHANGE_ME';" sudo -u postgres psql -tc "SELECT 1 FROM pg_database WHERE datname='$DB_NAME'" | grep -q 1 || \ sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;" echo "✓ PostgreSQL database ready" # 4. Application directory mkdir -p "$APP_DIR" cp -r backend/* "$APP_DIR/backend/" cp -r frontend/* "$APP_DIR/frontend/" chown -R "$APP_USER:$APP_USER" "$APP_DIR" echo "✓ Files deployed to $APP_DIR" # 5. Python virtual environment cd "$APP_DIR/backend" python3 -m venv venv source venv/bin/activate pip install --quiet -r requirements.txt deactivate echo "✓ Python venv created" # 6. Environment file if [ ! -f "$APP_DIR/backend/.env" ]; then cp "$APP_DIR/backend/.env.example" "$APP_DIR/backend/.env" # Generate random secret key SECRET=$(python3 -c "import secrets; print(secrets.token_urlsafe(48))") sed -i "s/generate-a-strong-random-key-here/$SECRET/" "$APP_DIR/backend/.env" echo "⚠ Created .env from template — EDIT $APP_DIR/backend/.env with your API keys and passwords!" fi # 7. Systemd service cp deploy/fluentgerman.service /etc/systemd/system/ systemctl daemon-reload systemctl enable "$APP_NAME" systemctl start "$APP_NAME" echo "✓ Systemd service active" # 8. Nginx config cp deploy/nginx.conf /etc/nginx/sites-available/$APP_NAME ln -sf /etc/nginx/sites-available/$APP_NAME /etc/nginx/sites-enabled/ nginx -t && systemctl reload nginx echo "✓ Nginx configured" echo "" echo "=== Deployment complete! ===" echo "1. Edit /opt/$APP_NAME/backend/.env with your settings" echo "2. Restart: systemctl restart $APP_NAME" echo "3. Access: http://your-server-domain"