The docker-compose setup has been split into two independent stacks:
Location: /docker-compose.yml
Services:
postgres- PostgreSQL for LiteLLM metadata (port internal only)redis- Redis cache for LiteLLM (port internal only)litellm- LiteLLM proxy server (exposed on host port 4141)nginx- Optional Nginx HTTPS reverse proxy (ports 80, 443, 4142)
Network: litellm-network
Start:
docker-compose up -d # LiteLLM only
docker-compose up -d --build nginx # + HTTPS proxyAccess:
- http://localhost:4141 (LiteLLM direct)
- https://localhost:4142 (LiteLLM via TLS proxy, if enabled)
Location: /chat2anyllm-app/docker-compose.yml
Services:
chat2anyllm-backend- Node.js backend API (port 3001)chat2anyllm-frontend- React UI (port 3000)chat2anyllm-postgres- PostgreSQL for sessions/roles (dedicated instance, internal)openwebui- Optional Open WebUI interface (port 8000)
Network: chat2anyllm-network (completely separate from LiteLLM)
Start:
cd chat2anyllm-app
docker-compose up -d --buildAccess:
- Frontend: http://localhost:3000
- Backend: http://localhost:3001
- Open WebUI: http://localhost:8000
- Independent operation - Start/stop each stack separately without affecting the other
- Separate networks - LiteLLM stack and app stack use different Docker networks
- Separate databases - Each stack has its own PostgreSQL instance
- No cross-dependencies - App connects to LiteLLM via host networking (
host.docker.internal:4141) - Clean separation of concerns - LiteLLM infrastructure vs application services
- Optional HTTPS proxy - Nginx proxy in root stack can provide TLS termination for both stacks via host networking
The app backend connects to LiteLLM via environment variable:
- Default:
LITELLM_ENDPOINT=http://host.docker.internal:4141 - Override:
LITELLM_ENDPOINT=http://custom:4141 docker-compose up -d
docker-compose.yml- Removed app services, added chat2anyllm-proxy to root stackDockerfile.postgres- Removed app DB init script (only LiteLLM init)README.md- Updated Docker deployment instructionsdocs/design.md- Updated architecture notes
chat2anyllm-app/docker-compose.yml- New app stack compose filechat2anyllm-app/README.md- Documentation for app stacknginx/default-proxy.conf- Nginx config for cross-network proxying (uses host.docker.internal for app services)
Both compose files validate successfully:
docker-compose config # Root stack
cd chat2anyllm-app && docker-compose config # App stack