简介
文中案例是 NAS,但其实都是在 Docker 中部署,Windows、Linux 都可以。
新建 Docker 网络
需要先新建一个自定义网络,方便容器间通信,Docker Compose 不支持默认 bridge 网络,会报错。
docker network create 网络名
部署 free-api
在 LLM Red Team 找到需要部署的逆向 API。
docker run -it -d --init --name kimi-free-api -p 10013:8000 -e TZ=Asia/Shanghai vinlic/kimi-free-api:latest
或者根据 free-api-hub 部署所有 API。
cd /opt
git clone https://github.com/LLM-Red-Team/free-api-hub.git
cd free-api-hub
# 添加 networks.default.external: true 和 networks.default.name: 自定义网络名
vim all-free-api.yml
# docker-compose 一键启动所有 free-api 的脚本
docker-compose -f all-free-api.yml up -d
部署 Dify
可以参考 Docker Compose 部署 | Dify 部署全部,也可以通用中间件单独部署,此处采用后者。
独立部署 Redis 和 PostgreSQL
- 命令创建容器(仅供参考):
# Redis docker run -d --restart=always \ --name redis -p 16379:6379 \ --network 网络名 \ -v /volume1/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf \ -v /volume1/docker/redis/data:/data \ redis redis-server /usr/local/etc/redis/redis.conf \ --requirepass 密码 \ --appendonly yes # PostgreSQL docker run -d --restart=always \ --name postgres -p 15432:5432 \ --network 网络名 \ -e POSTGRES_PASSWORD=密码 \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v /volume1/docker/postgres/data:/var/lib/postgresql/data \ postgres
- 图形化创建 Redis:
redis.conf:requirepass 密码
- 图形化创建 PostgreSQL
手动创建dify
数据库:CREATE DATABASE "dify" WITH OWNER = "postgres" ENCODING = 'UTF8' ;
修改 Docker Compose 和 Nginx 配置并部署
cd /opt
git clone https://github.com/langgenius/dify.git
cd dify
# 修改 Nginx 配置,将 proxy_pass 中的 api 改成 dify-api,web 改成 dify-web,即使用容器名
vim nginx/conf.d/default.conf
vim docker/docker-compose.yaml
修改docker-compose.yaml
:
- 修改
services.api.environment.SECRET_KEY
中sk-
后的内容,使用openssl rand -base64 42
重新生成,作为会话 Cookie 和数据库敏感信息加密的密钥。 - vim
:259,295s/^/#/
可以将 259~295 行的开头替换为 #,此处即注释services.db
、services.redis
部分。 - 注释
services.api.depends_on
、services.worker.depends_on
、services.nginx.depends_on
。 - 修改
services.api.environment
中DB_
和REDIS_
开头和CELERY_BROKER_URL
的配置。 - 修改
services.worker.environment
中DB_
、REDIS_
、RELYT_
开头和CELERY_BROKER_URL
的配置。 - 如果数据库和 Redis 的 Host 要使用前面已经创建的独立容器名,需要放在同一网络下,即添加
networks.default.external: true
、networks.default.name: 自定义网络名
。 - 添加
services.api.container_name: dify-api
、services.worker.container_name: dify-api-worker
、services.web.container_name: dify-web
、services.weaviate.container_name: dify-weaviate
、services.sandbox.container_name: dify-sandbox
、services.nginx.container_name: dify-nginx
,设置容器名。 - 修改
services.nginx.ports
中的- "80:80"
为- "自定义端口:80"
。 - 按需修改
services.api.environment
中CONSOLE_WEB_URL
、CONSOLE_API_URL
、SERVICE_API_URL
、APP_WEB_URL
为'http://IP域名:自定义端口号'
。 - 按需修改
services.web.environment
中CONSOLE_API_URL
、APP_API_URL
为'http://IP域名:自定义端口号'
。
更多查看环境变量说明。
修改后启动:
docker-compose up -d
创建应用
访问http://IP域名:自定义端口/install
初始化后登录。
此处以 kimi 为例,先根据 kimi-free-api 接入准备获取模型 API Key。
在 Dify 中右上角设置,模型供应商中选择OpenAI-API-compatible
并配置。
最后创建应用选择模型配置后发布即可。
更多功能自行探索。
部署 NextChat
参考 ChatGPT-Next-Web/README_CN.md 部署。
docker pull yidadaa/chatgpt-next-web
docker run -d -p 10098:3000 \
--name next-chat
--network 网络名 \
-e CODE=页面访问密码1,页面访问密码2 \
yidadaa/chatgpt-next-web
部署 LobeChat
参考 lobe-chat/README.zh-CN.md 部署。
docker run -d -p 10097:3210 \
-e ACCESS_CODE=访问此服务密码1,访问此服务密码2 \
--name lobe-chat \
--network 网络名 \
lobehub/lobe-chat
评论区