Files
deploy.stack/honcho/stack.yml
T
cnphpbb 80d485605b fix(honcho): embedding 升 Qwen3-8B 并 force dimensions=1536 兼容旧 schema
- vm61 数据库 public.documents.embedding dim 是 1536(旧 OpenAI 部署遗留)
- Qwen3-Embedding-8B 默认 4096 维,撞 schema 不匹配导致 honcho-api 启动失败
- 通过 SiliconFlow OpenAI 兼容 API 的 dimensions 参数强制输出 1536
- env.cfg + stack.yml + readme 全部同步更新
- docker compose config 校验通过,vm61 honcho-api /health HTTP 200
2026-06-19 18:26:45 +08:00

167 lines
6.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Honcho Self-Hosted 部署栈
# ============================================================
# 部署前准备(仅首次):
# mkdir -pv ${Volumes_Path}/{pgdata,redis,source}
# sudo chown -R 999:999 ${Volumes_Path}/pgdata
# sudo chown -R 999:999 ${Volumes_Path}/redis
# git clone https://github.com/plastic-labs/honcho.git ${Volumes_Path}/honcho/source
# cp env.cfg.example env.cfg && $EDITOR env.cfg # 填入密码/API Key
#
# pull:: docker compose --env-file ./honcho/env.cfg -f ./honcho/stack.yml pull
# RUN:: docker compose -p honcho --env-file ./honcho/env.cfg -f ./honcho/stack.yml up -d --build
# disc::
# - api/deriver 从 ${Volumes_Path}/honcho/source 源码 build(不是运行时 bind)
# - DB/Redis 数据 bind 挂到 WSL/Linux 原生 ext4(不能放 /mnt/9P drvfs
# - 端口 8000=API, 5432=PG, 6379=Redis,全部绑定 0.0.0.0 供 LAN 访问
# - 必须设置 HONCHO_LLM_API_KEY(占位符会导致 deriver 反复重启)
# - deriver 不可省:没它消息能写但不会产生记忆
# - PG 5432 与 hindsight/dbSer 撞车,通过 HONCHO_DB_PORT 区分
# ============================================================
services:
api:
build:
context: ${Volumes_Path}/source
dockerfile: Dockerfile
container_name: honcho-api
restart: unless-stopped
entrypoint: ["sh", "docker/entrypoint.sh"]
depends_on:
database:
condition: service_healthy
redis:
condition: service_healthy
ports:
- "${HONCHO_API_PORT:-8000}:8000"
environment:
- TZ=Asia/Shanghai
- DB_CONNECTION_URI=postgresql+psycopg://${HONCHO_DB_USER}:${HONCHO_DB_PASSWORD}@database:${HONCHO_DB_PORT}/${HONCHO_DB_NAME}
- CACHE_URL=redis://redis:${HONCHO_REDIS_PORT}/0?suppress=true
- CACHE_ENABLED=true
- LOG_LEVEL=${HONCHO_LOG_LEVEL:-INFO}
- NAMESPACE=${HONCHO_NAMESPACE:-honcho}
- EMBED_MESSAGES=${HONCHO_EMBED_MESSAGES:-true}
- EMBEDDING_MODEL_CONFIG__TRANSPORT=openai
- EMBEDDING_MODEL_CONFIG__MODEL=${HONCHO_EMBEDDING_MODEL:-Qwen/Qwen3-Embedding-8B}
- EMBEDDING_MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_EMBEDDING_BASE_URL:-https://api.siliconflow.cn/v1}
- EMBEDDING_MODEL_CONFIG__OVERRIDES__DIMENSIONS=1536
- EMBEDDING_VECTOR_DIMENSIONS=1536
- EMBEDDING_API_KEY=${HONCHO_EMBEDDING_API_KEY:-}
- DERIVER_MODEL_CONFIG__TRANSPORT=openai
- DERIVER_MODEL_CONFIG__MODEL=${HONCHO_DERIVER_MODEL:-gpt-4o-mini}
- DERIVER_WORKERS=${HONCHO_DERIVER_WORKERS:-1}
- LLM_OPENAI_API_KEY=${HONCHO_LLM_API_KEY:?set HONCHO_LLM_API_KEY}
- MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_LLM_BASE_URL:-https://api.openai.com/v1}
- AUTH_USE_AUTH=${HONCHO_AUTH_USE_AUTH:-false}
- AUTH_JWT_SECRET=${HONCHO_AUTH_JWT_SECRET}
- VECTOR_STORE_TYPE=pgvector
- VECTOR_STORE_MIGRATED=false
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
healthcheck:
test:
- CMD
- /app/.venv/bin/python
- -c
- "import urllib.request; urllib.request.urlopen('http://localhost:18000/health', timeout=2).read()"
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
networks:
- honcho-net
deriver:
build:
context: ${Volumes_Path}/source
dockerfile: Dockerfile
container_name: honcho-deriver
restart: unless-stopped
entrypoint: ["/app/.venv/bin/python", "-m", "src.deriver"]
depends_on:
api:
condition: service_healthy
database:
condition: service_healthy
redis:
condition: service_healthy
environment:
- TZ=Asia/Shanghai
- DB_CONNECTION_URI=postgresql+psycopg://${HONCHO_DB_USER}:${HONCHO_DB_PASSWORD}@database:${HONCHO_DB_PORT}/${HONCHO_DB_NAME}
- CACHE_URL=redis://redis:${HONCHO_REDIS_PORT}/0?suppress=true
- CACHE_ENABLED=true
- NAMESPACE=${HONCHO_NAMESPACE:-honcho}
- DERIVER_MODEL_CONFIG__TRANSPORT=openai
- DERIVER_MODEL_CONFIG__MODEL=${HONCHO_DERIVER_MODEL:-gpt-5.4-mini}
- DERIVER_WORKERS=${HONCHO_DERIVER_WORKERS:-1}
- EMBEDDING_MODEL_CONFIG__TRANSPORT=openai
- EMBEDDING_MODEL_CONFIG__MODEL=${HONCHO_EMBEDDING_MODEL:-Qwen/Qwen3-Embedding-8B}
- EMBEDDING_MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_EMBEDDING_BASE_URL:-https://api.siliconflow.cn/v1}
- EMBEDDING_MODEL_CONFIG__OVERRIDES__DIMENSIONS=1536
- EMBEDDING_VECTOR_DIMENSIONS=1536
- LLM_OPENAI_API_KEY=${HONCHO_LLM_API_KEY:?set HONCHO_LLM_API_KEY}
- EMBEDDING_API_KEY=${HONCHO_EMBEDDING_API_KEY:-}
- MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_LLM_BASE_URL:-https://api.openai.com/v1}
- AUTH_USE_AUTH=${HONCHO_AUTH_USE_AUTH:-false}
- AUTH_JWT_SECRET=${HONCHO_AUTH_JWT_SECRET}
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
networks:
- honcho-net
database:
image: ${HONCHO_DB_IMAGE:-pgvector/pgvector}:pg${HONCHO_DB_VERSION:-18}
container_name: honcho-database
restart: unless-stopped
command: ["postgres", "-c", "max_connections=200"]
environment:
- TZ=Asia/Shanghai
- POSTGRES_USER=${HONCHO_DB_USER}
- POSTGRES_PASSWORD=${HONCHO_DB_PASSWORD:?set HONCHO_DB_PASSWORD}
- POSTGRES_DB=${HONCHO_DB_NAME}
- POSTGRES_HOST_AUTH_METHOD=${POSTGRES_HOST_AUTH_METHOD:-scram-sha-256}
- POSTGRES_INITDB_ARGS=--encoding=UTF8 --locale=C --auth-host=${POSTGRES_HOST_AUTH_METHOD:-scram-sha-256}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- ${Volumes_Path}/pgdata:/var/lib/postgresql/data
ports:
- "${HONCHO_DB_PORT:-5432}:5432"
healthcheck:
test:
- CMD-SHELL
- pg_isready -U ${HONCHO_DB_USER} -d ${HONCHO_DB_NAME}
interval: 10s
timeout: 5s
retries: 10
networks:
- honcho-net
redis:
image: ${HONCHO_REDIS_IMAGE:-redis}:${HONCHO_REDIS_VERSION:-8}
container_name: honcho-redis
restart: unless-stopped
command: ["redis-server", "--save", "60", "1", "--appendonly", "yes"]
environment:
- TZ=Asia/Shanghai
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- ${Volumes_Path}/redis:/data
ports:
- "${HONCHO_REDIS_PORT:-6379}:6379"
healthcheck:
test: ["CMD-SHELL", "redis-cli ping"]
interval: 10s
timeout: 5s
retries: 5
networks:
- honcho-net
networks:
honcho-net:
driver: bridge