Files

95 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# GreySec Supabase Data Layer — One-command setup
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DOCKER_DIR="$SCRIPT_DIR/docker"
CREDENTIALS_FILE="$HOME/.greysec/credentials.env"
echo "=== GreySec Supabase Setup ==="
# Check Docker
if ! command -v docker &> /dev/null; then
echo "ERROR: Docker not installed. Install from https://docs.docker.com/get-docker/"
exit 1
fi
if ! docker ps &> /dev/null 2>&1; then
echo "ERROR: Docker daemon not running. Start Docker and try again."
exit 1
fi
echo "[OK] Docker available: $(docker --version)"
# Generate secrets if not set
source /dev/stdin <<<"$(grep SUPABASE_ "$CREDENTIALS_FILE" 2>/dev/null | sed 's/^/export /')" 2>/dev/null || true
JWT_SECRET="${SUPABASE_JWT_SECRET:-$(openssl rand -base64 32)}"
ANON_KEY="${SUPABASE_ANON_KEY:-$(openssl rand -base64 32)}"
SERVICE_ROLE_KEY="${SUPABASE_SERVICE_ROLE_KEY:-$(openssl rand -base64 32)}"
POSTGRES_PASSWORD="${SUPABASE_POSTGRES_PASSWORD:-$(openssl rand -base64 24)}"
# Create credentials file if it doesn't exist
mkdir -p "$(dirname "$CREDENTIALS_FILE")"
if [ ! -f "$CREDENTIALS_FILE" ]; then
cat > "$CREDENTIALS_FILE" <<EOF
# GreySec Supabase Configuration
# Generated: $(date)
SUPABASE_JWT_SECRET=$JWT_SECRET
SUPABASE_ANON_KEY=$ANON_KEY
SUPABASE_SERVICE_ROLE_KEY=$SERVICE_ROLE_KEY
SUPABASE_POSTGRES_PASSWORD=$POSTGRES_PASSWORD
SUPABASE_URL=http://localhost:9999
EOF
echo "[CREATED] $CREDENTIALS_FILE"
else
echo "[EXISTS] $CREDENTIALS_FILE"
fi
# Write docker env
cat > "$DOCKER_DIR/.env" <<EOF
POSTGRES_PASSWORD=$POSTGRES_PASSWORD
POSTGRES_USER=postgres
ANON_KEY=$ANON_KEY
SERVICE_ROLE_KEY=$SERVICE_ROLE_KEY
JWT_SECRET=$JWT_SECRET
EOF
echo "[OK] Docker environment configured"
# Start Supabase
cd "$DOCKER_DIR"
docker compose up -d
echo "[OK] Supabase stack started"
# Wait for Postgres
echo -n "[WAIT] Postgres "
for i in $(seq 1 30); do
if docker exec supabase-db-1 pg_isready -U postgres &>/dev/null 2>&1; then
echo "ready"
break
fi
echo -n "."
sleep 1
done
# Apply schema
echo "[MIGRATE] Applying schema..."
docker exec -i supabase-db-1 psql -U postgres -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";" 2>/dev/null || true
docker exec -i supabase-db-1 psql -U postgres postgres 2>/dev/null < "$SCRIPT_DIR/migrations/001_initial_schema.sql"
echo "[OK] Schema applied"
# Start phishing webhook receiver
echo "[START] Phishing webhook receiver on :5001..."
cd "$SCRIPT_DIR"
python3 phishing_to_supabase.py --supabase-url http://localhost:9999 --service-role-key "$SERVICE_ROLE_KEY" &
echo "[OK] Webhook receiver started (PID: $!)"
echo ""
echo "=== Supabase is running ==="
echo " REST API: http://localhost:9999/rest/"
echo " Kong Admin: http://localhost:9998/"
echo " Postgres: postgresql://postgres:$POSTGRES_PASSWORD@localhost:5432/postgres"
echo " Phishing webhook: POST http://localhost:5001/webhook/gophish"
echo ""
echo "Add to Gophish sending profile:"
echo " Host: localhost:5001"
echo " URL path: /webhook/gophish"