自托管
自托管总览
了解服务组成、前置条件和从开发到生产的部署边界。
Hanori 是 pnpm monorepo 应用,由 Telegram/Lark Bot、Hono 服务端、React 管理面板、PostgreSQL 数据库和可选的编码 worker 组成。生产服务会由 Hono 提供 API 和静态面板资源,数据库迁移由应用启动流程负责。
项目当前的源代码仓库是私有的。要自托管,先从维护者获得源码或镜像以及对应版本的部署授权;本页不假设任何公开仓库、镜像地址或许可证。
组件关系
| 组件 | 责任 |
|---|---|
server | 认证、API、BotPool 生命周期、集成和静态资源服务。 |
bot | grammY Telegram 运行时、命令、AI 流程和工具。 |
panel | React 管理面板和 Telegram Mini App 前端。 |
database | PostgreSQL 客户端、Drizzle schema 和有序迁移。 |
shared | 共享类型、命令目录、配置契约和工具函数。 |
coding-worker | 可选的隔离 Pi 编码任务执行器,不直接持有数据库或 GitHub 凭据。 |
前置条件
开发环境通常需要 Node.js 22.19.0 或更高版本、pnpm 10.5.2、PostgreSQL 17(生产镜像使用 pgvector)和 Docker Compose。生产还需要:
- 一个稳定的 HTTPS 公开 origin;
- 可持久化的数据库 volume 和备份位置;
BETTER_AUTH_SECRET、ENCRYPTION_KEY等稳定随机密钥;- Telegram Bot Token 和至少一个可用的 AI Provider(如果要使用 AI);
- 需要时再配置 Google OAuth、GitHub App、MCP、PixAI、NSFW 服务、Lark 或 coding worker。
部署路径
- 本地开发:先启动开发数据库,再配置环境变量,使用
pnpm dev运行 server 和 panel。 - Compose 生产:准备
.env,构建 app 和数据库服务,等待迁移与健康检查通过。 - 外部编排:将 Compose 项目接入既有的容器平台,保留健康检查、持久化卷和备份门槛。
不要把开发数据库、真实 Bot Token 或生产 .env 提供给浏览器测试和验收脚本。Mini App 也必须通过 Telegram WebView 的真实签名数据验证。