Docker Compose generator
Create compose.yaml and a private .env for the published Arkivra image, PostgreSQL, Docling, and your preferred file-storage location. Gotenberg is optional; SMTP, OAuth, AI providers, VLM settings, and worker tuning remain in theconfiguration reference.
Generated Compose file
Enter the public URL to enable the actions for the default bundled Docling stack.
Secrets are generated in your browser and written only to .env. Keep both files private and run chmod 600 .env.
Preview compose.yaml
services:
postgres:
image: pgvector/pgvector:pg16
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB_NAME:-arkivra}
POSTGRES_USER: arkivra
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\""]
interval: 10s
timeout: 5s
retries: 10
start_period: 10s
docling:
image: quay.io/docling-project/docling-serve-cpu:v1.20.0
restart: unless-stopped
environment:
UVICORN_WORKERS: '1'
DOCLING_SERVE_ENABLE_UI: 'false'
healthcheck:
test: ['CMD', 'curl', '--fail', '--silent', 'http://127.0.0.1:5001/health']
interval: 30s
timeout: 10s
retries: 10
start_period: 60s
stop_grace_period: 30s
arkivra:
image: ghcr.io/jasnan/arkivra:0.1.0-rc.1
restart: unless-stopped
env_file:
- .env
ports:
- "127.0.0.1:${ARKIVRA_PORT:-3210}:3210"
environment:
NODE_ENV: production
ARKIVRA_PROCESS_ROLE: all
ARKIVRA_PORT: 3210
ARKIVRA_HOSTNAME: 0.0.0.0
ARKIVRA_DATA_PATH: /app/data
ARKIVRA_PUBLIC_URL: ${ARKIVRA_PUBLIC_URL:?Set ARKIVRA_PUBLIC_URL in .env}
ARKIVRA_DATABASE_URL: "postgres://arkivra:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB_NAME:-arkivra}"
ARKIVRA_DOCLING_URL: ${ARKIVRA_DOCLING_URL:?Set ARKIVRA_DOCLING_URL in .env}
ARKIVRA_AUTH_SECRET: ${ARKIVRA_AUTH_SECRET:?Set ARKIVRA_AUTH_SECRET in .env}
ARKIVRA_ENCRYPTION_KEYS: ${ARKIVRA_ENCRYPTION_KEYS:?Set ARKIVRA_ENCRYPTION_KEYS in .env}
volumes:
- arkivra-data:/app/data
depends_on:
postgres:
condition: service_healthy
docling:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "--fail", "--silent", "--show-error", "http://127.0.0.1:3210/api/health"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
stop_grace_period: 30s
security_opt:
- no-new-privileges:true
volumes:
postgres-data:
arkivra-data:
Crafted with care by Jasnan Thachaparamban
© 2026 · Licensed under AGPL-3.0-or-later