Skip to content

Latest commit

 

History

History
221 lines (164 loc) · 4.4 KB

File metadata and controls

221 lines (164 loc) · 4.4 KB

Easy-SEO Docker Deployment Guide

🚀 Quick Start

1. Setup Environment

# Copy environment template
cp .env.docker .env

# Edit .env with your actual values
# - Supabase credentials
# - Solana wallet address
# - Google OAuth credentials
# - NEXTAUTH_SECRET (generate with: openssl rand -base64 32)

2. Build and Run

# Build and start all services
docker-compose up -d

# Check logs
docker-compose logs -f

# Stop services
docker-compose down

3. Access Services

📦 Services

Backend (Port 3000)

  • Express API server
  • SEO analysis service
  • Payment processing (x402 + Solana)
  • Screenshot generation (Puppeteer + Chromium)

Admin Panel (Port 3001)

  • Next.js 14 (App Router)
  • Google OAuth authentication
  • User & credit management
  • Payment monitoring
  • Analytics dashboard

🔧 Advanced Usage

Build Only Admin

docker build -f Dockerfile.admin -t easy-seo-admin:latest ./

Run Admin Standalone

docker run -d \
  -p 3001:3001 \
  --env-file .env \
  --name easy-seo-admin \
  easy-seo-admin:latest

Development with Docker

# Run backend only
docker-compose up backend

# Run admin only (requires backend)
docker-compose up admin

# Rebuild after code changes
docker-compose up --build

🔐 Security Checklist

  • Set strong NEXTAUTH_SECRET (min 32 chars)
  • Use environment-specific NEXTAUTH_URL (https in production)
  • Restrict Google OAuth to specific domains
  • Use Supabase service role key only on server
  • Add admin users to admin_users table
  • Enable firewall rules for ports 3000/3001
  • Use reverse proxy (nginx) with SSL in production

🧪 Health Checks

# Backend health
curl http://localhost:3000/api/health

# Admin health (should return HTML)
curl http://localhost:3001

📊 Monitoring

# View logs
docker-compose logs -f backend
docker-compose logs -f admin

# Container stats
docker stats easy-seo-backend-1 easy-seo-admin-1

# Restart services
docker-compose restart backend
docker-compose restart admin

🐛 Troubleshooting

Admin won't start

  • Check NEXTAUTH_SECRET is set
  • Verify GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET
  • Ensure Supabase credentials are correct
  • Check logs: docker-compose logs admin

Backend screenshot failures

  • Chromium is pre-installed in Alpine image
  • Check memory limits: docker stats
  • Increase Docker memory if needed

Database connection errors

  • Verify SUPABASE_URL and keys
  • Check network: docker network inspect easy-seo-network
  • Test Supabase connectivity from container:
    docker exec -it easy-seo-backend-1 wget -O- $SUPABASE_URL

🚀 Production Deployment

Environment Variables

Update .env for production:

NEXTAUTH_URL=https://admin.yourdomain.com
SOLANA_RPC_URL=https://mainnet.helius-rpc.com/?api-key=YOUR_KEY
# ... other production values

Reverse Proxy (nginx)

# /etc/nginx/sites-available/easy-seo

# Backend API
server {
    listen 80;
    server_name api.yourdomain.com;
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

# Admin Panel
server {
    listen 80;
    server_name admin.yourdomain.com;
    
    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

SSL with Let's Encrypt

sudo certbot --nginx -d api.yourdomain.com -d admin.yourdomain.com

Auto-restart on Reboot

# Set restart policy
docker-compose up -d --restart=always

📦 Image Sizes

  • Backend: ~450MB (Node 20 + Chromium)
  • Admin: ~200MB (Node 20 + Next.js build)

🔄 Updates

# Pull latest code
git pull

# Rebuild and restart
docker-compose down
docker-compose up -d --build

# Prune old images
docker image prune -a

Need help? Check admin/docs/DEPLOYMENT_CHECKLIST.md for detailed production deployment steps.