自部署
你可以将 Nya AI 部署到自己的服务器上,以完全控制你的数据和开销。
建议使用 Docker Compose 部署,compose 文件可参考 docker-compose.example.yml
架构概览
核心组件:
- db:使用带 zhparser 拓展的 Postgres 18 作为数据库
- server: Nya AI 的 API 后端,整个架构的中心,基于 bun
- web: 提供前端的静态资源以及反向代理,基于 caddy
- zero-cache: 同步引擎,处理客户端的数据查询和变更请求
其他依赖:
- S3 对象储存:可使用 S3 兼容的对象储存服务
- SearXNG:用于网络搜索功能的元搜索引擎。SearXNG 实例需允许 JSON 格式的搜索请求
环境变量
这里主要讲 nyaai-server 的环境变量:
| 变量名 | 是否必填 | 描述 |
|---|---|---|
SITE_NAME | 是 | 站点名称 |
FRONT_URL | 是 | 用户前端的公开 URL(例如 https://example.com) |
ADMIN_URL | 是 | 管理面板的公开 URL(例如 https://admin.example.com) |
BETTER_AUTH_SECRET | 是 | Better Auth 加密密钥。请使用长随机字符串 |
DATABASE_URL | 是 | PostgreSQL 连接字符串 |
S3_ACCESS_KEY_ID | 是 | S3 兼容存储的密钥 ID |
S3_SECRET_ACCESS_KEY | 是 | S3 兼容存储的密钥值 |
S3_ENDPOINT | 是 | S3 兼容储存的端点,例如 s3.<region>.backblazeb2.com |
S3_BUCKET | 是 | S3 兼容储存桶的名称 |
SEARXNG_URL | 是 | 用于网络搜索的 SearXNG 实例 URL |
OPENAI_BASE_URL | 否 | OpenAI 兼容的服务商的 Base URL,如果要配置平台模型则需要填写 |
OPENAI_API_KEY | 否 | OpenAI 兼容的服务商的 API Key |
SMTP_USER, SMTP_PASSWORD, SMTP_HOST, SMTP_FROM, SMTP_PORT, SMTP_SECURE | 否 | SMTP 相关变量,如果需要发送验证邮件、重置密码邮件则需要填写 |
REQUIRE_EMAIL_VERIFICATION | 否 | 如果要强制验证电子邮箱地址,则设为 true |
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | 否 | Google OAuth 相关变量,如果需要 Google OAuth 登录则需要填写 |
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET | 否 | GitHub OAuth 相关变量,如果需要 GitHub OAuth 登录则需要填写 |
STRIPE_SECRET_KEY | 否 | Stripe API 密钥,如果需要使用 Stripe 收款则需要填写 |
STRIPE_WEBHOOK_SECRET | 否 | Stripe Webhook 密钥,如果需要使用 Stripe 收款则需要填写 |
启动
配置好 docker-compose.yaml 和环境变量后,运行 docker compose up -d 启动服务。
Nya AI 对外暴露两个端口:
- web 的
8080: 用户前端界面 - web 的
8081: 后台管理界面
第一个登录后台管理页面的用户会自动获得管理员身份。为了安全,建议不要将后台管理端口暴露至公网。