[supervisord] nodaemon=true logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid childlogdir=/var/log/supervisor user=root [unix_http_server] file=/var/run/supervisor.sock chmod=0700 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///var/run/supervisor.sock # PostgreSQL [program:postgresql] command=/usr/lib/postgresql/14/bin/postgres -D /data/postgres user=postgres autostart=true autorestart=true priority=10 stdout_logfile=/var/log/supervisor/postgresql.log stderr_logfile=/var/log/supervisor/postgresql-error.log environment=PGDATA="/data/postgres" # Redis [program:redis] command=/usr/bin/redis-server --dir /data/redis --appendonly yes autostart=true autorestart=true priority=20 stdout_logfile=/var/log/supervisor/redis.log stderr_logfile=/var/log/supervisor/redis-error.log # Backend API [program:backend] command=python main.py directory=/app/backend autostart=true autorestart=true priority=30 startsecs=10 startretries=3 stdout_logfile=/var/log/supervisor/backend.log stderr_logfile=/var/log/supervisor/backend-error.log environment=PYTHONPATH="/app/backend",UVICORN_LOOP="asyncio",UNSTRUCTURED_HAS_PATCHED_LOOP="1" # Celery Worker [program:celery-worker] command=celery -A app.celery_app worker --loglevel=info --concurrency=2 --pool=solo directory=/app/backend autostart=true autorestart=true priority=40 startsecs=15 startretries=3 stdout_logfile=/var/log/supervisor/celery-worker.log stderr_logfile=/var/log/supervisor/celery-worker-error.log environment=PYTHONPATH="/app/backend" # Celery Beat (scheduler) [program:celery-beat] command=celery -A app.celery_app beat --loglevel=info directory=/app/backend autostart=true autorestart=true priority=50 startsecs=20 startretries=3 stdout_logfile=/var/log/supervisor/celery-beat.log stderr_logfile=/var/log/supervisor/celery-beat-error.log environment=PYTHONPATH="/app/backend" # Frontend [program:frontend] command=node server.js directory=/app/frontend autostart=true autorestart=true priority=60 startsecs=5 startretries=3 stdout_logfile=/var/log/supervisor/frontend.log stderr_logfile=/var/log/supervisor/frontend-error.log environment=NODE_ENV="production",PORT="3000",HOSTNAME="0.0.0.0" # Process Groups [group:surfsense] programs=postgresql,redis,backend,celery-worker,celery-beat,frontend priority=999