Architecture

Annolive on-premise deployment uses a microservices architecture with several containerised services to ensure scalability and modularity. The diagram above shows how services, storage, and user access fit together on a single host.
User interaction
- Frontend access: The Annolive user interface is available at
http://<host>:8558via nginx. - API access: The Annolive API is available at
http://<host>:8559via nginx.
The browser must reach both URLs. Set FRONTEND_URL and BACKEND_URL in .env to match what users open in their browser (see Installation).
Services
| Service | Role |
|---|---|
| init | One-shot job on every docker compose up: runs init.py (collectstatic + migrate). Backend and worker wait for it to finish. |
| backend | Annolive API server (Django REST Framework). Runs Gunicorn on internal port 8000. |
| frontend | Next.js UI server (internal port 3000). Reached through nginx on host port 8558. |
| nginx | Reverse proxy on host ports 8558 (UI) and 8559 (API). Routes UI traffic to the frontend, API traffic to the backend, and serves /static/ and /media/. |
| worker | Celery worker for background jobs (data processing, email, and other asynchronous tasks). |
| model-server | Hosts and serves AI models for Auto Annotation features. |
| postgres | PostgreSQL 16 relational database for structured application data. |
| rabbitmq | Message broker for Celery task queues. |
Model server and external AI
The model server powers on-prem Auto Annotation. The system can also use OpenAI for LLM-based auto annotation when enabled; by default this is disabled and an OpenAI API key must be configured. If you use a custom model hosted on your own infrastructure, Annolive does not call external servers for that workflow.
Storage
Annolive stores media, static files, database files, and broker data on the host filesystem:
| Data | Default path |
|---|---|
| Media | /opt/annolive/storage/media |
| Static files | /opt/annolive/storage/static |
| PostgreSQL | /opt/annolive/postgresql |
| RabbitMQ | /opt/annolive/rabbitmq |
| Compose config | /opt/annolive/ (includes .env, docker-compose.yml, nginx.conf) |