Skip to content

自部署

你可以将 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_SECRETBetter Auth 加密密钥。请使用长随机字符串
DATABASE_URLPostgreSQL 连接字符串
S3_ACCESS_KEY_IDS3 兼容存储的密钥 ID
S3_SECRET_ACCESS_KEYS3 兼容存储的密钥值
S3_ENDPOINTS3 兼容储存的端点,例如 s3.<region>.backblazeb2.com
S3_BUCKETS3 兼容储存桶的名称
SEARXNG_URL用于网络搜索的 SearXNG 实例 URL
OPENAI_BASE_URLOpenAI 兼容的服务商的 Base URL,如果要配置平台模型则需要填写
OPENAI_API_KEYOpenAI 兼容的服务商的 API Key
SMTP_USER, SMTP_PASSWORD, SMTP_HOST, SMTP_FROM, SMTP_PORT, SMTP_SECURESMTP 相关变量,如果需要发送验证邮件、重置密码邮件则需要填写
REQUIRE_EMAIL_VERIFICATION如果要强制验证电子邮箱地址,则设为 true
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRETGoogle OAuth 相关变量,如果需要 Google OAuth 登录则需要填写
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRETGitHub OAuth 相关变量,如果需要 GitHub OAuth 登录则需要填写
STRIPE_SECRET_KEYStripe API 密钥,如果需要使用 Stripe 收款则需要填写
STRIPE_WEBHOOK_SECRETStripe Webhook 密钥,如果需要使用 Stripe 收款则需要填写

启动

配置好 docker-compose.yaml 和环境变量后,运行 docker compose up -d 启动服务。

Nya AI 对外暴露两个端口:

  • web 的 8080: 用户前端界面
  • web 的 8081: 后台管理界面

第一个登录后台管理页面的用户会自动获得管理员身份。为了安全,建议不要将后台管理端口暴露至公网。