# OpnForm Nginx Setup Guide This guide explains how to set up OpnForm with a host-level nginx configuration. ## Architecture Overview The modified setup removes the main nginx ingress container and exposes services directly: - **UI Service**: Exposed on port 7655 (HTTP) - **API Service**: Exposed on port 7654 (HTTP via minimal nginx container) - **Database**: PostgreSQL (internal only) - **Redis**: Cache service (internal only) ## Key Changes from Default Setup 1. **Removed YAML anchors** - Each container now has its own explicit configuration to avoid conflicts 2. **Removed main ingress container** - Your host nginx handles all routing 3. **Added minimal api-nginx** - Small nginx container just to convert FastCGI to HTTP for the API 4. **Custom ports** - Using 7654-7655 range to avoid conflicts ## Setup Steps ### 1. Stop any existing containers ```bash docker compose down docker compose -f docker-compose.dev.yml down ``` ### 2. Run the setup script ```bash ./scripts/docker-setup.sh ``` ### 3. Verify services are running ```bash docker compose ps ``` You should see: - opnform-api (healthy) - opnform-api-nginx (healthy) - opnform-api-worker (running) - opnform-api-scheduler (running) - opnform-client (healthy) - opnform-redis (healthy) - opnform-db (healthy) ### 4. Configure your host nginx Copy the example configuration: ```bash sudo cp nginx-host-example.conf /etc/nginx/sites-available/forms.portnimara.dev sudo ln -s /etc/nginx/sites-available/forms.portnimara.dev /etc/nginx/sites-enabled/ ``` Edit the file to adjust: - SSL certificate paths - Server name if different - Any other site-specific settings ### 5. Test nginx configuration ```bash sudo nginx -t ``` ### 6. Reload nginx ```bash sudo systemctl reload nginx ``` ## Troubleshooting ### Port already in use If you get "port already allocated" errors: 1. Check what's using the ports: ```bash sudo lsof -i :7654 sudo lsof -i :7655 ``` 2. Stop conflicting services or change the ports in docker-compose.yml ### API not responding 1. Check the api-nginx logs: ```bash docker logs opnform-api-nginx ``` 2. Verify the API container is running: ```bash docker logs opnform-api ``` ### UI not loading 1. Check the client logs: ```bash docker logs opnform-client ``` 2. Ensure the client/.env file has correct API URL settings ## Port Reference - **7654**: API (HTTP) - proxied through api-nginx to PHP-FPM - **7655**: UI (HTTP) - Nuxt.js frontend - **9000**: PHP-FPM (internal only, FastCGI protocol) - **5432**: PostgreSQL (internal only) - **6379**: Redis (internal only) ## Security Notes 1. Ports are bound to 127.0.0.1 only, not exposed to external network 2. All traffic should go through your host nginx with SSL 3. The minimal api-nginx container only handles FastCGI conversion, no SSL termination ## Default Credentials - Email: admin@opnform.com - Password: password **Important**: Change these immediately after first login!