Skip to content
文档
部署方式

部署方式

提示:以下部署方法基于开源版进行介绍。商业版和企业版拥有专属的授权(或源码)及部署方式,详情请参阅相关文档或联系支持团队获取更多信息。

Chat Nio 提供多种部署方式,以满足不同用户的需求。无论是个人用户、开发者还是企业用户,都可以根据自身的需求选择最合适的部署方式。以下是几种常见的部署方式:

  1. Zeabur 一键部署:适合希望快速上手的用户,通过简单的点击即可在短时间内完成部署。
  2. Docker Compose 安装:推荐用于建站,适合需要灵活配置和管理的用户。
  3. Docker 安装:适合轻量运行时,常用于 Docker Runtime 平台或外置 MySQL 和 Redis 等服务的情况。
  4. 编译安装:适合需要自定义配置的用户,可以完全掌控部署过程。 (需有开发经验)

运行环境

最低服务器运行要求 2C4G, 高并发推荐使用 4C8G 及以上。

  • Linux(推荐):Chat Nio 在 Linux 环境下运行最为稳定和高效,是我们首选的推荐环境。
  • Windows:支持在 Windows 服务器上部署,适合 Windows 用户或特定的 Windows 环境需求。
  • MacOS Server:可以在 MacOS 服务器上运行,适合 Mac 用户或开发环境。
  • Docker:提供 Docker 镜像,便于容器化部署和管理。
  • Kubernetes:支持在 Kubernetes 集群中部署,适合大规模分布式环境。

Zeabur 部署

Deploy on Zeabur (opens in a new tab)

Zeabur 提供一定的免费额度,可以使用非付费区域进行一键部署,同时也支持计划订阅和弹性计费等方式进行扩展。

  1. 点击 Deploy 进行部署,并输入您希望绑定的域名,等待部署完成。
  2. 部署完成后,请访问您的域名,并使用用户名 root 和密码 chatnio123456 登录后台管理,请按照提示在 Chat Nio 后台及时修改密码。

Docker Compose 部署

运行成功后,宿主机映射地址为 http://localhost:8000

git clone --depth=1 --branch=main --single-branch https://github.com/zmh-program/chatnio.git
cd chatnio
docker-compose up -d
  • MySQL 数据库挂载目录项目 ~/db
  • Redis 数据库挂载目录项目 ~/redis
  • 配置文件挂载目录项目 ~/config

手动版本更新

docker-compose down
docker-compose pull
docker-compose up -d

稳定版本

如需使用稳定版本,请使用以下命令进行部署: docker-compose -f docker-compose.stable.yaml up -d。 此命令将启动稳定版本的 Chat Nio,确保您在生产环境中获得最佳性能和稳定性。 请注意,使用稳定版本可以减少潜在的错误和不兼容问题,建议在正式环境中优先选择稳定版本进行部署。

启用自动更新

启用 Watchtower 可以帮助您自动更新 Docker 容器,确保您始终使用最新版本的应用程序。要启用 Watchtower 进行自动更新,请执行命令 docker-compose -f docker-compose.watch.yaml up -d

Docker 部署

请注意,使用 Docker 部署 Chat Nio 需要依赖 MySQL 和 Redis 服务。请确保在部署前已正确配置并启动 MySQL 和 Redis 服务。

运行成功后, 宿主机地址为 http://localhost:8094

docker run -d --name chatnio \
   --network host \
   -v ~/config:/config \
   -v ~/logs:/logs \
   -v ~/storage:/storage \
   -e MYSQL_HOST=localhost \
   -e MYSQL_PORT=3306 \
   -e MYSQL_DB=chatnio \
   -e MYSQL_USER=root \
   -e MYSQL_PASSWORD=chatnio123456 \
   -e REDIS_HOST=localhost \
   -e REDIS_PORT=6379 \
   -e SECRET=secret \
   -e SERVE_STATIC=true \
   programzmh/chatnio:latest
参数说明
--network host指使用宿主机网络,使 Docker 容器使用宿主机的网络,可自行修改
SECRETJWT 密钥,自行生成随机字符串修改
SERVE_STATIC是否启用静态文件服务(正常情况下不需要更改此项,详见下方常见问题解答)
-v ~/config:/config挂载配置文件
-v ~/logs:/logs挂载日志文件的宿主机目录
-v ~/storage:/storage挂载附加功能的生成文件
其他需配置 MySQL 和 Redis 服务,请自行参考上方信息修改环境变量

稳定版本

如果您希望使用稳定版本的 Chat Nio,请使用以下命令进行部署:

docker run -d --name chatnio \
   --network host \
   -v ~/config:/config \
   -v ~/logs:/logs \
   -v ~/storage:/storage \
   -e MYSQL_HOST=localhost \
   -e MYSQL_PORT=3306 \
   -e MYSQL_DB=chatnio \
   -e MYSQL_USER=root \
   -e MYSQL_PASSWORD=chatnio123456 \
   -e REDIS_HOST=localhost \
   -e REDIS_PORT=6379 \
   -e SECRET=secret \
   -e SERVE_STATIC=true \
   programzmh/chatnio:stable

手动版本更新

docker stop chatnio
docker rm chatnio
docker pull programzmh/chatnio:latest

编译部署

部署成功后, 默认端口为 8094, 访问地址为 http://localhost:8094

环境变量可覆盖 Config 配置项, 如 MYSQL_HOST 环境变量可覆盖 mysql.host 配置项,具体参考 Go Viper 的环境变量配置项覆盖规则。

git clone https://github.com/zmh-program/chatnio.git
cd chatnio
 
cd app
npm install -g pnpm
pnpm install
pnpm build
 
cd ..
go build -o chatnio

由于这是编译安装,我们假设您已经具备开发经验,因此无需提供额外的提示,您可以自己配置运行方式 (如使用 nohup 或 systemd 等)。

下一步

您已经成功部署了 Chat Nio,接下来您可以访问进行访问,并按照提示进行登录和密码重置。 接下来,您可以在渠道管理中添加渠道,并在模型市场中添加模型。这将是您成功使用 Chat Nio 的第一步,通过这些简单的操作,您将能够快速配置并开始使用系统。

修改密码

部署成功后,管理员账号为 root,密码默认为 chatnio123456

请务必在部署完成后及时更改默认密码,以确保系统安全。

修改 Root 密码步骤

  1. 登录后台管理系统。
  2. 点击左侧菜单中的 系统设置
  3. 在系统设置页面中,找到 修改 Root 密码 选项。
  4. 输入新密码并确认。
  5. 点击 保存 以应用更改。

请务必记住新密码,并妥善保管,以确保系统安全。

高级部署配置(可选)

域名严格跨域检测

在默认情况下,后端对所有域名开放跨域。如果没有特殊需求,无需开启严格跨域检测 (CORS Detection)。 开启严格跨域检测的主要目的是为了提高应用的安全性。通过限制允许访问的域名,可以有效防止恶意网站对您的后端服务进行跨域请求攻击。 如果需要开启严格跨域检测,可以在后端环境变量中配置 ALLOW_ORIGINS,例如 ALLOW_ORIGINS=chatnio.net,chatnio.app。不需要加协议前缀,www 解析无需手动添加,后端将自动识别并允许跨域。这样配置后,将支持严格跨域检测,例如 http://www.chatnio.apphttps://chatnio.net 等前端的域名将会被允许,其他前端的域名将会被拒绝。 即使在开启严格跨域检测的情况下,/v1 接口仍然会允许所有域的跨域请求,以保证中转 API 的正常使用。

域名严格跨域检测

前后端分离部署支持

什么是前后端分离部署模式? 在默认情况下,后端提供前端的服务,API 地址为 /api。前后端分离部署指前端和后端分别部署在不同的服务上,前端使用静态文件服务 (如 Nginx, Vercel 等),后端仅提供 API 服务。

前后端分离部署架构图

举个例子:

  1. 配置环境变量 VITE_BACKEND_ENDPOINT 为你的后端地址,例如 VITE_BACKEND_ENDPOINT=https://api.chatnio.net 并打包前端
  2. 将打包后的前端静态文件通过 Nginx 部署,部署的域名为 https://www.chatnio.net (opens in a new tab)
  3. 配置后端环境变量 SERVE_STATIC=false,使后端服务不提供静态文件服务
  4. 使用 Docker Compose 部署后端,部署的域名为 https://api.chatnio.net (opens in a new tab)

前后端分离部署的好处在于可以更好地利用各自的资源,提高系统的性能和安全性。前端可以使用 CDN 加速静态资源的加载,后端可以专注于处理 API 请求,减少服务器的负载。

Kubernetes (K8s) 部署

Kubernetes (K8s) 是一个强大的容器编排平台,可以帮助您更有效地管理和扩展 Chat Nio 实例的部署。以下是在 Kubernetes 上部署 Chat Nio 的基本步骤: Kubernetes 部署架构图

  1. 准备 Kubernetes 集群: 确保您有一个可用的 Kubernetes 集群。您可以使用云服务提供商的托管 Kubernetes 服务,或者自行搭建集群。

  2. 创建配置文件: 创建一个 chatnio-deployment.yaml 文件,包含 Deployment、Service 和 ConfigMap 的定义。以下是一个示例配置:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: chatnio-config
    data:
      MYSQL_HOST: "your-mysql-host"
      MYSQL_PORT: "3306"
      MYSQL_DB: "chatnio"
      MYSQL_USER: "root"
      MYSQL_PASSWORD: "your-mysql-password"
      REDIS_HOST: "your-redis-host"
      REDIS_PORT: "6379"
      SECRET: "your-secret-key"
      SERVE_STATIC: "true"
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: chatnio
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: chatnio
      template:
        metadata:
          labels:
            app: chatnio
        spec:
          containers:
            - name: chatnio
              image: programzmh/chatnio:latest
              ports:
                - containerPort: 8094
              envFrom:
                - configMapRef:
                    name: chatnio-config
              volumeMounts:
                - name: config
                  mountPath: /config
                - name: logs
                  mountPath: /logs
                - name: storage
                  mountPath: /storage
          volumes:
            - name: config
              emptyDir: {}
            - name: logs
              emptyDir: {}
            - name: storage
              emptyDir: {}
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: chatnio-service
    spec:
      selector:
        app: chatnio
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8094
      type: LoadBalancer

    请根据您的实际环境修改配置中的数据库连接信息和其他参数。

  3. 应用配置: 使用以下命令应用配置:

    kubectl apply -f chatnio-deployment.yaml
  4. 验证部署: 使用以下命令检查部署状态:

    kubectl get deployments
    kubectl get pods
    kubectl get services
  5. 访问应用: 如果您使用了 LoadBalancer 类型的 Service,Kubernetes 将为您分配一个外部 IP。使用以下命令获取该 IP:

    kubectl get services chatnio-service

    然后,您可以通过该 IP 地址访问 Chat Nio 应用。

  6. 扩展和管理

    • 要扩展应用,可以修改 Deployment 中的 replicas 数量。
    • 使用 Kubernetes 的滚动更新功能进行版本升级。
    • 考虑使用 Kubernetes 的 Ingress 资源来管理外部访问和 SSL 终止。

请注意,这只是一个基本的 Kubernetes 部署示例。在生产环境中,您可能需要考虑更多因素,如持久化存储、密钥管理、网络策略等。建议根据您的具体需求和安全要求进行适当的调整和优化。 如果您已经购买商业版、企业版,请联系我们获取更多帮助,我们将为您提供更详细的指导和优化建议以及远程部署指导。