Lobe Chat
★ 84.4kA self-hosted alternative to Chatgpt
About
Community Ratings
No ratings yetNew this week
Read recap →Features
- agent management
- agent scheduling
- agent reporting
- IM gateway
- agent builder
- model and modality access
- MCP-compatible plugins
- agent groups
- pages with shared context
- personal memory
Details
- Last Updated
- Nov 9, 2026
- Created
- May 21, 2023
- Install Methods
- docker
- Requirements
- OpenAI API key
- Privacy & Independence
- Cloud: Optional
- User Model
- Multi-UserMulti-Tenant
- Deployment
Deployment: Docker Compose ✓6 Containers — moderate hosting footprintRuns as 6 containers
Run Lobe Chat yourself
Pick how much you want to manage.
RailwayBest match
One click
Railway template, runs in your own Railway account.
About 5 minutes to running
Coolify
One click on your server
Coolify template for your own server.
About 10 minutes if you run Coolify
netcup
Full control
A small server, then Docker Compose.
About 20 minutes with Docker
4 more ways to host
Some links earn us a commission. netcup pays us one and is our preferred VPS host.
Is this your project? Sponsor a listing
Run Lobe Chat with Docker Compose
Compose file from the Lobe Chat project repository.
6 services · infra: redis · 4 unclassified (paradedb, rustfs, mc, searxng)
no resource limits declared
needs persistent storage (5 volumes)
docker-compose/deploy/docker-compose.yml · @ b9fbad7 · scanned Nov 3, 2026
name: lobehub
services:
lobe:
image: lobehub/lobehub
container_name: lobehub
ports:
- '${LOBE_PORT}: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=${KEY_VAULTS_SECRET}'
- 'AUTH_SECRET=${AUTH_SECRET}'
- 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
- 'INTERNAL_APP_URL=http://localhost:3210'
- 'S3_ENDPOINT=${S3_ENDPOINT}'
- 'S3_BUCKET=${RUSTFS_LOBE_BUCKET}'
- 'S3_ENABLE_PATH_STYLE=1'
- 'S3_ACCESS_KEY=${RUSTFS_ACCESS_KEY}'
- 'S3_ACCESS_KEY_ID=${RUSTFS_ACCESS_KEY}'
- 'S3_SECRET_ACCESS_KEY=${RUSTFS_SECRET_KEY}'
- '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'
env_file:
- .env
restart: always
networks:
- lobe-network
postgresql:
image: paradedb/paradedb:latest-pg17
container_name: lobe-postgres
# Optional: Remove or change these ports if:
# - You don't need external database access
# - The ports conflict with other services on your host
ports:
- '5432:5432'
volumes:
- './data:/var/lib/postgresql/data'
environment:
- 'POSTGRES_DB=${LOBE_DB_NAME}'
- 'POSTGRES_PASSWORD=${POSTGRES_PASSWORD}'
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 5s
timeout: 5s
retries: 5
restart: always
networks:
- lobe-network
redis:
image: redis:7-alpine
container_name: lobe-redis
# Optional: Remove or change these ports if:
# - You don't need external access
# - The ports conflict with other services on your host
ports:
- '6379:6379'
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
networks:
- lobe-network
rustfs:
image: rustfs/rustfs:latest
container_name: lobe-rustfs
ports:
- '${RUSTFS_PORT}:9000'
- '${RUSTFS_ADMIN_PORT}:9001'
# Optional: Remove or change RUSTFS_ADMIN_PORT if:
# - You don't need external access to rustfs control panel
# - The ports conflict with other services on your host
# - RUSTFS_PORT is necessary only if you need to upload images to conversations. (avatar uploads are not affected)
# - Uploading images to conversations requires a browser-accessible S3_ENDPOINT.
environment:
- RUSTFS_CONSOLE_ENABLE=true
- RUSTFS_ACCESS_KEY=${RUSTFS_ACCESS_KEY}
- RUSTFS_SECRET_KEY=${RUSTFS_SECRET_KEY}
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', '${RUSTFS_ACCESS_KEY}', '--secret-key', '${RUSTFS_SECRET_KEY}', '/data']
networks:
- lobe-network
rustfs-init:
image: minio/mc:latest
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=${RUSTFS_ACCESS_KEY}, S3_SECRET_KEY=${RUSTFS_SECRET_KEY}"; mc --version; mc alias set rustfs "http://rustfs:9000" "${RUSTFS_ACCESS_KEY}" "${RUSTFS_SECRET_KEY}"; 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'
networks:
- lobe-network
searxng:
image: searxng/searxng
container_name: lobe-searxng
volumes:
- './searxng-settings.yml:/etc/searxng/settings.yml'
environment:
- 'SEARXNG_SETTINGS_FILE=/etc/searxng/settings.yml'
restart: always
networks:
- lobe-network
env_file:
- .env
networks:
lobe-network:
driver: bridge
volumes:
redis_data:
driver: local
rustfs-data:
driver: local
This file may be out of date. Check the Lobe Chat documentation for current setup steps.
Tags
Track your self-hosted stack
Bookmark software to try, rate tools you've used, and keep your collection in one place.
Alternatives to Lobe Chat
LobeHub
Sim Studio
Flowise
Langflow
Dify.ai
AnythingLLM
