name: lobehub
services:
lobe:
image: docker.io/lobehub/lobehub:2.1.42
container_name: lobehub
ports:
- '3210:3210'
depends_on:
postgresql:
condition: service_healthy
redis:
condition: service_healthy
rustfs:
condition: service_healthy
rustfs-init:
condition: service_completed_successfully
environment:
- 'KEY_VAULTS_SECRET=4qaDf0c7KeHaJRCdgZztjLusEWjkIaOt'
- 'AUTH_SECRET=4qaDf0c7KeHaJRCdgZztjLusEWjkIaOt'
- 'DATABASE_URL=postgresql://postgres:uWNZugjBqixf8dxC@postgresql:5432/lobechat'
- 'S3_ENDPOINT=http://rustfs:9000'
- 'S3_BUCKET=lobe'
- 'S3_ENABLE_PATH_STYLE=1'
- 'S3_ACCESS_KEY=admin'
- 'S3_ACCESS_KEY_ID=admin'
- 'S3_SECRET_ACCESS_KEY=YOUR_RUSTFS_PASSWORD'
- 'LLM_VISION_IMAGE_USE_BASE64=1'
- 'S3_SET_ACL=0'
- 'SEARXNG_URL=http://searxng:8080'
- 'REDIS_URL=redis://redis:6379'
- 'REDIS_PREFIX=lobechat'
- 'REDIS_TLS=0'
- QSTASH_TOKEN=4qaDf0c7KeHaJRCdgZztjLusEWjkIaOt
restart: always
postgresql:
image: docker.io/paradedb/paradedb:latest-pg17
container_name: lobe-postgres
ports:
- '5432:5432'
volumes:
- 'lobe-db:/var/lib/postgresql/data'
environment:
- 'POSTGRES_DB=lobechat'
- 'POSTGRES_PASSWORD=uWNZugjBqixf8dxC'
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 5s
timeout: 5s
retries: 5
restart: always
redis:
image: docker.io/library/redis:7-alpine
container_name: lobe-redis
command: redis-server --save 60 1000 --appendonly yes
volumes:
- 'redis_data:/data'
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 3s
retries: 5
restart: always
rustfs:
image: docker.io/rustfs/rustfs:1.0.0-alpha.85
container_name: lobe-rustfs
ports:
- '9000:9000'
- '9001:9001'
environment:
- RUSTFS_CONSOLE_ENABLE=true
- RUSTFS_ACCESS_KEY=admin
- RUSTFS_SECRET_KEY=YOUR_RUSTFS_PASSWORD
volumes:
- 'rustfs-data:/data'
healthcheck:
test: ['CMD-SHELL', 'wget -qO- http://localhost:9000/health >/dev/null 2>&1 || exit 1']
interval: 5s
timeout: 3s
retries: 30
command:
['--access-key', 'admin', '--secret-key', 'YOUR_RUSTFS_PASSWORD', '/data']
rustfs-init:
image: docker.io/minio/mc:RELEASE.2025-08-13T08-35-41Z
container_name: lobe-rustfs-init
depends_on:
rustfs:
condition: service_healthy
volumes:
- ./bucket.config.json:/bucket.config.json:ro
entrypoint: /bin/sh
command: -c ' set -eux; echo "S3_ACCESS_KEY=admin, S3_SECRET_KEY=YOUR_RUSTFS_PASSWORD"; mc --version; mc alias set rustfs "http://rustfs:9000" "admin" "YOUR_RUSTFS_PASSWORD"; mc ls rustfs || true; mc mb "rustfs/lobe" --ignore-existing; mc admin info rustfs || true; mc anonymous set-json "/bucket.config.json" "rustfs/lobe"; '
restart: 'no'
searxng:
image: docker.io/searxng/searxng:2026.3.13-3c1f68c59
container_name: lobe-searxng
volumes:
- './searxng-settings.yml:/etc/searxng/settings.yml'
environment:
- 'SEARXNG_SETTINGS_FILE=/etc/searxng/settings.yml'
restart: always
volumes:
redis_data:
rustfs-data:
lobe-db: