日志
不会用Docker的小伙伴可以加苯苯tg群,有时间可以帮你搭建;自备VPS和远程软件todesk、向日葵或parsec即可。没VPS的可以在这里选一台。
- 2025-11-15:更新Logto的参数保证对Lobechat 2.0的兼容。更新MinIO的MC设置。更新docker-compose.yml以保证布署更加稳定。
- 2025-02-25:新增lobechat的智能联网功能,通过添加
searxng/searxng容器实现。 - 2024-08-29:新增LobeHub服务器版的安装教程,支持跨平台保存聊天、私人知识库等高级功能。
- 2024-08-07:1. 新增
gpt-4o-2024-08-06模型。OpenAI在其API中引入结构化输出。能力全方位提升,ZeroEval基准测试直接跃居第一。输入价格为2.5美元/100万token,输出价格为10美元/100万token,输入和输出分别节省50%、33%。token输出扩展到16k,而此前仅支持4k。Bensz建议:作为gpt-4o或Claude 3.5 Sonnet等进阶模型的平替。gpt-4o-min定位为低端模型,生态位暂不受影响。 2. 更新模型设置教程,可以自定义图片或文件上传功能。详见教程的“设置LobeChat——添加模型——模型设置”小节。 - 2024-07-19:新增
gpt-4o-min模型,OpenAI新一代入门级别人工智能「小模型」。GPT-4o mini 上下文窗口依然是 12.8 万个 Tokens,知识截止日期为 2023 年 10 月。 API 价格将会是 15 美分/100 万 Tokens 输入,以及 60 美分/100 万 Tokens 输出,比 GPT-4o 便宜 96%-97%,比 GPT-3.5 Turbo 便宜 60%-70%。 - 2024-06-23:新增
Claude 3.5 Sonnet模型的说明和安装示范。详见设置LobeChat——添加模型——Anthropic主题。
概述
Lobe Chat是一个流行的开源大语言模型(LLM)UI框架,支持与LLM的多种交互。基础界面如下:

LobeChat在Github上Star数很多,是一个颇受欢迎的开源项目:

我选择LobeChat的原因:
- 项目更新较活跃,对于新的模型或新的特性支持速度较快
- 支持语音合成、多模式和可扩展(函数调用)插件系统
- 可以通过Docker私人布署
- 配合OhMyGPT等LLM API服务商,在token计费、可用模型方面有较好的拓展性。
根据数据托管的位置不同,LobeChat有本地版或服务器版。我的推荐如下:
- 本地版:安装简单、功能简单,建议小白尝鲜使用。
- 服务器版:功能强大、安装复杂,建议老手长期使用。服务器版有一些特色功能,比如:帐户管理、跨设备同步、向量数据库(个人知识库;在未来支持更多模态的交互)、基于SearXNG的联网搜索。
LobeChat本地版我已经很久不使用了;其实也不建议使用。如果大家对本地应用感兴趣,其它项目应该更加合适,比如CherryHQ/cherry-studio: 🍒 Cherry Studio is a desktop client that supports for multiple LLM providers.。因为,我已经适当地隐藏了本地版的教程。如果大家感兴趣,请至这里查看相关的Legacy内容。
LobeChat官方还推出了 LobeChat Cloud。LobeChat Cloud的最大好处就是支持数据库同步,这对于有多用户管理或者对对话信息/设置的跨设备要求较高的用户可能是有益的。但它并不是免费的,可能大多数用能力自建服务的用户并不会选择它 (~ ̄▽ ̄)~
LobeChat更新的频率很高。如有必要,可以使用watchtower(详见“Docker系列 配置Docker全局环境 – 自动更新容器镜像”)之类的方案设置自动更新。下面咱们开始安装吧!
安装LobeChat服务器版
参考官方文档 通过 Docker Compose 部署 LobeChat。本流程所用随机密码可能较多,建议了解《Docker系列 搭建密码管理应用bitwarden》。
域名准备
下列域名是教学示范用,并不存在。请更换自己的域名。
首先,我们要准备5个域名并在DNS提供商的后台设置好DNS解析:
lobeserver.example.com:用于访问LobeHub Serverlobeservers3ui.example.com;lobeservers3api.example.com:分别用于访问MinIO S3(存储管理)的WebUI和API调用lobeserverauthapi.example.com;lobeserverauthui.example.com:分别用于访Logto(用户管理)的WebUI和API调用
我们还需要用到向量数据库,但它不需要准备域名,故暂不提及。
配置yml文件
不了解docker的小伙伴请先看:《Docker系列 配置Docker全局环境》;《Docker系列 了解Docker Compose的配置文件》。
创建目录:
work=/docker/lobechat-server; mkdir -p $work; cd $work
新建docker-compose.yml文件
vim docker-compose.yml
我对官方的docker-compose.yml进行了一定修改(除了lobechat外,所有的镜像建议使用特定版本。虽然丧失了及时体验未来新特性的可能性,但对于整个stack的稳定性、可迁移性至关重要):
services:
# LobeHub(即我们平时访问的那个界面)
lobe-database:
image: lobehub/lobe-chat-database # 这是lobechat 1.0版本。官方从2025-11起不再维护。暂时来说功能是够用的。
# image: lobehub/lobehub # 这是lobechat 2.0版本。不过,本教程更新时正在内测,不够稳定。大家按需使用。
container_name: lobe-database
restart: unless-stopped
expose:
- '3210'
depends_on:
- lobe-postgres
- lobe-minio
- lobe-logto
env_file:
- .env
# 向量数据库(用于支持私人知识库等RAG高级功能)
lobe-postgres:
image: pgvector/pgvector:pg16
container_name: lobe-postgres
restart: unless-stopped
expose:
- '5432'
volumes:
- './data:/var/lib/postgresql/data'
environment:
- 'POSTGRES_DB=lobe'
- 'POSTGRES_PASSWORD=abcde' # 按需修改
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 5s
timeout: 5s
retries: 5
# S3存储服务器
lobe-minio:
image: minio/minio:RELEASE.2024-08-29T01-40-52Z # 旧版本有比较丰富的可视化界面。建议使用后不要再调整版本。
# image: minio/minio:latest # 新版本(2025-7或以后)必须用mc工具与之交互,对Linux编程能力有一定要求,故不太方便。可能是因为这个缘故,lobechat官方现在已经不在官方教程推荐该方案
container_name: lobe-minio
restart: unless-stopped
expose:
- '9000' # MinIO API
- '9001' # MinIO WebUI
volumes:
- './s3_data:/etc/minio/data'
environment:
- 'MINIO_ROOT_USER=minio'
- 'MINIO_ROOT_PASSWORD=efghi' # 按需修改
- 'MINIO_DOMAIN=lobeservers3.example.com'
- 'MINIO_API_CORS_ALLOW_ORIGIN=https://lobeserver.example.com' # 请注意这里的域名是你的 LobeChat 服务端域名
command: >
server /etc/minio/data --address ":9000" --console-address ":9001"
# 用户管理和帐户鉴权
lobe-logto:
image: svhd/logto:1.19.0 # 使用旧版本就好
container_name: lobe-logto
restart: unless-stopped
expose:
- '3001' # LogTo API
- '3002' # LogTo WebUI
depends_on:
lobe-postgres:
condition: service_healthy
environment:
- 'TRUST_PROXY_HEADER=1'
- 'DB_URL=lobe-postgres://postgres:abcde@lobe-postgres:5432/logto'
- 'ENDPOINT=https://lobeserverauthapi.example.com'
- 'ADMIN_ENDPOINT=https://lobeserverauthui.example.com'
entrypoint: ['sh', '-c', 'npm run cli db seed -- --swe && npm start']
# 联网搜索(2025-02-25后支持的新功能)
lobe-searxng:
image: searxng/searxng:2025.10.25-4ca75a045 # 建议使用一个固定版本。不过,我之前也更新过。除了设置略有变化,感觉上差异不大。总之,建议有折腾时间和能力的小伙伴尽量更新。
# image: searxng/searxng
container_name: lobe-searxng
restart: unless-stopped
expose:
- "8080"
volumes:
- ./searxng:/etc/searxng
environment:
- SEARXNG_SETTINGS_FILE=/etc/searxng/settings.yml
- SEARXNG_SECRET=LCxxx9xxxxxxqTqiLk # 较新版本的必须设置
depends_on:
lobe-database
配置.env
由于可定义的必要参数比较多,该docker-compose.yml文件要配合.env文件使用,内容如下。里面很多内容需要根据实际情况修改(所有链接类参考都建议删除后面的#注释以保证正常运行):
# LobeChat 域名
APP_URL=https://lobeserver.example.com/ # 按需修改
# Postgres 相关,也即 DB 必须的环境变量
# 用于加密敏感信息的密钥,可以使用 openssl rand -base64 32 生成
KEY_VAULTS_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 按需修改
# Postgres 数据库连接字符串
# 格式:postgres://username:password@host:port/dbname,如果你的 pg 实例为 Docker 容器,请使用容器名
DATABASE_URL=lobe-postgres://postgres:abcde@lobe-postgres:5432/postgres
# NEXT_AUTH 相关,可以使用 auth0、Azure AD、GitHub、Authentik、Zitadel、Logto 等
# 这里以 Logto 为例
NEXT_AUTH_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxx # 按需修改,似乎是一个随机字符串
NEXT_AUTH_SSO_PROVIDERS=logto
NEXTAUTH_URL=https://lobeserver.example.com/api/auth # 按需修改
AUTH_LOGTO_ID=xxxxxxxxxxx # 按需修改
AUTH_LOGTO_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 按需修改
AUTH_LOGTO_ISSUER=https://lobeserverauthapi.example.com/oidc # 按需修改
# 注:如果你有 ACCESS_CODE,请务必清空,我们以 NEXT_AUTH 作为唯一鉴权来源
# Proxy,如果你需要的话(比如你使用 GitHub 作为鉴权服务提供商)
# HTTP_PROXY=http://localhost:7890
# HTTPS_PROXY=http://localhost:7890
# MinIO S3 配置
S3_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxx # 按需修改。直到在 MinIO UI 中手动创建之前都是无效的
S3_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 按需修改。直到在 MinIO UI 中手动创建之前都是无效的
S3_ENDPOINT=https://lobeservers3api.example.com # 按需修改
S3_BUCKET=lobe # 按需修改。直到在 MinIO UI 中手动创建之前都是无效的
S3_PUBLIC_DOMAIN=https://lobeservers3api.example.com # 按需修改
S3_ENABLE_PATH_STYLE=1
# 联网搜索(2025-02-25以后的版本才支持的功能)
SEARXNG_URL=http://lobe-searxng:8080
# 其他基础环境变量,视需求而定。注意不要有 ACCESS_CODE
# 请参考:https://lobehub.com/zh/docs/self-hosting/environment-variables/basic
# 请注意,对于服务端版本,其 API 必须支持嵌入(OpenAI text-embedding-3-small)模型,否则无法对上传文件进行处理,但你无需在 OPENAI_MODEL_LIST 中指定此模型
# OPENAI_API_KEY=sk-xxxx
# OPENAI_PROXY_URL=https://cfcus02.opapi.win/v1
# OPENAI_MODEL_LIST=-all,+gpt-4o-mini,+gpt-4o-2024-05-13=GPT-4o (240513),+gpt-4o-2024-08-06=GPT-4o (240806),+chatgpt-4o-latest,+deepseek-chat
# OPENAI_MODEL_LIST=-all,+gpt-4o-mini,+gemini-1.5-flash-002
# Legacy 设置
# LOGTO_CLIENT_ID=xxxxxxxxxxx # 按需修改
# LOGTO_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 按需修改
# LOGTO_ISSUER=https://lobeserverauthapi.example.com/oidc # 按需修改
在开始安装时某些.env值是未知的,这没关系。等正常上线整个docker stack后再回来统一修改。
最后,文件夹内文件分布类似:
-rw-r--r-- 1 root root 1.8K Aug 28 20:22 .env
-rw-r--r-- 1 root root 1.8K Aug 28 19:09 docker-compose.yml
直接布署:
docker-compose up -d
这是一个正常运行时一级子文件(夹)的分布:
drwx------ 19 lxd root 4.0K Nov 15 16:55 data
drwxr-xr-x 2 977 977 4.0K Nov 15 16:55 searxng
-rw-r--r-- 1 root root 2.6K Nov 15 16:55 docker-compose.yml
drwxr-xr-x 4 root root 4.0K Nov 15 14:56 s3_data
NPM设置
不了解Nginx Proxy Manager用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。
本实例的反向代理对应关系(域名→http://服务名称:端口号):
lobeserver.example.com→http://lobe-database:3210lobeservers3ui.example.com→http://lobe-minio:9001lobeservers3api.example.com→http://lobe-minio:9000lobeserverauthapi.example.com→http://lobe-logto:3001lobeserverauthui.example.com→http://lobe-logto:3002
应用设置
Logto
和登陆、认证有关
- 访问
https://lobeserverauthui.example.com,自己注册一下Logto帐号。 - 创建一个
Next.js (App Router)应用,添加以下配置: Redirect URI为https://lobeserver.example.com/api/auth/callback/logtoPost sign-out redirect URI为https://lobeserver.example.com/CORS allowed origins为https://lobeserver.example.com


- 将
LOGTO_CLIENT_ID、LOGTO_CLIENT_SECRET等参数更新到.env文件中

MinIO S3
和文件储存有关
- 访问
https://lobeservers3ui.example.com - 根据docker-compose.yml,帐户名
minio,密码efghi - 创建符合你的
.env文件中S3_BUCKET字段的桶,默认为lobe

旧版MinIO
具有可视化窗口,比较简单。
- 选择自定义策略,复制如下内容,粘贴之(如果你修改了桶名
lobe,请自行查找替换)

{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["*"]
},
"Action": ["s3:GetBucketLocation"],
"Resource": ["arn:aws:s3:::lobe"]
},
{
"Effect": "Allow",
"Principal": {
"AWS": ["*"]
},
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::lobe"],
"Condition": {
"StringEquals": {
"s3:prefix": ["files/*"]
}
}
},
{
"Effect": "Allow",
"Principal": {
"AWS": ["*"]
},
"Action": ["s3:PutObject", "s3:DeleteObject", "s3:GetObject"],
"Resource": ["arn:aws:s3:::lobe/files/**"]
}
],
"Version": "2012-10-17"
}
当然,这个对应的是比较久的lobechat。新版的lobechat由于支持生成图像等全新我懂,为了保证图像的可获取性,这个设置更好:
- 将
S3_ACCESS_KEY_ID(图中mBUM***那一串字符)、S3_SECRET_ACCESS_KEY(只展示1次,要记录好)等参数更新到.env中。

新版MinIO
使用MinIO CLI(简称
mc)这个命令行工具与之交互。比较复杂。如果你不慎在镜像里升级到新版,不能回退旧版(回退后无法正常识别数据)。所以并不建议大家使用较新版本的MinIO的docker镜像。这里的教程只是给不慎升级的兄弟留条出路。
对于了解咱们博客的小伙伴,对于命令行使用一般都轻车熟路,这里不再多说。具体设置如下:
重新布署
最后,重新布署整个stack让.env生效即可:
docker-compose down && docker-compose up -d
注册使用
访问lobeserver.example.com即可正常注册使用。大部分功能是一样的:

还可以构建本地知识库,不过我暂时还没有深度使用:

以后有什么经验或技巧再来介绍吧!
获取API
自从自己的OpenAI被封禁后,为了省事,我选择了第3方LLMs API服务商——OhMyGPT,也是一些朋友介绍的。我和几个同事凑的VIP套餐,日常使用是足够的:

OhMyGPT支持多种LLM的API,而且对新模型的支持速度很快,具体见“OhMyGPT支持的模型”。目前用起来感觉还行,开发者也蛮活跃的。使用中有啥问题我也会跟进并在此文更新的,大家有什么意见也可以在评论区留言 (~ ̄▽ ̄)~
设置LobeChat
所有的设置都是修改即生效。LobeChat的使用还是比较简单的,难的是自部署。因为LobeChat已经迭代过很多版本,很多设置已经变化,以下使用教程仅供参考吧!如果有疑问,可以加tg群问我或者其它群友。
API信息
以OhMyGPT为例
- OpenAI API Key:
sk-xxx粘贴上去即可。 - API代理地址:
https://apic.ohmygpt.com/v1(中国大陆的小伙伴推荐https://aigptx.top/v1,网络会稳定些)。有其它镜像地址,但一般这样也够了。其它可用地址包括:https://cn2us02.opapi.win/v1、https://cfwus02.opapi.win/v1、https://cfcus02.opapi.win/v1. - 使用客户端请求模式:一般不要选。如果你无法正常使用API,且本地电脑有代理软件,可以尝试打开该按钮。
- 模型列表:详见
添加模型小节。

添加模型
OpenAI
进入应用设置——语言模型——OpenAI里面。一般添加OpenAI的模型就够了:

可以直接点选:

也可以直接复制OhMyGPT支持的模型名称(详见获取API小节)加进去:

Anthropic
近日(2024/06/21),Anthropic 最新发布了 Claude 3.5 Sonnet ,这是他们迄今为止最智能的大模型,超越了竞争对手的 GPT4o。该模型提高了智能水平,在各项基准评估中表现优异,同时保持了运行速度和成本的平衡。Claude 3.5 Sonnet已经在 Claude.ai 和 Claude iOS 应用上免费提供,同时也可通过 Anthropic API 和亚马逊云科技 Bedrock 使用。该模型在推理、阅读理解、数学、科学和编码等方面表现出色,是处理复杂任务的理想选择。此外,Claude 3.5 Sonnet在视觉推理任务中也表现出色,超越了前代模型。Anthropic 还推出了Artifacts功能,扩展了用户与Claude的交互方式,为团队协作提供了新可能性。最后,Anthropic对模型进行了严格的安全评估,并将其分类为AI安全等级2,以确保不会造成灾难性风险。下面咱们来演示一下如何在LobeChat里添加Claude 3.5 Sonnet。
首先,进入语言模型界面,下滑到Anthropic系列:

内容格式如下:
- API Key:
sk-xxx样的字符串 - API代理地址:
https://apic.ohmygpt.com - 使用客户端请求模式:禁用
- 模型列表:最新版的Preview已经更新了
Claude 3.5 Sonnet,直接使用即可。
最后检查一下连能性,没问题就可以了。这里我演示一下如何使用Claude 3.5 Sonnet模型;其实和其它模型类似啦:

更多阅读
模型设置
LobeChat可以定义每个模型的功能。一些类似gpt-4o的进阶模型可能支持图片、文件上传等功能,有需要的小伙伴可以将其功能打开:

比如,这里可以正常使用新模型gpt-4o-2024-08-06的图片功能:

基本使用
选择一个模型使用即可:

也可以新建一个列表。每个列表可以有多个话题:

每个列表本质上就是一个预先写好的Prompt,自己也可以修改:

这些Prompt其实都是在插件市场里直接添加的:

其它更多功能我就不一一展示了,自己摸索吧 (ฅ´ω`ฅ)
默认助手
我们可以进入应用设置——默认助手里设置,可以根据自己的习惯设置一些参数。我觉得最实用的设置是聊天设置和模型设置,这里可以设置会话消息限制、默认模型之类的参数。

导出配置
大家可以按需导出配置:

然后保存在安全的地方(因为里面会包含你的API信息)。如果你以后使用了一个新设备,或者清空了浏览器缓存,则可以导入配置快速使用之前的配置。这个配置在IOS端、iPad端等都是适用的。
LobeChat的app
移动端仅展示IOS版本
LobeChat在电脑上、手机上都可以当作一个软件/app来使用。
如果你使用电脑浏览器访问,而且你的电脑还没安装好LobeChat,它会提示你是否安装桌面版本。PC版LobeChat本质上是一个浏览器应用:

如果你是iOS用户,只需要用Safari浏览器访问 https://lobechat.hwb0307.com ,点击分享,然后选择添加到主屏幕即可:

值得一提的是,LobeChat是一个基于Typescript的Web应用,因此跨设备的能力比较强一些。在移动互联网的兴起的时代,这种开发方式是比较流行的。
使用技巧
日常使用
我个人比较常用的有gpt-4o-min、gpt-4o、claude-3-sonnet。gpt-4o-min是一个初阶模型,但大部分任务都可以胜任。如果gpt-4o-min的答案不够好,我会尝试一下gpt-4o、claude-3-sonnet。
我日常使用LobeChat的基本布局如下:

从上图也可以看出,我使用大模型的方式还是比较简单、传统的。对我而言,这样已经可以满足大部分工作和学习需求。
省钱小技巧 – 会话消息限制
每个对话的默认状态下是不限历史消息次数的:

这就意味着每问一个新问题,LobeChat会把历史消息全作为输入;这会产生滚雪球式效应,导致token用量大大增加,因此费用会较高。
大多数情况下我们只是需要1问1答。如果你不需要连续对话,你应该设置一个限制,这样会比较节省token。只需这样:

默认限制是1条,你也可以根据自己的需要设置更高的数字。比如10,每次新的提问会将前10次对话的问与答都纳入为该新提问题的输入。另外,每个1问1答的列表建议如下设置聊天偏好-聊天设置:

小结
LobeChat服务器版还是蛮复杂的。以后有什么使用小技巧会继续分享给大家的!
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍
服务器版本我用域名模式部署后,[https://域名+端口]访问LobeChat登录跳转casdoor一直失败,用auth0反而成功了…
看您在部署lobechat服务器版本时,没有在ufw中开放端口,这是不需要吗?
在docker的体系下,ufw开放的是宿主机的端口号;但docker镜像之间可以通过docker stack的局域网进行交互。类似的技巧在我的其它博文中都有使用过。
服务器版与本地版,对于实际使用有什么区别呢?
主要是2个: 跨设备同步、向量数据库相关特性。