Docker Deployment Guide
GAIA uses Docker Compose to orchestrate all the required services. This makes deployment simple and ensures consistency across different environments.Looking for an easier setup? The GAIA CLI provides a guided wizard that handles Docker setup automatically, including prerequisite checks, environment variable discovery, and service management. This guide covers manual Docker setup for advanced users who prefer full control.
Prerequisites
Docker Installation
Docker Installation
Install Docker Desktop (recommended for beginners):Or install Docker Engine (for servers):
System Requirements
System Requirements
Minimum Requirements:
- 2 CPU cores
- 4GB RAM
- 10GB free disk space
- Docker Engine 20.10+
- Docker Compose v2.0+
- 4+ CPU cores
- 8+ GB RAM
- 50+ GB SSD storage
- Regular backups configured
Project Structure
When using the CLI quick start, running
gaia init with Self-Host (Docker)
scaffolds this structure automatically.Quick Start
Verify and monitor
- GAIA Web: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
- ChromaDB: http://localhost:8080
- RabbitMQ Management: http://localhost:15672 (guest/guest)
- Mongo Express: http://localhost:8081 (admin/password)
Service Overview
The Docker Compose setup includes the following services:Web (gaia-web)
Web (gaia-web)
Next.js React Application
- Port: 3000
- Hot reload enabled in development
- Serves the web interface
Backend (gaia-backend)
Backend (gaia-backend)
FastAPI Python Application
- Port: 8000
- Auto-reload enabled in development
- RESTful API and WebSocket support
Databases
Databases
PostgreSQL (Port: 5432)
- Stores user data and application state
- User: postgres, Password: postgres, DB: langgraph
- Document storage and metadata
- No authentication in development
- Caching and session storage
- No authentication in development
- Vector database for embeddings
- Persistent storage in Docker volume
Background Workers
Background Workers
Worker - Handles scheduled tasks and background processing
ARQ Worker - Async task queue processing
RabbitMQ - Message broker (Port: 5672, Management: 15672)
Docker Commands
Starting and Stopping
Viewing Logs
Service Management
Development Mode
For development, use the defaultdocker-compose.yml:
- Hot reload for both frontend and backend
- Source code mounted as volumes
- Debug logging enabled
- Development databases with default credentials
Health Checks
All services include health checks. Monitor service health:Data Persistence
Data is persisted using Docker volumes:pgdata- PostgreSQL datamongo_data- MongoDB dataredis_data- Redis datachroma_data- ChromaDB vectorsrabbitmq_data- RabbitMQ messages
Networking
Services communicate through thegaia_network bridge network:
Alternative: CLI Setup
For a simplified setup experience with automatic configuration, see the CLI Setup Guide. The CLI handles all the Docker commands, environment setup, and health checks automatically.Next Steps
Environment Variables
Configure your API keys and settings

