# Docker Compose file for Hindsight with S3 file storage (SeaweedFS) # # SeaweedFS (Apache 2.0) provides an S3-compatible object storage backend # for storing uploaded files instead of PostgreSQL BYTEA storage. # # Make sure to set the required environment variables before running: # - HINDSIGHT_DB_PASSWORD: Password for the PostgreSQL user # - Configure LLM provider variables as needed (see below in the hindsight service) # # Usage: # docker compose up -d # # Optional environment variables with defaults: # - HINDSIGHT_VERSION: Hindsight application version (default: latest) # - HINDSIGHT_DB_USER: PostgreSQL user (default: hindsight_user) # - HINDSIGHT_DB_NAME: PostgreSQL database name (default: hindsight_db) # - HINDSIGHT_DB_VERSION: PostgreSQL version (default: 18) # - SEAWEEDFS_S3_ACCESS_KEY: S3 access key (default: hindsight_s3_key) # - SEAWEEDFS_S3_SECRET_KEY: S3 secret key (default: hindsight_s3_secret) services: db: image: pgvector/pgvector:pg${HINDSIGHT_DB_VERSION:-18} container_name: hindsight-db restart: always environment: POSTGRES_USER: ${HINDSIGHT_DB_USER:-hindsight_user} POSTGRES_PASSWORD: ${HINDSIGHT_DB_PASSWORD:?Please set the HINDSIGHT_DB_PASSWORD env variable} POSTGRES_DB: ${HINDSIGHT_DB_NAME:-hindsight_db} volumes: - pg_data:/var/lib/postgresql/${HINDSIGHT_DB_VERSION:-18}/docker networks: - hindsight-net seaweedfs: image: chrislusf/seaweedfs:latest container_name: hindsight-seaweedfs restart: always # Single-node mode: master + volume + filer + S3 gateway all in one process command: > server -s3 -s3.port=8333 -s3.config=/etc/seaweedfs/s3.json -ip.bind=0.0.0.0 volumes: - seaweedfs_data:/data - ./s3.json:/etc/seaweedfs/s3.json:ro # Expose S3 API port (uncomment to access from host) # ports: # - "8333:8333" networks: - hindsight-net hindsight: image: ghcr.io/vectorize-io/hindsight:${HINDSIGHT_VERSION:-latest} container_name: hindsight-app ports: - "8888:8888" - "9999:9999" environment: - HINDSIGHT_API_LLM_API_KEY=${OPENAI_API_KEY?Please set the OPENAI_API_KEY env variable} - HINDSIGHT_API_DATABASE_URL=postgresql://${HINDSIGHT_DB_USER:-hindsight_user}:${HINDSIGHT_DB_PASSWORD:?Please set the HINDSIGHT_DB_PASSWORD env variable}@db:5432/${HINDSIGHT_DB_NAME:-hindsight_db} # S3 file storage configuration (SeaweedFS) - HINDSIGHT_API_FILE_STORAGE_TYPE=s3 - HINDSIGHT_API_FILE_STORAGE_S3_BUCKET=hindsight - HINDSIGHT_API_FILE_STORAGE_S3_ENDPOINT=http://seaweedfs:8333 - HINDSIGHT_API_FILE_STORAGE_S3_REGION=us-east-1 - HINDSIGHT_API_FILE_STORAGE_S3_ACCESS_KEY_ID=${SEAWEEDFS_S3_ACCESS_KEY:-hindsight_s3_key} - HINDSIGHT_API_FILE_STORAGE_S3_SECRET_ACCESS_KEY=${SEAWEEDFS_S3_SECRET_KEY:-hindsight_s3_secret} depends_on: - db - seaweedfs networks: - hindsight-net networks: hindsight-net: driver: bridge volumes: pg_data: seaweedfs_data: