感谢UniApi对本博客的的大力赞助。 创作不易,如果您觉得有帮助,请 支持LIncol29! 为了让我能够继续创作更好的内容,你也可以选择订阅博客的 VIP ,包年VIP仅需10元/年,所有VIP内容免费观看
前言
谈一谈为什么我推荐LobeChat?
1、个性化助手和助手市场,灵活定制或分享AI助手
2、thub的start数量非常多,更新很活跃。
3、有较多的插件可支持使用
4、支持服务端数据库部署,可以多端同步,并且可以多人使用。
https://github.com/lobehub/lobe-chat在Github非常受欢迎,Star在64.5K。有本地版部署以及服务
如果想部署 nextchat
,可以看【实用Docker推荐】搭建NextChat—好用的AI聊天服务
准备工作
- 拥有Open API key。如果没有官网的,可以使用代理商:UniAPI(目前
lincol29
正在使用,注册即送一美金的使用资格。小伙伴可以先试试,如果觉得性价比好,可以通过lincol29
推广链接进行注册。注册链接) - 域名(可选,如使用服务端数据库部署最好使用域名)
- 服务器或者NAS
- docker
OpenAI-API代理 – 第三方API供应商 UniAPI
- UNIAPI 为您提供全面的 AI 模型接口代理服务,以支持您的软件和应用程序,助您轻松应用领先的 AI 技术。
- 提供反向代理的 API 接口,无需境外网络环境即可便捷访问 OpenAI、Claude、Midjourney等AI模型,在自然语言处理、图像识别、智能推荐和自动问答等不同场景中发挥作用。
- 高度自由的 API 管理,可根据您需求轻松创建 API key 并管理使用金额,仅需修改接口地址为
https://api.UNIAPI.io
(国外)/https://api.UNIAPI.one
(国内)即可快速使用。 - 多种渠道来源*,官方/Azure/逆向等渠道,不同渠道享受不同折扣,可随时在令牌页面切换,详情请查看价格页面。
UniAPI(目前
lincol29
正在使用,注册即送一美金的使用资格。小伙伴可以先试试,如果觉得性价比好,可以通过lincol29
推广链接进行注册。注册链接)
UNIAPI拥有颜值非常顶的仪表盘
UNIAPI的模型价格表
可以通过日志查看模型使用情况,能了解每次对话产生的token以及费用。
如果你是小白,不想动手。可直接使用UNIAPI 已经安装好的三个服务进行使用。(新手推荐)
NextChat 、LobeChat、MidjourneyProxy
直接点击playground ,选择服务商。
部署本地版LobeChat
Docker 版本需要在 20 及其以上,否则会提示找不到镜像。
⚠️ 注意:docker 版本在大多数时间都会落后最新的版本 1 到 2 天,所以部署后会持续出现“存在更新”的提示,属于正常现象。
如果你已经拥有第三方API代理,请直接跳转docker部署。
如果不会使用docker-compose,请查看[Docker-Compose安装、使用、更新](https://www.lincol29.cn/setdocker-compose)
防火墙放行端口
ufw allow 3210/tcp
创建工作目录
work=/docker/lobechat && mkdir -p $work && cd $work
创建docker-compose.yml文件
vim docker-compose.yml
将以下代码复制进 yml 中
version: '3.8'
services:
lobe-chat:
image: lobehub/lobe-chat
container_name: lobe-chat
restart: always
ports:
- '3210:3210'
environment:
OPENAI_API_KEY: sk-mUjlPor95D8ADA1DA8WD1AD3 #API秘钥
# OPENAI_PROXY_URL: https://api.uniapi.me
ACCESS_CODE: lincol29 #进入lobechat的密码
上线容器即可,使用ip+端口访问 或者使用nginx反向代理,使用域名访问。
docker-compose up -d
部署服务端版LobeChat
准备五个域名
首先,我们要准备5个域名并在DNS提供商的后台设置好DNS解析:
lobe.lincol29.com
:用于访问LobeHub Serverlobes3ui.lincol29.com
;lobes3api.lincol29.com
:分别用于访问MinIO S3(存储管理)的WebUI和API调用lobeauthapi.lincol29.com
;lobeauthui.lincol29.com
:分别用于访Logto(用户管理)的WebUI和API调用
目前 身份认证 logto
问题很多,已放弃。改用casdoor
使用Yml,复制粘贴一下内容,按需修改
name: lobe-chat-database
services:
network-service:
image: alpine
container_name: lobe-network
ports:
- '${MINIO_PORT}:${MINIO_PORT}' # MinIO API
- '9001:9001' # MinIO Console
- '${CASDOOR_PORT}:${CASDOOR_PORT}' # Casdoor
- '${LOBE_PORT}:3210' # LobeChat
command: tail -f /dev/null
networks:
- lobe-network
postgresql:
image: pgvector/pgvector:pg16
container_name: lobe-postgres
ports:
- '5432:5432'
volumes:
- './data:/var/lib/postgresql/data'
environment:
- 'POSTGRES_DB=${LOBE_DB_NAME}'
- 'POSTGRES_PASSWORD=${POSTGRES_PASSWORD}'
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 5s
timeout: 5s
retries: 5
restart: always
networks:
- lobe-network
minio:
image: minio/minio
container_name: lobe-minio
network_mode: 'service:network-service'
volumes:
- './s3_data:/etc/minio/data'
environment:
- 'MINIO_ROOT_USER=${MINIO_ROOT_USER}'
- 'MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}'
# - 'MINIO_API_CORS_ALLOW_ORIGIN=http://localhost:${LOBE_PORT}'
- 'MINIO_API_CORS_ALLOW_ORIGIN=https://lobes3ui.lincol29.com' # 修改为自己的minio ui域名
restart: always
command: >
server /etc/minio/data --address ":${MINIO_PORT}" --console-address ":9001"
casdoor:
image: casbin/casdoor
container_name: lobe-casdoor
entrypoint: /bin/sh -c './server --createDatabase=true'
network_mode: 'service:network-service'
depends_on:
postgresql:
condition: service_healthy
environment:
RUNNING_IN_DOCKER: 'true'
driverName: 'postgres'
dataSourceName: 'user=postgres password=${POSTGRES_PASSWORD} host=postgresql port=5432 sslmode=disable dbname=casdoor'
# origin: 'http://localhost:${CASDOOR_PORT}'
origin: 'https://lobeauthui.lincol29.com' # 修改为自己的casdoor ui域名
runmode: 'dev'
volumes:
- ./init_data.json:/init_data.json
lobe:
image: lobehub/lobe-chat-database
container_name: lobe-chat-database
network_mode: 'service:network-service'
depends_on:
postgresql:
condition: service_healthy
network-service:
condition: service_started
minio:
condition: service_started
casdoor:
condition: service_started
environment:
# - 'APP_URL=http://localhost:3210'
- 'APP_URL=https://lobe.lincol29.com' # 修改为自己的lobe server域名
- 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
- 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ='
- 'NEXT_AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg'
# - 'AUTH_URL=http://localhost:${LOBE_PORT}/api/auth'
- 'AUTH_URL=https://lobe.lincol29.com/api/auth' # 修改为自己的lobe server域名,后面的路径不要改
# - 'AUTH_CASDOOR_ISSUER=http://localhost:${CASDOOR_PORT}'
- 'AUTH_CASDOOR_ISSUER=https://lobeauthui.lincol29.com' # 修改为自己的casdoor ui域名
- 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
# - 'S3_ENDPOINT=http://localhost:${MINIO_PORT}'
- 'S3_ENDPOINT=https://lobes3ui.lincol29.com' # 修改为自己的minio ui域名
- 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
# - 'S3_PUBLIC_DOMAIN=http://localhost:${MINIO_PORT}'
- 'S3_PUBLIC_DOMAIN=https://lobes3ui.lincol29.com' # 修改为自己的minio ui域名
- 'S3_ENABLE_PATH_STYLE=1'
- 'LLM_VISION_IMAGE_USE_BASE64=1'
env_file:
- .env
restart: always
volumes:
data:
driver: local
s3_data:
driver: local
networks:
lobe-network:
driver: bridge
在yml文件同目录下新建 .env
文件
# Proxy, if you need it
# HTTP_PROXY=http://localhost:7890
# HTTPS_PROXY=http://localhost:7890
# Other environment variables, as needed. You can refer to the environment variables configuration for the client version, making sure not to have ACCESS_CODE.
# OPENAI_API_KEY=sk-xxxx
# OPENAI_PROXY_URL=https://api.openai.com/v1
# OPENAI_MODEL_LIST=...
# ===========================
# ====== Preset config ======
# ===========================
# if no special requirements, no need to change
LOBE_PORT=3210
CASDOOR_PORT=8000
MINIO_PORT=9000
# Postgres related, which are the necessary environment variables for DB
LOBE_DB_NAME=lobechat
POSTGRES_PASSWORD=abcde
# Casdoor secret
AUTH_CASDOOR_ID=1d4a186835d99dad8ad1ad6ad
AUTH_CASDOOR_SECRET=de3defabddf5ff257a03daiwiadnadi
# MinIO S3 configuration
MINIO_ROOT_USER=lincol
MINIO_ROOT_PASSWORD=99851768
# Configure the bucket information of MinIO
MINIO_LOBE_BUCKET=lobe
S3_ACCESS_KEY_ID=dB6Uq9CYdawdad
S3_SECRET_ACCESS_KEY=aPBW8CVULkh8wdadwadawdada85
登录Casdoor进行身份认证
首先访问 WebUI 来进行配置:
- 如果你按照前文配置了反向代理,打开
https://lobeauthui.lincol29.com
- 否则,请在进行端口映射后,打开
http://localhost:8000
账户:admin
密码:123
登入后执行如下操作
- 在
用户管理 -> 组织
中,添加一个新的组织。名称与显示名称为Lobe Users
。其余保持默认即可。 - 在
身份认证 -> 应用
中,添加一个新的应用。 - 名称与显示名称为
LobeChat
。 - 组织为
Lobe Users
。 - 重定向 URLS 中添加一行 为
https://lobe.example.com/api/auth/callback/casdoor
。 - 关闭除密码外的登录方式 。
- 将客户端 ID 和客户端密钥分别填入
.env
中的AUTH_CASDOOR_ID
和AUTH_CASDOOR_SECRET
中。 - (可选) 仿照
built-in
应用的配置,来设计登录和注册的页面外观。 - 保存并退出。
需要自己在组织 Lobe Users
下添加账户,以便于使用lobechat的时候登录鉴权。
LobeChat使用
登录LobeChat
当第一次登录输入问题时,会让你输入密码。
输入在 docker-compose.yml 文件中ACCESS_CODE
的值
更新模型
点击右上角设置——语言模型——依据四个步骤分别填写 api key 以及第三方 api 代理。
lincol 这里推荐使用 UniAPI,网站更新迭代很快,并且在线客服响应非常及时
使用 nginx 进行反代,绑定域名,使用域名访问
如果你想节省token,请调节历史消息数。
参考资料
Lobechat:lobechat 的官网
https://hub.docker.com/r/lobehub/lobe-chat:lobe-chat 的 docker 镜像地址:
https://lobehub.com/zh/docs/self-hosting/server-database:lobe-chat 的官方文档:
UNIAPI : lincol29 目前在用的第三方API供应商。
【实用Docker推荐】搭建NextChat—好用的AI聊天服务: 使用Nextchat
网站地图 – Lincol29 : 在这个网站地图中,你可以找到关于C#、常用生产力工具、面试面经、Docker、WordPress、RSS、等各类技术主题的教程和分享,以及对本站内容快速导航。