# IndeeHub Deployment ## Full Stack (Recommended) The app requires the full stack: frontend (nginx), backend API, PostgreSQL, Redis, MinIO, FFmpeg worker, Nostr relay. ### Docker Compose ```bash # Copy environment template and fill in secrets cp .env.portainer.example .env.portainer # Edit .env.portainer with your values # Deploy docker compose up -d --build ``` ### Portainer 1. Create a new Stack 2. Load variables from `.env.portainer` (use `.env.portainer.example` as template) 3. Use `docker-compose.yml` from the repo 4. Deploy ## Access - **Application URL**: `http://your-server:7777` - **Health Check**: `http://your-server:7777/health` ## Configuration ### Port Configuration The application runs on port **7777** by default. To change: ```yaml # In docker-compose.yml ports: - "YOUR_PORT:7777" ``` ### Environment Variables Add any required environment variables in `docker-compose.yml`: ```yaml environment: - NODE_ENV=production - VITE_API_URL=https://your-api.com ``` ## Build Details ### Multi-stage Docker Build 1. **Builder Stage**: Compiles Vue/TypeScript application 2. **Production Stage**: Serves built files with Nginx ### Features - ✅ Nginx web server (Alpine Linux) - ✅ Gzip compression - ✅ Security headers - ✅ PWA support with proper MIME types - ✅ Vue Router SPA fallback - ✅ Service Worker support - ✅ Health check endpoint - ✅ Auto-restart enabled ## Monitoring ### Health Check ```bash curl http://localhost:7777/health ``` ### Container Status ```bash docker ps | grep indeedhub ``` ### View Logs ```bash docker logs -f indeedhub-app ``` ## Updates ### Rebuild and Deploy ```bash docker-compose down docker-compose up -d --build ``` ### Using Portainer 1. Go to your stack 2. Click "Update" 3. Enable "Pull latest image" 4. Click "Update the stack" ## Troubleshooting ### Container won't start ```bash # Check logs docker logs indeedhub-app # Check if port is available lsof -i :7777 ``` ### Build fails ```bash # Clear Docker cache docker builder prune # Rebuild without cache docker-compose build --no-cache ``` ## Production Checklist - ✅ Port 7777 exposed - ✅ Health checks configured - ✅ Auto-restart enabled - ✅ Gzip compression enabled - ✅ Security headers set - ✅ PWA manifest support - ✅ Service worker caching - ✅ SPA routing configured - ✅ Docker networking isolated ## Stack Configuration for Portainer Copy this into Portainer Stack editor: ```yaml version: '3.8' services: indeedhub: image: indeedhub-prototype:latest build: context: . dockerfile: Dockerfile container_name: indeedhub-app restart: unless-stopped ports: - "7777:7777" environment: - NODE_ENV=production networks: - indeedhub-network labels: - "com.centurylinklabs.watchtower.enable=true" healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:7777/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: indeedhub-network: driver: bridge ``` ## Support For issues, check: 1. Container logs: `docker logs indeedhub-app` 2. Health endpoint: `http://localhost:7777/health` 3. Nginx config: `/etc/nginx/conf.d/default.conf`