@lobehub/chat 1.50.1 → 1.50.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,55 +18,147 @@ tags:
18
18
  [![][docker-pulls-shield]][docker-pulls-link]
19
19
  </div>
20
20
 
21
- <Callout type="info">
22
- 本文已经假定你了解了 LobeChat 服务端数据库版本(下简称 DB
23
- 版)的部署基本原理和流程,因此只包含核心环境变量配置的内容。如果你还不了解 LobeChat DB
24
- 版的部署原理,请先查阅 [使用服务端数据库部署](/zh/docs/self-hosting/server-database) 。
25
- </Callout>
26
-
27
21
  <Callout type="warning">
28
- 由于无法使用 Docker 环境变量暴露 `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY`,使用 Docker / Docker Compose
29
- 部署 LobeChat 时,你不能使用 Clerk 作为登录鉴权服务。
22
+ **Docker 部署限制说明**
23
+ Docker Docker Compose 部署方案不支持通过环境变量注入 `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY`,
24
+ 因此无法启用 Clerk 身份验证服务。建议替代方案:
25
+
26
+ - 采用 Vercel 托管部署
30
27
 
31
- 如果你确实需要 Clerk 作为登录鉴权服务,你可以考虑使用 Vercel 部署或者自行构建镜像。
28
+ - 执行本地镜像构建流程
32
29
  </Callout>
33
30
 
34
- 一般来讲,想要完整的运行 LobeChat 数据库版本,你需要至少拥有如下四个服务
31
+ ## 快速启动
35
32
 
36
- - LobeChat 数据库版本自身
37
- - 带有 PGVector 插件的 PostgreSQL 数据库
38
- - 支持 S3 协议的对象存储服务
39
- - 受 LobeChat 支持的 SSO 登录鉴权服务
33
+ <Callout type="info">
34
+ **系统兼容性说明**
40
35
 
41
- 这些服务可以通过自建或者在线云服务组合搭配,以满足不同层次的部署需求。
36
+ - 支持 Unix 环境(Linux/macOS)的一键部署
42
37
 
43
- 本文中,我们提供了完全基于开源自建服务的 Docker Compose 配置,你可以直接使用这份配置文件来启动 LobeChat 数据库版本,也可以对之进行修改以适应你的需求。
38
+ - Windows 用户需通过 [WSL 2](https://aka.ms/wsl) 运行
44
39
 
45
- 我们默认使用 [MinIO](https://github.com/minio/minio) 作为本地 S3 对象存储服务,使用 [Casdoor](https://github.com/casdoor/casdoor) 作为本地鉴权服务。
40
+ - 一键启动脚本为首次部署专用,非首次部署请参考 [自定义部署](#自定义部署) 章节
46
41
 
47
- ## 快速启动
42
+ - 端口占用检查:确保 `3210`、`8000`、`9000`、`9001` 端口可用
43
+ </Callout>
48
44
 
49
- 为方便快速上手,这一章使用 `docker-compose/local` 目录中的 `docker-compose.yml` 配置文件,启动后的 LobeChat 应用运行在 `http://localhost:3210`,可在本地运行。
45
+ 执行以下命令初始化部署环境,目录 `lobe-chat-db` 将用于存放你的配置文件和后续的数据库文件。
50
46
 
51
- <Callout type="warning">
52
- 为了快速上手,此 `docker-compose.yml` 内置了大量的 Secret/Password
53
- 的敏感字段配置,仅适用于快速演示或个人本地使用。请勿直接用于线上生产环境!否则遇到安全问题请自行负责!
47
+ ```sh
48
+ mkdir lobe-chat-db && cd lobe-chat-db
49
+ ```
50
+
51
+ 获取并执行部署脚本:
52
+
53
+ ```sh
54
+ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
55
+ ```
56
+
57
+ 脚本支持以下部署模式,请根据你的需求选择相应的模式,并继续阅读文档的剩余部分。
58
+
59
+ - [本地模式(默认)](#本地模式):仅能在本地访问,不支持局域网 / 公网访问,适用于初次体验;
60
+ - [端口模式](#端口模式):支持局域网 / 公网的 `http` 访问,适用于无域名或内部办公场景使用;
61
+ - [域名模式](#域名模式):支持局域网 / 公网在使用反向代理下的 `http/https` 访问,适用于个人或团队日常使用;
62
+
63
+ <Callout type="info">
64
+ 在脚本的选项提示 `(选项1/选项2)[选项1]` 中:`(选项1 / 选项2)` 代表可以选择的选项,`[选项1]`代表默认选项,直接回车即可选择默认选项。
54
65
  </Callout>
55
66
 
67
+ ### 本地模式
68
+
56
69
  <Steps>
57
- ### 一键启动脚本
70
+ ### 在交互式脚本中完成剩余配置
58
71
 
59
- 新建一个 `lobe-chat-db` 目录,用于存放你的配置文件和后续的数据库文件。
72
+ 持续回车采用默认配置。
73
+
74
+ ### 查看配置生成报告
75
+
76
+ 你需要在脚本运行结束后查看配置生成报告,包括 Casdoor 管理员的帐号、用户账号和它们的初始登录密码。
77
+
78
+ <Callout type="warning">
79
+ 请使用用户账号登录 LobeChat,管理员账号仅用于管理 Casdoor。
80
+ </Callout>
81
+
82
+ ```log
83
+ 安全密钥生成结果如下:
84
+ LobeChat:
85
+ - URL: http://localhost:3210
86
+ - Username: user
87
+ - Password: c66f8c
88
+ Casdoor:
89
+ - URL: http://localhost:8000
90
+ - Username: admin
91
+ - Password: c66f8c
92
+ Minio:
93
+ - URL: http://localhost:9000
94
+ - Username: admin
95
+ - Password: 8c82ea41
96
+ ```
97
+
98
+ ### 启动 Docker
60
99
 
61
100
  ```sh
62
- mkdir lobe-chat-db
63
- cd lobe-chat-db
101
+ docker compose up -d
64
102
  ```
65
103
 
66
- 我们提供了一个一键启动脚本 `setup.sh`,可以自动使用默认配置并启动服务:
104
+ ### 检查日志
67
105
 
68
106
  ```sh
69
- bash <(curl -fsSL https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/local/setup.sh) -f -l zh_CN
107
+ docker logs -f lobe-chat
108
+ ```
109
+
110
+ 如果你在容器中看到了以下日志,则说明已经启动成功:
111
+
112
+ ```log
113
+ [Database] Start to migration...
114
+ ✅ database migration pass.
115
+ -------------------------------------
116
+ ▲ Next.js 14.x.x
117
+ - Local: http://localhost:3210
118
+ - Network: http://0.0.0.0:3210
119
+
120
+ ✓ Starting...
121
+ ✓ Ready in 95ms
122
+ ```
123
+
124
+ ### 访问应用
125
+
126
+ 通过 [http://localhost:3210](http://localhost:3210) 访问你的 LobeChat 服务。
127
+ 应用的账号密码在步骤`2`的报告中。
128
+ </Steps>
129
+
130
+ ### 端口模式
131
+
132
+ <Steps>
133
+ ### 在交互式脚本中完成剩余配置
134
+
135
+ 在端口模式中,你需要根据脚本提示完成:
136
+
137
+ - 服务器 IP 地址设置:以便局域网 / 公网访问。
138
+ - 安全密钥重新生成:我们强烈建议你重新生成安全密钥,如果你缺少脚本所需的密钥生成库,我们建议你参考 [自定义部署](#自定义部署) 章节对密钥进行修改。
139
+
140
+ ### 查看配置生成报告
141
+
142
+ 你需要在脚本运行结束后查看配置生成报告,包括 Casdoor 管理员的帐号、用户账号和它们的初始登录密码。
143
+
144
+ <Callout type="warning">
145
+ 请使用用户账号登录 LobeChat,管理员账号仅用于管理 Casdoor。
146
+ </Callout>
147
+
148
+ ```log
149
+ 安全密钥生成结果如下:
150
+ LobeChat:
151
+ - URL: http://your_server_ip:3210
152
+ - Username: user
153
+ - Password: 837e26
154
+ Casdoor:
155
+ - URL: http://your_server_ip:8000
156
+ - Username: admin
157
+ - Password: 837e26
158
+ Minio:
159
+ - URL: http://your_server_ip:9000
160
+ - Username: admin
161
+ - Password: dbac8440
70
162
  ```
71
163
 
72
164
  ### 启动 Docker
@@ -75,8 +167,6 @@ tags:
75
167
  docker compose up -d
76
168
  ```
77
169
 
78
- 默认登录账号即 Casdoor 的默认账号,账号名 `admin`,密码 `123`
79
-
80
170
  ### 检查日志
81
171
 
82
172
  ```sh
@@ -90,53 +180,253 @@ tags:
90
180
  ✅ database migration pass.
91
181
  -------------------------------------
92
182
  ▲ Next.js 14.x.x
93
- - Local: http://localhost:3210
183
+ - Local: http://your_server_ip:3210
94
184
  - Network: http://0.0.0.0:3210
95
-
96
185
  ✓ Starting...
97
186
  ✓ Ready in 95ms
98
187
  ```
188
+
189
+ ### 访问应用
190
+
191
+ 你可以通过 `http://your_server_ip:3210` 访问你的 LobeChat 服务。
192
+ 应用的账号密码在步骤`2`的报告中。
99
193
  </Steps>
100
194
 
101
- 至此,你已经成功部署了 LobeChat 数据库版本,你可以通过 `http://localhost:3210` 访问你的 LobeChat 服务。
195
+ ### 域名模式
196
+
197
+ <Steps>
198
+ ### 完成反向代理配置
199
+
200
+ 在域名模式中,你需要完成反向代理配置,并确保局域网 / 公网能访问到以下服务。请使用反向代理将以下服务端口映射到域名:
201
+
202
+ | 域名 | 反代端口 | 是否必选 |
203
+ | --------------------- | ------ | ---- |
204
+ | `lobe.example.com` | `3210` | 必选 |
205
+ | `auth-ui.example.com` | `8000` | 必选 |
206
+ | `s3-api.example.com` | `9000` | 必选 |
207
+ | `s3-ui.example.com` | `9001` | |
208
+
209
+ <Callout type="important">
210
+ 如果你使用如 [宝塔面板](https://www.bt.cn/) 等面板软件进行反向代理配置,
211
+ 你需要确保其对 `.well-known` 路径的请求不进行拦截,以确保 Casdoor 的 OAuth2 配置能够正常工作。
212
+ 这里提供一份针对 Nginx server 块的路径白名单配置:
213
+
214
+ ```nginx
215
+ location /.well-known/openid-configuration {
216
+ proxy_pass http://localhost:8000; # 转发到 localhost:8000
217
+ proxy_set_header Host $host; # 保留原始主机头
218
+ proxy_set_header X-Real-IP $remote_addr; # 保留客户端真实IP
219
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 保留转发的IP
220
+ proxy_set_header X-Forwarded-Proto $scheme; # 保留请求协议
221
+ }
222
+ ```
223
+ </Callout>
224
+
225
+ ### 在交互式脚本中完成剩余配置
226
+
227
+ 在域名模式中,你需要根据脚本提示完成:
228
+
229
+ - LobeChat 服务的域名设置:`lobe.example.com`
230
+ - Minio 服务的域名设置:`s3-api.example.com`
231
+ - Casdoor 服务的域名设置:`auth-ui.example.com`
232
+ - 选择访问协议:`http` 或 `https`
233
+ - 安全密钥重新生成:我们强烈建议你重新生成安全密钥,如果你缺少脚本所需的密钥生成库,我们建议你参考 [自定义部署](#自定义部署) 章节对密钥进行修改。
234
+
235
+ <Callout type="warning">
236
+ 以下问题可能导致你的服务无法正常访问:
237
+
238
+ - 此处的域名配置需要与步骤`1`中的反向代理配置保持一致。
239
+
240
+ - 如果你使用 Cloudflare 的域名解析服务并开启了 `全程代理`,请使用 `https` 协议。
241
+
242
+ - 如果你使用了 HTTPS 协议,请确保你的域名证书已经正确配置,一键部署默认不支持自签发证书。
243
+ </Callout>
244
+
245
+ ### 查看配置生成报告
246
+
247
+ 你需要在脚本运行结束后查看配置生成报告,包括 Casdoor 管理员的初始登录密码。
248
+
249
+ <Callout type="warning">
250
+ 请使用用户账号登录 LobeChat,管理员账号仅用于管理 Casdoor。
251
+ </Callout>
252
+
253
+ ```log
254
+ 安全密钥生成结果如下:
255
+ LobeChat:
256
+ - URL: https://lobe.example.com
257
+ - Username: user
258
+ - Password: 837e26
259
+ Casdoor:
260
+ - URL: https://auth-ui.example.com
261
+ - Username: admin
262
+ - Password: 837e26
263
+ Minio:
264
+ - URL: https://s3-api.example.com
265
+ - Username: admin
266
+ - Password: dbac8440
267
+ ```
268
+
269
+ ### 启动 Docker
270
+
271
+ ```sh
272
+ docker compose up -d
273
+ ```
274
+
275
+ ### 检查日志
276
+
277
+ ```sh
278
+ docker logs -f lobe-chat
279
+ ```
280
+
281
+ 如果你在容器中看到了以下日志,则说明已经启动成功:
282
+
283
+ ```log
284
+ [Database] Start to migration...
285
+ ✅ database migration pass.
286
+ -------------------------------------
287
+ ▲ Next.js 14.x.x
288
+ - Local: https://localhost:3210
289
+ - Network: http://0.0.0.0:3210
290
+ ✓ Starting...
291
+ ✓ Ready in 95ms
292
+ ```
102
293
 
103
- 如果你遇到问题,请尝试查看 Docker 日志和控制台日志进行排查。
294
+ ### 访问应用
104
295
 
105
- ## 发布到生产(IP 模式)
296
+ 你可以通过 `https://lobe.example.com` 访问你的 LobeChat 服务。应用的账号密码在步骤`3`的报告中。
297
+ </Steps>
106
298
 
107
- 下文假设局域网 / 公网需要运行 LobeChat 服务的机器 IP 为 `your_server_ip`。
299
+ ## 自定义部署
108
300
 
109
- 想要通过局域网 IP 访问,你需要首先按照本地启动运行:
301
+ 该章节主要为你介绍在不同的网络环境下自定义部署 LobeChat 服务必须要修改的配置。
302
+ 在开始前,你可以先下载 [Docker Compose 配置文件](https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/local/docker-compose.yml) 以及 [环境变量配置文件](https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/local/.env.zh-CN.example)。
110
303
 
111
304
  ```sh
112
- bash <(curl -fsSL https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/local/setup.sh) -f -l zh_CN
113
- docker compose up -d
305
+ curl -O https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/local/docker-compose.yml
306
+ curl -O https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/local/.env.zh-CN.example
307
+ mv .env.zh-CN.example .env
308
+ ```
309
+
310
+ <Callout type="info">
311
+ 本章节并不包含所有完整变量,剩余的变量可以查阅 [使用服务端数据库部署](/zh/docs/self-hosting/server-database) 。
312
+ </Callout>
313
+
314
+ ### 预备知识
315
+
316
+ 一般来讲,想要完整的运行 LobeChat 数据库版本,你需要至少拥有如下四个服务
317
+
318
+ - LobeChat 数据库版本自身
319
+ - 带有 PGVector 插件的 PostgreSQL 数据库
320
+ - 支持 S3 协议的对象存储服务
321
+ - 受 LobeChat 支持的 SSO 登录鉴权服务
322
+
323
+ 这些服务可以通过自建或者在线云服务组合搭配,以满足不同层次的部署需求。
324
+ 本文中,我们提供了完全基于开源自建服务的 Docker Compose 配置,你可以直接使用这份配置文件来启动 LobeChat 数据库版本,也可以对之进行修改以适应你的需求。
325
+
326
+ 我们默认使用 [MinIO](https://github.com/minio/minio) 作为本地 S3 对象存储服务,使用 [Casdoor](https://github.com/casdoor/casdoor) 作为本地鉴权服务。
327
+
328
+ <Callout type="warning">
329
+ 如果你的网络拓扑较为复杂,请先确保在你的网络环境中这些服务能够正常通讯。
330
+ </Callout>
331
+
332
+ ### 必要配置
333
+
334
+ 以下我们将介绍运行这些服务的必要配置:
335
+
336
+ 1. Casdoor
337
+
338
+ - LobeChat 需要与 Casdoor 通讯,因此你需要配置 Casdoor 的 Issuer 。
339
+
340
+ ```env
341
+ AUTH_CASDOOR_ISSUER=https://auth-ui.example.com
114
342
  ```
115
343
 
116
- 接着,你需要修改下载下来的 `docker-compose.yml` 文件,执行一次全文替换,将 `localhost` 替换为 `your_server_ip`,随后重新启动:
344
+ 该配置会影响 LobeChat 的登录鉴权服务,你需要确保 Casdoor 服务的地址正确。
345
+ 你可以在 [常见问题](#常见问题) 中找到该配置错误的常见现象及解决方案。
346
+
347
+ - 同时,你也需要在 Casdoor 中允许回调地址为 LobeChat 的地址:
348
+
349
+ 请在 Casdoor 的 Web 面板的 `身份认证 -> 应用` -> `<应用ID,默认为 app-built-in>` -> `重定向URL` 中添加一行:
350
+
351
+ ```
352
+ https://auth-ui.example.com/api/auth/callback/casdoor
353
+ ```
354
+
355
+ - Casdoor 需要在环境变量中提供访问的 Origin 信息:
356
+
357
+ ```env
358
+ origin=https://auth-ui.example.com
359
+ ```
360
+
361
+ 2. MinIO
362
+
363
+ - LobeChat 需要为 LLM 服务提供商提供文件对象的公网访问地址,因此你需要配置 MinIO 的 Endpoint 。
364
+
365
+ ```env
366
+ S3_PUBLIC_DOMAIN=https://s3-api.example.com
367
+ S3_ENDPOINT=https://s3-api.example.com
368
+ ```
369
+
370
+ 3. PostgreSQL
371
+
372
+ 该配置位于 `docker-compose.yml` 文件中,你需要配置数据库的名称和密码:
373
+
374
+ ```yaml
375
+ services:
376
+ lobe:
377
+ environment:
378
+ - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
379
+ ```
380
+
381
+ ## 常见问题
382
+
383
+ #### 无法正常登陆
384
+
385
+ 请根据容器日志检查是否存在以下错误
117
386
 
118
387
  ```sh
119
- sed -i 's/localhost/your_server_ip/g' docker-compose.yml
120
- docker compose up -d
388
+ docker logs -f lobe-chat
389
+ ```
390
+
391
+ - r3: "response" is not a conform Authorization Server Metadata response (unexpected HTTP status code)
392
+
393
+ ```log
394
+ lobe-chat | [auth][error] r3: "response" is not a conform Authorization Server Metadata response (unexpected HTTP status code)
121
395
  ```
122
396
 
123
- ### 配置 Casdoor
397
+ 成因:该问题一般是由于你的反向代理配置不正确导致的,你需要确保你的反向代理配置不会拦截 Casdoor 的 OAuth2 配置请求。
124
398
 
125
- 1. 使用 `setup.sh` 脚本启动后,Casdoor WebUI 默认端口为 `8000`,你可以通过 `http://your_server_ip:8000` 访问,默认用户名 `admin`,密码 `123`
399
+ 解决方案:
126
400
 
127
- 2. `身份认证 -> 应用` 中添加一行
401
+ - 请参考 [域名模式](#域名模式) 章节中的反向代理配置注意事项。
128
402
 
129
- ```
130
- http://your_server_ip:3210/api/auth/callback/casdoor
131
- ```
403
+ - 一个直接的排查方式,你可以直接访问 `https://auth-ui.example.com/.well-known/openid-configuration`,如果
404
+ - 返回了非 JSON 格式的数据,则说明你的反向代理配置错误。
405
+ - 如果返回的 JSON 格式数据中的 `"issuer": "URL"` 字段不是你配置的 `https://auth-ui.example.com`,则说明你的环境变量配置错误。
406
+
407
+ - TypeError: fetch failed
408
+
409
+ ```log
410
+ lobe-chat | [auth][error] TypeError: fetch failed
411
+ ```
132
412
 
133
- 3. 其他配置大多保持默认即可,你也可以在 `身份认证 -> 应用` 中修改默认配置
413
+ 成因:LobeChat 无法访问鉴权服务。
134
414
 
135
- ### 配置 MinIO S3
415
+ 解决方案:
136
416
 
137
- 1. 使用 `setup.sh` 脚本启动后,MinIO WebUI 默认端口为 `9001`,你可以通过 `http://your_server_ip:9001` 访问,默认用户名 `YOUR_MINIO_USER`,密码 `YOUR_MINIO_PASSWORD`
417
+ - 请检查你的鉴权服务是否正常运行,以及 LobeChat 所在的网络是否能够访问到鉴权服务。
138
418
 
139
- 2. 大多数配置保持默认即可,如果你希望能允许用户更换头像功能,你需要首先在 `buckets` 中创建一个名为 `casdoor` 的桶,选择自定义策略,复制并粘贴如下内容(如果你修改了桶名,请自行查找替换)
419
+ - 一个直接的排查方式,你可以在 LobeChat 容器的终端中,使用 `curl` 命令访问你的鉴权服务 `https://auth-ui.example.com/.well-known/openid-configuration`,如果返回了 JSON 格式的数据,则说明你的鉴权服务正常运行。
420
+
421
+ ## 拓展配置
422
+
423
+ 为了完善你的 LobeChat 服务,你可以根据你的需求进行以下拓展配置。
424
+
425
+ ### 使用 MinIO 存储 Casdoor 头像
426
+
427
+ 允许用户在 Casdoor 中更换头像
428
+
429
+ 1. 你需要首先在 `buckets` 中创建一个名为 `casdoor` 的桶,选择自定义策略,复制并粘贴如下内容(如果你修改了桶名,请自行查找替换)
140
430
 
141
431
  ```json
142
432
  {
@@ -175,26 +465,26 @@ docker compose up -d
175
465
  }
176
466
  ```
177
467
 
178
- 3. 创建一个新的访问密钥,将生成的 `Access Key` 和 `Secret Key` 存储之
468
+ 2. 创建一个新的访问密钥,将生成的 `Access Key` 和 `Secret Key` 存储之
179
469
 
180
- 4. 在 Casdoor 的 `身份认证 -> 提供商` 中关联 MinIO S3 服务,以下是一个示例配置:
470
+ 3. 在 Casdoor 的 `身份认证 -> 提供商` 中关联 MinIO S3 服务,以下是一个示例配置:
181
471
 
182
472
  ![casdoor](https://github.com/user-attachments/assets/71035610-0706-434e-9488-ab5819b55330)
183
473
 
184
474
  其中,客户端 ID、客户端密钥为上一步创建的访问密钥中的 `Access Key` 和 `Secret Key`,`192.168.31.251` 应当被替换为 `your_server_ip`。
185
475
 
186
- 5. 在 Casdoor 的 `身份认证 -> 应用` 中,对 `app-built-in` 应用添加提供商,选择 `minio`,保存并退出
476
+ 4. 在 Casdoor 的 `身份认证 -> 应用` 中,对 `app-built-in` 应用添加提供商,选择 `minio`,保存并退出
187
477
 
188
- 6. 你可以在 Casdoor 的 `身份认证 -> 资源` 中,尝试上传文件以测试配置是否正确
478
+ 5. 你可以在 Casdoor 的 `身份认证 -> 资源` 中,尝试上传文件以测试配置是否正确
189
479
 
190
- ## 发布到生产(域名模式)
480
+ ### 生产部署下从 `logto` 迁移至 `Casdoor`
191
481
 
192
- ### 基于 `Casdoor` 鉴权方法的生产部署
482
+ 适用于已经在生产环境下使用 `logto` 作为登录鉴权服务的用户
193
483
 
194
484
  <Callout type="info">
195
485
  由于使用[Logto](https://logto.io/)
196
486
  作为登录鉴权服务存在比较大的不稳定性。
197
- 因此,下文基于发布到IP模式的教程,实现了使用 Casdoor 作为鉴权服务提供商的域名发布方案。
487
+ 因此,下文基于发布到 IP 模式的教程,实现了使用 Casdoor 作为鉴权服务提供商的域名发布方案。
198
488
  本文剩余部分也将以其为例进行说明。如果你使用其他诸如 Logto
199
489
  等其他登录鉴权服务,流程应当相近,但请注意不同的登录鉴权服务的端口配置可能有所差异。
200
490
  </Callout>
@@ -209,56 +499,62 @@ docker compose up -d
209
499
  - `s3-ui.example.com`:可选,为你的 MinIO UI 域名,需要反向代理到 MinIO WebUI 服务端口,默认为 `9001`
210
500
 
211
501
  #### 配置文件
502
+
212
503
  ```sh
213
504
  bash <(curl -fsSL https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/local/setup.sh) -f -l zh_CN
214
505
  docker compose up -d
215
506
  ```
507
+
216
508
  注意保存此时生成的新密码!
217
509
 
218
510
  运行后会获得三个文件
219
- - init_data.json
511
+
512
+ - init\_data.json
220
513
  - docker-compose.yml
221
514
  - .env
222
515
 
223
516
  接下来,修改配置文件以实现域名发布
224
- 1. 修改 `docker-compose.yml` 文件
225
- 1. 修改 `minio`的`MINIO_API_CORS_ALLOW_ORIGIN`字段。
226
- ```yaml
227
- 'MINIO_API_CORS_ALLOW_ORIGIN=https://lobe.example.com'
228
- ```
229
- 2. 修改`casdoor`的`origin`字段。
230
- ```yaml
231
- origin: 'https://auth-ui.example.com'
232
- ```
233
- 3. 修改`lobe`的`environment`字段。
234
- ```yaml
235
- # - 'APP_URL=http://localhost:3210'
236
- - 'APP_URL=https://lobe.example.com'
237
-
238
- - 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
239
- - 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ='
240
- - 'NEXT_AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg'
241
- # - 'AUTH_URL=http://localhost:${LOBE_PORT}/api/auth'
242
- - 'AUTH_URL=https://lobe.example.com/api/auth'
243
-
244
- # - 'AUTH_CASDOOR_ISSUER=http://localhost:${CASDOOR_PORT}'
245
- - 'AUTH_CASDOOR_ISSUER=https://auth-ui.example.com'
246
517
 
247
- - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
248
- # - 'S3_ENDPOINT=http://localhost:${MINIO_PORT}'
249
- - 'S3_ENDPOINT=https://s3-api.example.com'
250
-
251
- - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
252
- # - 'S3_PUBLIC_DOMAIN=http://localhost:${MINIO_PORT}'
253
- - 'S3_PUBLIC_DOMAIN=https://s3-api.example.com'
254
-
255
- - 'S3_ENABLE_PATH_STYLE=1'
256
- - 'LLM_VISION_IMAGE_USE_BASE64=1'
257
- ```
518
+ 1. 修改 `docker-compose.yml` 文件
519
+ 1. 修改 `minio`的`MINIO_API_CORS_ALLOW_ORIGIN`字段。
520
+ ```yaml
521
+ 'MINIO_API_CORS_ALLOW_ORIGIN=https://lobe.example.com'
522
+ ```
523
+ 2. 修改`casdoor`的`origin`字段。
524
+ ```yaml
525
+ origin: 'https://auth-ui.example.com'
526
+ ```
527
+ 3. 修改`lobe`的`environment`字段。
528
+ ```yaml
529
+ # - 'APP_URL=http://localhost:3210'
530
+ - 'APP_URL=https://lobe.example.com'
531
+
532
+ - 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
533
+ - 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ='
534
+ - 'NEXT_AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg'
535
+ # - 'AUTH_URL=http://localhost:${LOBE_PORT}/api/auth'
536
+ - 'AUTH_URL=https://lobe.example.com/api/auth'
537
+
538
+ # - 'AUTH_CASDOOR_ISSUER=http://localhost:${CASDOOR_PORT}'
539
+ - 'AUTH_CASDOOR_ISSUER=https://auth-ui.example.com'
540
+
541
+ - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
542
+ # - 'S3_ENDPOINT=http://localhost:${MINIO_PORT}'
543
+ - 'S3_ENDPOINT=https://s3-api.example.com'
544
+
545
+ - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
546
+ # - 'S3_PUBLIC_DOMAIN=http://localhost:${MINIO_PORT}'
547
+ - 'S3_PUBLIC_DOMAIN=https://s3-api.example.com'
548
+
549
+ - 'S3_ENABLE_PATH_STYLE=1'
550
+ - 'LLM_VISION_IMAGE_USE_BASE64=1'
551
+ ```
258
552
  2. 修改 `.env` 文件
553
+
259
554
  <Callout type="info">
260
- 为了安全起见,修改 `.env` 文件中的ROOT USER的字段
555
+ 为了安全起见,修改 `.env` 文件中的 ROOT USER 的字段
261
556
  </Callout>
557
+
262
558
  ```sh
263
559
  # MinIO S3 configuration
264
560
  MINIO_ROOT_USER=XXXX
@@ -288,8 +584,7 @@ sudo rm -rf ./data # 移除挂载的数据库数据
288
584
  docker compose up -d # 重新启动
289
585
  ```
290
586
 
291
-
292
- #### 登录鉴权服务配置
587
+ #### 登录鉴权服务配置
293
588
 
294
589
  你需要首先访问 WebUI 来进行配置:
295
590
 
@@ -302,15 +597,17 @@ docker compose up -d # 重新启动
302
597
  - 默认密码为 下载配置文件时生成的随机密码。如忘记可到 `init_data.json` 文件中找回
303
598
 
304
599
  登入后执行如下操作
600
+
305
601
  1. 在 `用户管理 -> 组织` 中,添加一个新的组织。名称与显示名称为 `Lobe Users`。其余保持默认即可。
306
602
  2. 在 `身份认证 -> 应用` 中,添加一个新的应用。
307
- - 名称与显示名称为 `LobeChat`。
308
- - 组织为 `Lobe Users`。
309
- - 重定向 URLS中添加一行 为 `https://lobe.example.com/api/auth/callback/casdoor`。
310
- - 关闭除密码外的登录方式
311
- - 将客户端ID和客户端密钥分别填入 `.env`中的 `AUTH_CASDOOR_ID` 和 `AUTH_CASDOOR_SECRET` 中。
312
- - (可选) 仿照`built-in`应用的配置,来设计登录和注册的页面外观。
313
- - 保存并退出。
603
+
604
+ - 名称与显示名称为 `LobeChat`。
605
+ - 组织为 `Lobe Users`。
606
+ - 重定向 URLS 中添加一行 为 `https://lobe.example.com/api/auth/callback/casdoor`。
607
+ - 关闭除密码外的登录方式
608
+ - 将客户端 ID 和客户端密钥分别填入 `.env`中的 `AUTH_CASDOOR_ID` 和 `AUTH_CASDOOR_SECRET` 中。
609
+ - (可选) 仿照`built-in`应用的配置,来设计登录和注册的页面外观。
610
+ - 保存并退出。
314
611
 
315
612
  <Callout type="info">
316
613
  通过上述步骤,可以避免默认情况下所有用户均为管理员导致的不安全的情况。
@@ -318,7 +615,6 @@ docker compose up -d # 重新启动
318
615
 
319
616
  #### S3 对象存储服务配置
320
617
 
321
-
322
618
  本文以 MinIO 为例,解释配置过程,如果你使用的是其他 S3 服务商,请参照其文档进行配置。
323
619
 
324
620
  <Callout type="warning">
@@ -348,13 +644,11 @@ docker compose up -d # 重新启动
348
644
 
349
645
  至此,你已经成功部署了 LobeChat 数据库版本,你可以通过 `https://lobe.example.com` 访问你的 LobeChat 服务。
350
646
 
647
+ #### 配置文件
351
648
 
649
+ 为方便一键复制,在此汇总基于 casdoor 鉴权方案的域名方式下生产部署配置服务端数据库所需要的示例配置文件。
352
650
 
353
- ## 附录
354
-
355
- 为方便一键复制,在此汇总基于casdoor鉴权方案的域名方式下生产部署配置服务端数据库所需要的示例配置文件。
356
-
357
- ### `.env`
651
+ - `.env`
358
652
 
359
653
  ```sh
360
654
  # Proxy, if you need it
@@ -369,7 +663,7 @@ docker compose up -d # 重新启动
369
663
 
370
664
 
371
665
  # ===========================
372
- # ====== Preset config ======
666
+ # ====== Preset config ======
373
667
  # ===========================
374
668
  # if no special requirements, no need to change
375
669
  LOBE_PORT=3210
@@ -395,7 +689,7 @@ S3_SECRET_ACCESS_KEY=aPBW8CVULkh8bw1GatlT0GjLihcXHLNwRml4pieS
395
689
 
396
690
  ```
397
691
 
398
- ### `docker-compose.yml`
692
+ - `docker-compose.yml`
399
693
 
400
694
  ```yaml
401
695
  name: lobe-chat-database
@@ -515,11 +809,8 @@ volumes:
515
809
  networks:
516
810
  lobe-network:
517
811
  driver: bridge
518
-
519
-
520
812
  ```
521
813
 
522
-
523
814
  [docker-pulls-link]: https://hub.docker.com/r/lobehub/lobe-chat-database
524
815
  [docker-pulls-shield]: https://img.shields.io/docker/pulls/lobehub/lobe-chat-database?color=45cc11&labelColor=black&style=flat-square
525
816
  [docker-release-link]: https://hub.docker.com/r/lobehub/lobe-chat-database