@lobehub/lobehub 2.0.13 → 2.1.1

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.
Files changed (27) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/changelog/v2.json +18 -0
  3. package/docker-compose/deploy/.env.example +35 -0
  4. package/docker-compose/deploy/.env.zh-CN.example +31 -0
  5. package/docker-compose/deploy/bucket.config.json +18 -0
  6. package/docker-compose/deploy/docker-compose.yml +148 -0
  7. package/docker-compose/deploy/searxng-settings.yml +2582 -0
  8. package/docker-compose/setup.sh +37 -88
  9. package/docs/self-hosting/advanced/auth/providers/casdoor.mdx +110 -0
  10. package/docs/self-hosting/advanced/auth/providers/casdoor.zh-CN.mdx +165 -0
  11. package/docs/self-hosting/platform/docker-compose.mdx +43 -561
  12. package/docs/self-hosting/platform/docker-compose.zh-CN.mdx +40 -537
  13. package/locales/en-US/setting.json +16 -0
  14. package/locales/zh-CN/setting.json +16 -0
  15. package/package.json +1 -1
  16. package/packages/const/src/url.ts +1 -1
  17. package/src/app/[variants]/(main)/agent/_layout/Sidebar/Cron/index.tsx +4 -2
  18. package/src/app/[variants]/(main)/agent/cron/[cronId]/features/CronJobContentEditor.tsx +39 -44
  19. package/src/app/[variants]/(main)/agent/cron/[cronId]/features/CronJobHeader.tsx +27 -20
  20. package/src/app/[variants]/(main)/agent/cron/[cronId]/features/CronJobSaveButton.tsx +4 -2
  21. package/src/app/[variants]/(main)/agent/cron/[cronId]/features/CronJobScheduleConfig.tsx +183 -145
  22. package/src/app/[variants]/(main)/agent/profile/features/AgentCronJobs/hooks/useAgentCronJobs.ts +3 -4
  23. package/src/app/[variants]/(main)/agent/profile/features/AgentCronJobs/index.tsx +4 -3
  24. package/src/app/[variants]/(main)/agent/profile/features/ProfileEditor/index.tsx +4 -3
  25. package/src/features/Conversation/Messages/AssistantGroup/components/MessageContent.tsx +6 -1
  26. package/src/locales/default/setting.ts +16 -0
  27. package/src/store/agent/slices/cron/action.ts +6 -4
@@ -29,13 +29,13 @@ tags:
29
29
 
30
30
  - 一键启动脚本为首次部署专用,非首次部署请参考 [自定义部署](#自定义部署) 章节
31
31
 
32
- - 端口占用检查:确保 `3210`、`8000`、`9000`、`9001` 端口可用
32
+ - 端口占用检查:确保 `3210`、`9000`、`9001` 端口可用
33
33
  </Callout>
34
34
 
35
- 执行以下命令初始化部署环境,目录 `lobe-chat-db` 将用于存放你的配置文件和后续的数据库文件。
35
+ 执行以下命令初始化部署环境,目录 `lobehub` 将用于存放你的配置文件和后续的数据库文件。
36
36
 
37
37
  ```sh
38
- mkdir lobe-chat-db && cd lobe-chat-db
38
+ mkdir lobehub && cd lobehub
39
39
  ```
40
40
 
41
41
  获取并执行部署脚本:
@@ -64,21 +64,13 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
64
64
 
65
65
  ### 查看配置生成报告
66
66
 
67
- 你需要在脚本运行结束后查看配置生成报告,包括 Casdoor 管理员的帐号、用户账号和它们的初始登录密码。
68
-
69
- <Callout type="warning">请使用用户账号登录 LobeHub,管理员账号仅用于管理 Casdoor。</Callout>
67
+ 你需要在脚本运行结束后查看配置生成报告,包括各服务的访问地址和密码。
70
68
 
71
69
  ```log
72
70
  安全密钥生成结果如下:
73
71
  LobeHub:
74
72
  - URL: http://localhost:3210
75
- - Username: user
76
- - Password: c66f8c
77
- Casdoor:
78
- - URL: http://localhost:8000
79
- - Username: admin
80
- - Password: c66f8c
81
- Minio:
73
+ RustFS:
82
74
  - URL: http://localhost:9000
83
75
  - Username: admin
84
76
  - Password: 8c82ea41
@@ -93,7 +85,7 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
93
85
  ### 检查日志
94
86
 
95
87
  ```sh
96
- docker logs -f lobe-chat
88
+ docker logs -f lobehub
97
89
  ```
98
90
 
99
91
  如果你在容器中看到了以下日志,则说明已经启动成功:
@@ -102,7 +94,7 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
102
94
  [Database] Start to migration...
103
95
  ✅ database migration pass.
104
96
  -------------------------------------
105
- ▲ Next.js 14.x.x
97
+ ▲ Next.js 16.x.x
106
98
  - Local: http://localhost:3210
107
99
  - Network: http://0.0.0.0:3210
108
100
 
@@ -112,7 +104,7 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
112
104
 
113
105
  ### 访问应用
114
106
 
115
- 通过 [http://localhost:3210](http://localhost:3210) 访问你的 LobeHub 服务。应用的账号密码在步骤`2`的报告中。
107
+ 通过 [http://localhost:3210](http://localhost:3210) 访问你的 LobeHub 服务。
116
108
  </Steps>
117
109
 
118
110
  ### 端口模式
@@ -127,21 +119,13 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
127
119
 
128
120
  ### 查看配置生成报告
129
121
 
130
- 你需要在脚本运行结束后查看配置生成报告,包括 Casdoor 管理员的帐号、用户账号和它们的初始登录密码。
131
-
132
- <Callout type="warning">请使用用户账号登录 LobeHub,管理员账号仅用于管理 Casdoor。</Callout>
122
+ 你需要在脚本运行结束后查看配置生成报告,包括各服务的访问地址和密码。
133
123
 
134
124
  ```log
135
125
  安全密钥生成结果如下:
136
126
  LobeHub:
137
127
  - URL: http://your_server_ip:3210
138
- - Username: user
139
- - Password: 837e26
140
- Casdoor:
141
- - URL: http://your_server_ip:8000
142
- - Username: admin
143
- - Password: 837e26
144
- Minio:
128
+ RustFS:
145
129
  - URL: http://your_server_ip:9000
146
130
  - Username: admin
147
131
  - Password: dbac8440
@@ -156,7 +140,7 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
156
140
  ### 检查日志
157
141
 
158
142
  ```sh
159
- docker logs -f lobe-chat
143
+ docker logs -f lobehub
160
144
  ```
161
145
 
162
146
  如果你在容器中看到了以下日志,则说明已经启动成功:
@@ -165,7 +149,7 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
165
149
  [Database] Start to migration...
166
150
  ✅ database migration pass.
167
151
  -------------------------------------
168
- ▲ Next.js 14.x.x
152
+ ▲ Next.js 16.x.x
169
153
  - Local: http://your_server_ip:3210
170
154
  - Network: http://0.0.0.0:3210
171
155
  ✓ Starting...
@@ -174,11 +158,7 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
174
158
 
175
159
  ### 访问应用
176
160
 
177
- 你可以通过 `http://your_server_ip:3210` 访问你的 LobeHub 服务。应用的账号密码在步骤`2`的报告中。
178
-
179
- <Callout type="warning">
180
- 请注意,如果你的服务能够被公网访问,我们强烈建议你参考 [文档](https://lobehub.com/zh/docs/self-hosting/advanced/auth/providers/casdoor) 关闭注册功能。
181
- </Callout>
161
+ 你可以通过 `http://your_server_ip:3210` 访问你的 LobeHub 服务。
182
162
  </Steps>
183
163
 
184
164
  ### 域名模式
@@ -188,39 +168,18 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
188
168
 
189
169
  在域名模式中,你需要完成反向代理配置,并确保局域网 / 公网能访问到以下服务。请使用反向代理将以下服务端口映射到域名:
190
170
 
191
- | 域名 | 反代端口 | 是否必选 |
192
- | ---------------------- | ------ | ---- |
193
- | `lobe.example.com` | `3210` | 必选 |
194
- | `auth.example.com` | `8000` | 必选 |
195
- | `minio.example.com` | `9000` | 必选 |
196
- | `minio-ui.example.com` | `9001` | |
197
-
198
- <Callout type="important">
199
- 如果你使用如 [宝塔面板](https://www.bt.cn/) 等面板软件进行反向代理配置,
200
- 你需要确保其对 `.well-known` 路径的请求不进行拦截,以确保 Casdoor 的 OAuth2 配置能够正常工作。
201
- 这里提供一份针对 Casdoor 服务的 Nginx server 块的路径白名单配置:
202
-
203
- ```nginx
204
- location /.well-known/openid-configuration {
205
- proxy_pass http://localhost:8000; # 转发到 localhost:8000
206
- proxy_set_header Host $host; # 保留原始主机头
207
- proxy_set_header X-Real-IP $remote_addr; # 保留客户端真实IP
208
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 保留转发的IP
209
- proxy_set_header X-Forwarded-Proto $scheme; # 保留请求协议
210
- }
211
- ```
212
-
213
- ⚠️ 请不要在此类面板软件的反向代理设置中开启任何形式的缓存,以免影响服务的正常运行。
214
- 详情请见 [https://github.com/lobehub/lobe-chat/discussions/5986](https://github.com/lobehub/lobe-chat/discussions/5986)
215
- </Callout>
171
+ | 域名 | 反代端口 | 是否必选 |
172
+ | ------------------- | ------ | ---- |
173
+ | `lobe.example.com` | `3210` | 必选 |
174
+ | `s3.example.com` | `9000` | 必选 |
175
+ | `s3-ui.example.com` | `9001` | |
216
176
 
217
177
  ### 在交互式脚本中完成剩余配置
218
178
 
219
179
  在域名模式中,你需要根据脚本提示完成:
220
180
 
221
181
  - LobeHub 服务的域名设置:`lobe.example.com`
222
- - Minio 服务的域名设置:`minio.example.com`
223
- - Casdoor 服务的域名设置:`auth.example.com`
182
+ - S3 服务的域名设置:`s3.example.com`
224
183
  - 选择访问协议:`http` 或 `https`
225
184
  - 安全密钥重新生成:我们强烈建议你重新生成安全密钥,如果你缺少脚本所需的密钥生成库,我们建议你参考 [自定义部署](#自定义部署) 章节对密钥进行修改。
226
185
 
@@ -236,22 +195,14 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
236
195
 
237
196
  ### 查看配置生成报告
238
197
 
239
- 你需要在脚本运行结束后查看配置生成报告,包括 Casdoor 管理员的初始登录密码。
240
-
241
- <Callout type="warning">请使用用户账号登录 LobeHub,管理员账号仅用于管理 Casdoor。</Callout>
198
+ 你需要在脚本运行结束后查看配置生成报告,包括各服务的访问地址和密码。
242
199
 
243
200
  ```log
244
201
  安全密钥生成结果如下:
245
202
  LobeHub:
246
203
  - URL: https://lobe.example.com
247
- - Username: user
248
- - Password: 837e26
249
- Casdoor:
250
- - URL: https://auth.example.com
251
- - Username: admin
252
- - Password: 837e26
253
- Minio:
254
- - URL: https://minio.example.com
204
+ RustFS:
205
+ - URL: https://s3.example.com
255
206
  - Username: admin
256
207
  - Password: dbac8440
257
208
  ```
@@ -265,7 +216,7 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
265
216
  ### 检查日志
266
217
 
267
218
  ```sh
268
- docker logs -f lobe-chat
219
+ docker logs -f lobehub
269
220
  ```
270
221
 
271
222
  如果你在容器中看到了以下日志,则说明已经启动成功:
@@ -274,7 +225,7 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
274
225
  [Database] Start to migration...
275
226
  ✅ database migration pass.
276
227
  -------------------------------------
277
- ▲ Next.js 14.x.x
228
+ ▲ Next.js 16.x.x
278
229
  - Local: https://localhost:3210
279
230
  - Network: http://0.0.0.0:3210
280
231
  ✓ Starting...
@@ -283,20 +234,16 @@ bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
283
234
 
284
235
  ### 访问应用
285
236
 
286
- 你可以通过 `https://lobe.example.com` 访问你的 LobeHub 服务。应用的账号密码在步骤`3`的报告中。
287
-
288
- <Callout type="warning">
289
- 请注意,如果你的服务能够被公网访问,我们强烈建议你参考 [文档](https://lobehub.com/zh/docs/self-hosting/advanced/auth/providers/casdoor) 关闭注册功能。
290
- </Callout>
237
+ 你可以通过 `https://lobe.example.com` 访问你的 LobeHub 服务。
291
238
  </Steps>
292
239
 
293
240
  ## 自定义部署
294
241
 
295
- 该章节主要为你介绍在不同的网络环境下自定义部署 LobeHub 服务必须要修改的配置。在开始前,你可以先下载 [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)。
242
+ 该章节主要为你介绍在不同的网络环境下自定义部署 LobeHub 服务必须要修改的配置。在开始前,你可以先下载 [Docker Compose 配置文件](https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/deploy/docker-compose.yml) 以及 [环境变量配置文件](https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/deploy/.env.zh-CN.example)。
296
243
 
297
244
  ```sh
298
- curl -O https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/local/docker-compose.yml
299
- curl -O https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/local/.env.zh-CN.example
245
+ curl -O https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/deploy/docker-compose.yml
246
+ curl -O https://raw.githubusercontent.com/lobehub/lobe-chat/HEAD/docker-compose/deploy/.env.zh-CN.example
300
247
  mv .env.zh-CN.example .env
301
248
  ```
302
249
 
@@ -307,16 +254,15 @@ mv .env.zh-CN.example .env
307
254
 
308
255
  ### 预备知识
309
256
 
310
- 一般来讲,想要完整的运行 LobeHub 数据库版本,你需要至少拥有如下四个服务
257
+ 一般来讲,想要完整的运行 LobeHub 数据库版本,你需要至少拥有如下三个服务:
311
258
 
312
259
  - LobeHub 数据库版本自身
313
260
  - 带有 PGVector 插件的 PostgreSQL 数据库
314
261
  - 支持 S3 协议的对象存储服务
315
- - 受 LobeHub 支持的 SSO 登录鉴权服务
316
262
 
317
263
  这些服务可以通过自建或者在线云服务组合搭配,以满足不同层次的部署需求。本文中,我们提供了完全基于开源自建服务的 Docker Compose 配置,你可以直接使用这份配置文件来启动 LobeHub 数据库版本,也可以对之进行修改以适应你的需求。
318
264
 
319
- 我们默认使用 [MinIO](https://github.com/minio/minio) 作为本地 S3 对象存储服务,使用 [Casdoor](https://github.com/casdoor/casdoor) 作为本地鉴权服务。
265
+ 我们默认使用 [RustFS](https://github.com/rustfs/rustfs) 作为本地 S3 对象存储服务。如需配置 SSO 登录鉴权服务,请参考 [身份验证服务](/zh/docs/self-hosting/advanced/auth) 文档。
320
266
 
321
267
  <Callout type="warning">
322
268
  如果你的网络拓扑较为复杂,请先确保在你的网络环境中这些服务能够正常通讯。
@@ -326,40 +272,16 @@ mv .env.zh-CN.example .env
326
272
 
327
273
  以下我们将介绍运行这些服务的必要配置:
328
274
 
329
- 1. Casdoor
275
+ 1. S3 对象存储
330
276
 
331
- - LobeHub 需要与 Casdoor 通讯,因此你需要配置 CasdoorIssuer 。
277
+ LobeHub 需要为 LLM 服务提供商提供文件对象的公网访问地址,因此你需要配置 S3Endpoint:
332
278
 
333
279
  ```env
334
- AUTH_CASDOOR_ISSUER=https://auth.example.com
280
+ S3_PUBLIC_DOMAIN=https://s3.example.com
281
+ S3_ENDPOINT=https://s3.example.com
335
282
  ```
336
283
 
337
- 该配置会影响 LobeHub 的登录鉴权服务,你需要确保 Casdoor 服务的地址正确。你可以在 [常见问题](#常见问题) 中找到该配置错误的常见现象及解决方案。
338
-
339
- - 同时,你也需要在 Casdoor 中允许回调地址为 LobeHub 的地址:
340
-
341
- 请在 Casdoor 的 Web 面板的 `身份认证 -> 应用` -> `<应用ID,默认为 app-built-in>` -> `重定向URL` 中添加一行:
342
-
343
- ```
344
- https://auth.example.com/api/auth/callback/casdoor
345
- ```
346
-
347
- - Casdoor 需要在环境变量中提供访问的 Origin 信息:
348
-
349
- ```env
350
- origin=https://auth.example.com
351
- ```
352
-
353
- 2. MinIO
354
-
355
- - LobeHub 需要为 LLM 服务提供商提供文件对象的公网访问地址,因此你需要配置 MinIO 的 Endpoint 。
356
-
357
- ```env
358
- S3_PUBLIC_DOMAIN=https://minio.example.com
359
- S3_ENDPOINT=https://minio.example.com
360
- ```
361
-
362
- 3. PostgreSQL
284
+ 2. PostgreSQL
363
285
 
364
286
  该配置位于 `docker-compose.yml` 文件中,你需要配置数据库的名称和密码:
365
287
 
@@ -372,216 +294,16 @@ services:
372
294
 
373
295
  ## 常见问题
374
296
 
375
- #### 无法正常登陆
376
-
377
- 请根据容器日志检查是否存在以下错误
378
-
379
- ```sh
380
- docker logs -f lobe-chat
381
- ```
382
-
383
- - r3: "response" is not a conform Authorization Server Metadata response (unexpected HTTP status code)
384
-
385
- ```log
386
- lobe-chat | [auth][error] r3: "response" is not a conform Authorization Server Metadata response (unexpected HTTP status code)
387
- ```
388
-
389
- 成因:该问题一般是由于你的反向代理配置不正确导致的,你需要确保你的反向代理配置不会拦截 Casdoor 的 OAuth2 配置请求。
390
-
391
- 解决方案:
392
-
393
- - 请参考 [域名模式](#域名模式) 章节中的反向代理配置注意事项。
394
-
395
- - 一个直接的排查方式,你可以直接访问 `https://auth.example.com/.well-known/openid-configuration`,如果
396
-
397
- - 返回了非 JSON 格式的数据,则说明你的反向代理配置错误。
398
- - 如果返回的 JSON 格式数据中的 `"issuer": "URL"` 字段不是你配置的 `https://auth.example.com`,则说明你的环境变量配置错误。
399
-
400
- - TypeError: fetch failed
401
-
402
- ```log
403
- lobe-chat | [auth][error] TypeError: fetch failed
404
- ```
405
-
406
- 成因:LobeHub 无法访问鉴权服务。
407
-
408
- 解决方案:
409
-
410
- - 请检查你的鉴权服务是否正常运行,以及 LobeHub 所在的网络是否能够访问到鉴权服务。
411
-
412
- - 一个直接的排查方式,你可以在 LobeHub 容器的终端中,使用 `curl` 命令访问你的鉴权服务 `https://auth.example.com/.well-known/openid-configuration`,如果返回了 JSON 格式的数据,则说明你的鉴权服务正常运行。
413
-
414
- #### 反向代理下 OAuth 令牌交换失败
415
-
416
- 如果在反向代理后使用 Docker 时 OAuth 认证在令牌交换阶段失败,这通常是由默认的 `MIDDLEWARE_REWRITE_THROUGH_LOCAL=1` 设置引起的,该设置会将 URL 重写为 `127.0.0.1:3210`。
417
-
418
- **解决方案**: 在 `.env` 文件中设置 `MIDDLEWARE_REWRITE_THROUGH_LOCAL=0` 并重启 Docker 容器:
419
-
420
- ```bash
421
- docker compose down
422
- docker compose up -d
423
- ```
424
-
425
- ## 拓展配置
426
-
427
- 为了完善你的 LobeHub 服务,你可以根据你的需求进行以下拓展配置。
428
-
429
- ### 使用 MinIO 存储 Casdoor 头像
430
-
431
- 允许用户在 Casdoor 中更换头像
432
-
433
- 1. 你需要首先在 `buckets` 中创建一个名为 `casdoor` 的桶,选择自定义策略,复制并粘贴如下内容(如果你修改了桶名,请自行查找替换)
434
-
435
- ```json
436
- {
437
- "Statement": [
438
- {
439
- "Effect": "Allow",
440
- "Principal": {
441
- "AWS": ["*"]
442
- },
443
- "Action": ["s3:GetBucketLocation"],
444
- "Resource": ["arn:aws:s3:::casdoor"]
445
- },
446
- {
447
- "Effect": "Allow",
448
- "Principal": {
449
- "AWS": ["*"]
450
- },
451
- "Action": ["s3:ListBucket"],
452
- "Resource": ["arn:aws:s3:::casdoor"],
453
- "Condition": {
454
- "StringEquals": {
455
- "s3:prefix": ["files/*"]
456
- }
457
- }
458
- },
459
- {
460
- "Effect": "Allow",
461
- "Principal": {
462
- "AWS": ["*"]
463
- },
464
- "Action": ["s3:PutObject", "s3:DeleteObject", "s3:GetObject"],
465
- "Resource": ["arn:aws:s3:::casdoor/**"]
466
- }
467
- ],
468
- "Version": "2012-10-17"
469
- }
470
- ```
471
-
472
- 2. 创建一个新的访问密钥,将生成的 `Access Key` 和 `Secret Key` 存储之
473
-
474
- 3. 在 Casdoor 的 `身份认证 -> 提供商` 中关联 MinIO S3 服务,以下是一个示例配置:
475
-
476
- ![casdoor](/blog/assets18bb134dbc5792d6a624199cca8bf7d3.webp)
477
-
478
- 其中,客户端 ID、客户端密钥为上一步创建的访问密钥中的 `Access Key` 和 `Secret Key`,`192.168.31.251` 应当被替换为 `your_server_ip`。
479
-
480
- 4. 在 Casdoor 的 `身份认证 -> 应用` 中,对 `app-built-in` 应用添加提供商,选择 `minio`,保存并退出
481
-
482
- 5. 你可以在 Casdoor 的 `身份认证 -> 资源` 中,尝试上传文件以测试配置是否正确
483
-
484
- ### 生产部署下从 `logto` 迁移至 `Casdoor`
485
-
486
- 适用于已经在生产环境下使用 `logto` 作为登录鉴权服务的用户
487
-
488
- <Callout type="info">
489
- 由于使用[Logto](https://logto.io/) 作为登录鉴权服务存在比较大的不稳定性。 因此,下文基于发布到 IP
490
- 模式的教程,实现了使用 Casdoor 作为鉴权服务提供商的域名发布方案。
491
- 本文剩余部分也将以其为例进行说明。如果你使用其他诸如 Logto
492
- 等其他登录鉴权服务,流程应当相近,但请注意不同的登录鉴权服务的端口配置可能有所差异。
493
- </Callout>
494
-
495
- 在下文中,我们假设在上述服务之外,你还运行了一层 **Nginx** 来进行反向代理、配置 SSL。
496
-
497
- 域名和配套服务端口说明如下:
498
-
499
- - `lobe.example.com`:为你的 LobeHub 服务端域名,需要反向代理到 LobeHub 服务端口,默认为 `3210`
500
- - `auth.example.com`:为你的 Logto UI 域名,需要反向代理到 Logto WebUI 服务端口,默认为 `8000`
501
- - `minio.example.com`:为你的 MinIO API 域名,需要反向代理到 MinIO API 服务端口,默认为 `9000`
502
- - `minio-ui.example.com`:可选,为你的 MinIO UI 域名,需要反向代理到 MinIO WebUI 服务端口,默认为 `9001`
503
-
504
- #### 配置文件
505
-
506
- ```sh
507
- bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN
508
- docker compose up -d
509
- ```
510
-
511
- 注意保存此时生成的新密码!
512
-
513
- 运行后会获得三个文件
514
-
515
- - init\_data.json
516
- - docker-compose.yml
517
- - .env
518
-
519
- 接下来,修改配置文件以实现域名发布
520
-
521
- 1. 修改 `docker-compose.yml` 文件
522
-
523
- 1. 修改 `minio`的`MINIO_API_CORS_ALLOW_ORIGIN`字段。
524
-
525
- ```yaml
526
- 'MINIO_API_CORS_ALLOW_ORIGIN=https://lobe.example.com'
527
- ```
528
-
529
- 2. 修改`casdoor`的`origin`字段。
530
-
531
- ```yaml
532
- origin: 'https://auth.example.com'
533
- ```
534
-
535
- 3. 修改`lobe`的`environment`字段。
536
-
537
- ```yaml
538
- # - 'APP_URL=http://localhost:3210'
539
- - 'APP_URL=https://lobe.example.com'
540
-
541
- - 'AUTH_SSO_PROVIDERS=casdoor'
542
- - 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ='
543
- - 'AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg'
544
- # - 'AUTH_URL=http://localhost:${LOBE_PORT}/api/auth'
545
- - 'AUTH_URL=https://lobe.example.com/api/auth'
546
-
547
- # - 'AUTH_CASDOOR_ISSUER=http://localhost:${CASDOOR_PORT}'
548
- - 'AUTH_CASDOOR_ISSUER=https://auth.example.com'
549
-
550
- - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
551
- # - 'S3_ENDPOINT=http://localhost:${MINIO_PORT}'
552
- - 'S3_ENDPOINT=https://minio.example.com'
553
-
554
- - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
555
- # - 'S3_PUBLIC_DOMAIN=http://localhost:${MINIO_PORT}'
556
- - 'S3_PUBLIC_DOMAIN=https://minio.example.com'
557
-
558
- - 'S3_ENABLE_PATH_STYLE=1'
559
- - 'LLM_VISION_IMAGE_USE_BASE64=1'
560
- ```
561
-
562
- 2. 修改 `.env` 文件
563
-
564
- <Callout type="info">为了安全起见,修改 `.env` 文件中的 ROOT USER 的字段</Callout>
565
-
566
- ```sh
567
- # MinIO S3 configuration
568
- MINIO_ROOT_USER=XXXX
569
- MINIO_ROOT_PASSWORD=XXXX
570
- ```
571
-
572
- #### Postgres 数据库配置
297
+ #### 数据库迁移问题
573
298
 
574
299
  你可以使用下述指令检查日志:
575
300
 
576
301
  ```sh
577
- docker logs -f lobe-chat
302
+ docker logs -f lobehub
578
303
  ```
579
304
 
580
305
  <Callout type="tip">
581
- 在我们官方的 Docker 镜像中,会在启动镜像前自动执行数据库 schema 的 migration
582
- ,我们的官方镜像承诺「空数据库 ->
583
- 完整表」这一段自动建表的稳定性。因此我们建议你的数据库实例使用一个空表实例,进而省去手动维护表结构或者
584
- migration 的麻烦。
306
+ 在我们官方的 Docker 镜像中,会在启动镜像前自动执行数据库 schema 的 migration,我们的官方镜像承诺「空数据库 -> 完整表」这一段自动建表的稳定性。因此我们建议你的数据库实例使用一个空表实例,进而省去手动维护表结构或者 migration 的麻烦。
585
307
  </Callout>
586
308
 
587
309
  如果你在建表的时候出现了问题,你可以尝试使用如下命令强制移除数据库容器并重新启动:
@@ -592,66 +314,6 @@ sudo rm -rf ./data # 移除挂载的数据库数据
592
314
  docker compose up -d # 重新启动
593
315
  ```
594
316
 
595
- #### 登录鉴权服务配置
596
-
597
- 你需要首先访问 WebUI 来进行配置:
598
-
599
- - 如果你按照前文配置了反向代理,打开 `https://auth.example.com`
600
- - 否则,请在进行端口映射后,打开 `http://localhost:8000`
601
-
602
- 登录管理员账户
603
-
604
- - 默认用户名为 admin
605
- - 默认密码为 下载配置文件时生成的随机密码。如忘记可到 `init_data.json` 文件中找回
606
-
607
- 登入后执行如下操作
608
-
609
- 1. 在 `用户管理 -> 组织` 中,添加一个新的组织。名称与显示名称为 `Lobe Users`。其余保持默认即可。
610
- 2. 在 `身份认证 -> 应用` 中,添加一个新的应用。
611
-
612
- - 名称与显示名称为 `LobeHub`。
613
- - 组织为 `Lobe Users`。
614
- - 重定向 URLS 中添加一行 为 `https://lobe.example.com/api/auth/callback/casdoor`。
615
- - 关闭除密码外的登录方式 。
616
- - 将客户端 ID 和客户端密钥分别填入 `.env`中的 `AUTH_CASDOOR_ID` 和 `AUTH_CASDOOR_SECRET` 中。
617
- - (可选) 仿照`built-in`应用的配置,来设计登录和注册的页面外观。
618
- - 保存并退出。
619
-
620
- <Callout type="info">
621
- 通过上述步骤,可以避免默认情况下所有用户均为管理员导致的不安全的情况。
622
- </Callout>
623
-
624
- #### S3 对象存储服务配置
625
-
626
- 本文以 MinIO 为例,解释配置过程,如果你使用的是其他 S3 服务商,请参照其文档进行配置。
627
-
628
- <Callout type="warning">
629
- 请记得注意配置对应 S3 服务商的 CORS 跨域配置,以确保 LobeHub 能够正常访问 S3 服务。
630
-
631
- 在本文中,你需要允许 `https://lobe.example.com` 的跨域请求。这既可以在 MinIO WebUI 的 `Configuration - API - Cors Allow Origin` 中配置,也可以在 Docker Compose 中的 `minio - environment - MINIO_API_CORS_ALLOW_ORIGIN` 中配置。
632
-
633
- 如果你使用第二种方法(这也是默认的方法)进行配置,你将无法再在 MinIO WebUI 中配置。
634
- </Callout>
635
-
636
- 你需要首先访问 WebUI 来进行配置:
637
-
638
- - 如果你按照前文配置了反向代理,打开 `https://minio-ui.example.com`
639
- - 否则,请在进行端口映射后,打开 `http://localhost:9001`
640
-
641
- 1. 在登录界面输入你设置的 `MINIO_ROOT_USER` 和 `MINIO_ROOT_PASSWORD`,然后点击登录
642
-
643
- 2. 在左侧面板 User / Access Keys 处,点击 `Create New Access Key`,无需额外修改,将生成的 `Access Key` 和 `Secret Key` 填入你的 `.env` 文件中的 `S3_ACCESS_KEY_ID` 和 `S3_SECRET_ACCESS_KEY` 中
644
-
645
- <Image alt="创建 MinIO 访问密钥" src="/blog/assetsfa2c650be15522ac2fd71a3e434a1b2e.webp" />
646
-
647
- 3. 重启 LobeHub 服务:
648
-
649
- ```sh
650
- docker compose up -d
651
- ```
652
-
653
- 至此,你已经成功部署了 LobeHub 数据库版本,你可以通过 `https://lobe.example.com` 访问你的 LobeHub 服务。
654
-
655
317
  #### 使用 `INTERNAL_APP_URL` 配置内部服务器通信
656
318
 
657
319
  <Callout type="info">
@@ -683,168 +345,9 @@ environment:
683
345
  对于使用 `network_mode: 'service:network-service'` 的 Docker Compose 部署,请使用 `http://localhost:3210` 作为 `INTERNAL_APP_URL`。
684
346
  </Callout>
685
347
 
686
- #### 配置文件
348
+ ## 配置身份验证
687
349
 
688
- 为方便一键复制,在此汇总基于 casdoor 鉴权方案的域名方式下生产部署配置服务端数据库所需要的示例配置文件。
689
-
690
- - `.env`
691
-
692
- ```sh
693
- # Proxy, if you need it
694
- # HTTP_PROXY=http://localhost:7890
695
- # HTTPS_PROXY=http://localhost:7890
696
-
697
- # Other environment variables, as needed. You can refer to the environment variables configuration for the client version.
698
- # OPENAI_API_KEY=sk-xxxx
699
- # OPENAI_PROXY_URL=https://api.openai.com/v1
700
- # OPENAI_MODEL_LIST=...
701
-
702
- # ===========================
703
- # ====== Preset config ======
704
- # ===========================
705
- # if no special requirements, no need to change
706
- LOBE_PORT=3210
707
- CASDOOR_PORT=8000
708
- MINIO_PORT=9000
709
-
710
- # Postgres related, which are the necessary environment variables for DB
711
- LOBE_DB_NAME=LobeHub
712
- POSTGRES_PASSWORD=uWNZugjBqixf8dxC
713
-
714
- # Casdoor secret
715
- AUTH_CASDOOR_ID=943e627d79d5dd8a22a1
716
- AUTH_CASDOOR_SECRET=6ec24ac304e92e160ef0d0656ecd86de8cb563f1
717
-
718
- # MinIO S3 configuration
719
- MINIO_ROOT_USER=Joe
720
- MINIO_ROOT_PASSWORD=Crj1570768
721
-
722
- # Configure the bucket information of MinIO
723
- MINIO_LOBE_BUCKET=lobe
724
- S3_ACCESS_KEY_ID=dB6Uq9CYZPdWSZouPyEd
725
- S3_SECRET_ACCESS_KEY=aPBW8CVULkh8bw1GatlT0GjLihcXHLNwRml4pieS
726
- ```
727
-
728
- - `docker-compose.yml`
729
-
730
- ```yaml
731
- name: lobehub
732
- services:
733
- network-service:
734
- image: alpine
735
- container_name: lobe-network
736
- ports:
737
- - '${MINIO_PORT}:${MINIO_PORT}' # MinIO API
738
- - '9001:9001' # MinIO Console
739
- - '${CASDOOR_PORT}:${CASDOOR_PORT}' # Casdoor
740
- - '${LOBE_PORT}:3210' # LobeHub
741
- command: tail -f /dev/null
742
- networks:
743
- - lobe-network
744
-
745
- postgresql:
746
- image: pgvector/pgvector:pg17
747
- container_name: lobe-postgres
748
- ports:
749
- - '5432:5432'
750
- volumes:
751
- - './data:/var/lib/postgresql/data'
752
- environment:
753
- - 'POSTGRES_DB=${LOBE_DB_NAME}'
754
- - 'POSTGRES_PASSWORD=${POSTGRES_PASSWORD}'
755
- healthcheck:
756
- test: ['CMD-SHELL', 'pg_isready -U postgres']
757
- interval: 5s
758
- timeout: 5s
759
- retries: 5
760
- restart: always
761
- networks:
762
- - lobe-network
763
-
764
- minio:
765
- image: minio/minio
766
- container_name: lobe-minio
767
- network_mode: 'service:network-service'
768
- volumes:
769
- - './s3_data:/etc/minio/data'
770
- environment:
771
- - 'MINIO_ROOT_USER=${MINIO_ROOT_USER}'
772
- - 'MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}'
773
- # - 'MINIO_API_CORS_ALLOW_ORIGIN=http://localhost:${LOBE_PORT}'
774
- - 'MINIO_API_CORS_ALLOW_ORIGIN=https://lobe.example.com'
775
- restart: always
776
- command: >
777
- server /etc/minio/data --address ":${MINIO_PORT}" --console-address ":9001"
778
-
779
- casdoor:
780
- image: casbin/casdoor
781
- container_name: lobe-casdoor
782
- entrypoint: /bin/sh -c './server --createDatabase=true'
783
- network_mode: 'service:network-service'
784
- depends_on:
785
- postgresql:
786
- condition: service_healthy
787
- environment:
788
- RUNNING_IN_DOCKER: 'true'
789
- driverName: 'postgres'
790
- dataSourceName: 'user=postgres password=${POSTGRES_PASSWORD} host=postgresql port=5432 sslmode=disable dbname=casdoor'
791
- # origin: 'http://localhost:${CASDOOR_PORT}'
792
- origin: 'https://auth.example.com'
793
- runmode: 'dev'
794
- volumes:
795
- - ./init_data.json:/init_data.json
796
-
797
- lobe:
798
- image: lobehub/lobehub
799
- container_name: lobehub
800
- network_mode: 'service:network-service'
801
- depends_on:
802
- postgresql:
803
- condition: service_healthy
804
- network-service:
805
- condition: service_started
806
- minio:
807
- condition: service_started
808
- casdoor:
809
- condition: service_started
810
-
811
- environment:
812
- # - 'APP_URL=http://localhost:3210'
813
- - 'APP_URL=https://lobe.example.com'
814
-
815
- - 'AUTH_SSO_PROVIDERS=casdoor'
816
- - 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ='
817
- - 'AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg'
818
- # - 'AUTH_URL=http://localhost:${LOBE_PORT}/api/auth'
819
- - 'AUTH_URL=https://lobe.example.com/api/auth'
820
-
821
- # - 'AUTH_CASDOOR_ISSUER=http://localhost:${CASDOOR_PORT}'
822
- - 'AUTH_CASDOOR_ISSUER=https://auth.example.com'
823
-
824
- - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
825
- # - 'S3_ENDPOINT=http://localhost:${MINIO_PORT}'
826
- - 'S3_ENDPOINT=https://minio.example.com'
827
-
828
- - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
829
- # - 'S3_PUBLIC_DOMAIN=http://localhost:${MINIO_PORT}'
830
- - 'S3_PUBLIC_DOMAIN=https://minio.example.com'
831
-
832
- - 'S3_ENABLE_PATH_STYLE=1'
833
- - 'LLM_VISION_IMAGE_USE_BASE64=1'
834
- env_file:
835
- - .env
836
- restart: always
837
-
838
- volumes:
839
- data:
840
- driver: local
841
- s3_data:
842
- driver: local
843
-
844
- networks:
845
- lobe-network:
846
- driver: bridge
847
- ```
350
+ 如需配置 SSO 登录鉴权服务(如 Casdoor、Logto 等),请参考 [身份验证服务](/zh/docs/self-hosting/advanced/auth) 文档。
848
351
 
849
352
  [docker-pulls-link]: https://hub.docker.com/r/lobehub/lobehub
850
353
  [docker-pulls-shield]: https://img.shields.io/docker/pulls/lobehub/lobehub?color=45cc11&labelColor=black&style=flat-square