[supervisord] nodaemon=true ; Run supervisord in the foreground logfile=/dev/null ; Log supervisord output to stdout/stderr logfile_maxbytes=0 [program:redis] command=/usr/bin/redis-server --loglevel notice ; Path to redis-server on Alpine user=appuser ; Run redis as our non-root user autorestart=true priority=10 stdout_logfile=/dev/stdout ; Redirect redis stdout to container stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr ; Redirect redis stderr to container stderr stderr_logfile_maxbytes=0 [program:gunicorn] command=/usr/local/bin/gunicorn --bind 0.0.0.0:11235 --workers 1 --threads 4 --timeout 1800 --graceful-timeout 30 --keep-alive 300 --log-level info --worker-class uvicorn.workers.UvicornWorker server:app directory=/app ; Working directory for the app user=appuser ; Run gunicorn as our non-root user autorestart=true priority=20 environment=PYTHONUNBUFFERED=1 ; Ensure Python output is sent straight to logs environment=DISPLAY=:99 stdout_logfile=/dev/stdout ; Redirect gunicorn stdout to container stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr ; Redirect gunicorn stderr to container stderr stderr_logfile_maxbytes=0 [program:xvfb] command=/usr/bin/Xvfb :99 -screen 0 1280x720x24 user=appuser autorestart=true priority=5 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:fluxbox] command=/usr/bin/fluxbox user=appuser autorestart=true priority=6 environment=DISPLAY=:99 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:x11vnc] command=/usr/bin/x11vnc -display :99 -nopw -forever -shared -rfbport 5900 -quiet user=appuser autorestart=true priority=7 environment=DISPLAY=:99 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:websockify] command=/usr/bin/websockify 6080 localhost:5900 --web /opt/novnc user=appuser autorestart=true priority=8 environment=DISPLAY=:99 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 # Optional: Add filebeat or other logging agents here if needed