Skip to main content

Architecture

Annolive on-premise deployment 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>:8558 via nginx.
  • API access: The Annolive API is available at http://<host>:8559 via 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

ServiceRole
initOne-shot job on every docker compose up: runs init.py (collectstatic + migrate). Backend and worker wait for it to finish.
backendAnnolive API server (Django REST Framework). Runs Gunicorn on internal port 8000.
frontendNext.js UI server (internal port 3000). Reached through nginx on host port 8558.
nginxReverse 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/.
workerCelery worker for background jobs (data processing, email, and other asynchronous tasks).
model-serverHosts and serves AI models for Auto Annotation features.
postgresPostgreSQL 16 relational database for structured application data.
rabbitmqMessage 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:

DataDefault 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)