@lobehub/lobehub 2.1.2 → 2.1.4

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 (174) hide show
  1. package/.env.example +4 -6
  2. package/.env.example.development +0 -3
  3. package/.github/workflows/release-desktop-stable.yml +1 -1
  4. package/CHANGELOG.md +59 -0
  5. package/Dockerfile +6 -4
  6. package/README.md +2 -3
  7. package/README.zh-CN.md +2 -3
  8. package/changelog/v2.json +14 -0
  9. package/docker-compose/deploy/.env.example +3 -1
  10. package/docker-compose/deploy/.env.zh-CN.example +4 -1
  11. package/docker-compose/local/.env.example +0 -1
  12. package/docker-compose/local/.env.zh-CN.example +0 -1
  13. package/docker-compose/local/grafana/.env.example +0 -1
  14. package/docker-compose/local/grafana/.env.zh-CN.example +0 -1
  15. package/docker-compose/local/logto/docker-compose.yml +0 -1
  16. package/docker-compose/local/zitadel/.env.example +1 -2
  17. package/docker-compose/local/zitadel/.env.zh-CN.example +1 -2
  18. package/docker-compose/production/grafana/.env.example +0 -1
  19. package/docker-compose/production/grafana/.env.zh-CN.example +0 -1
  20. package/docker-compose/production/logto/.env.example +0 -2
  21. package/docker-compose/production/logto/.env.zh-CN.example +0 -2
  22. package/docker-compose/production/zitadel/.env.example +0 -2
  23. package/docker-compose/production/zitadel/.env.zh-CN.example +0 -2
  24. package/docker-compose/setup.sh +16 -2
  25. package/docs/development/basic/folder-structure.mdx +23 -14
  26. package/docs/development/basic/folder-structure.zh-CN.mdx +23 -14
  27. package/docs/development/basic/work-with-server-side-database.mdx +0 -1
  28. package/docs/development/basic/work-with-server-side-database.zh-CN.mdx +0 -1
  29. package/docs/development/start.mdx +19 -12
  30. package/docs/development/start.zh-CN.mdx +19 -12
  31. package/docs/self-hosting/advanced/s3/cloudflare-r2.mdx +0 -5
  32. package/docs/self-hosting/advanced/s3/cloudflare-r2.zh-CN.mdx +0 -5
  33. package/docs/self-hosting/advanced/s3/rustfs.mdx +0 -2
  34. package/docs/self-hosting/advanced/s3/rustfs.zh-CN.mdx +0 -2
  35. package/docs/self-hosting/advanced/s3/tencent-cloud.mdx +0 -1
  36. package/docs/self-hosting/advanced/s3/tencent-cloud.zh-CN.mdx +0 -2
  37. package/docs/self-hosting/advanced/s3.mdx +0 -9
  38. package/docs/self-hosting/advanced/s3.zh-CN.mdx +0 -8
  39. package/docs/self-hosting/auth/providers/password.mdx +112 -0
  40. package/docs/self-hosting/auth/providers/password.zh-CN.mdx +103 -0
  41. package/docs/self-hosting/auth.mdx +12 -0
  42. package/docs/self-hosting/auth.zh-CN.mdx +12 -0
  43. package/docs/self-hosting/environment-variables/auth.mdx +7 -0
  44. package/docs/self-hosting/environment-variables/auth.zh-CN.mdx +7 -0
  45. package/docs/self-hosting/environment-variables/basic.mdx +0 -7
  46. package/docs/self-hosting/environment-variables/basic.zh-CN.mdx +0 -7
  47. package/docs/self-hosting/environment-variables/s3.mdx +0 -7
  48. package/docs/self-hosting/environment-variables/s3.zh-CN.mdx +0 -7
  49. package/docs/self-hosting/examples/azure-openai.mdx +0 -1
  50. package/docs/self-hosting/examples/azure-openai.zh-CN.mdx +0 -1
  51. package/docs/self-hosting/platform/docker-compose.mdx +0 -1
  52. package/docs/self-hosting/platform/docker-compose.zh-CN.mdx +0 -1
  53. package/docs/self-hosting/platform/docker.mdx +5 -3
  54. package/docs/self-hosting/platform/docker.zh-CN.mdx +5 -4
  55. package/docs/self-hosting/platform/dokploy.mdx +0 -2
  56. package/docs/self-hosting/platform/dokploy.zh-CN.mdx +0 -2
  57. package/docs/self-hosting/platform/vercel.mdx +0 -7
  58. package/docs/self-hosting/platform/vercel.zh-CN.mdx +0 -7
  59. package/e2e/src/steps/home/sidebarAgent.steps.ts +56 -24
  60. package/locales/ar/authError.json +1 -0
  61. package/locales/ar/models.json +25 -22
  62. package/locales/ar/providers.json +0 -1
  63. package/locales/ar/setting.json +16 -0
  64. package/locales/bg-BG/authError.json +1 -0
  65. package/locales/bg-BG/models.json +18 -21
  66. package/locales/bg-BG/providers.json +0 -1
  67. package/locales/bg-BG/setting.json +16 -0
  68. package/locales/de-DE/authError.json +1 -0
  69. package/locales/de-DE/models.json +20 -20
  70. package/locales/de-DE/providers.json +0 -1
  71. package/locales/de-DE/setting.json +16 -0
  72. package/locales/en-US/auth.json +1 -0
  73. package/locales/en-US/models.json +22 -22
  74. package/locales/en-US/providers.json +0 -1
  75. package/locales/es-ES/authError.json +1 -0
  76. package/locales/es-ES/models.json +84 -20
  77. package/locales/es-ES/providers.json +0 -1
  78. package/locales/es-ES/setting.json +16 -0
  79. package/locales/fa-IR/authError.json +1 -0
  80. package/locales/fa-IR/models.json +43 -20
  81. package/locales/fa-IR/providers.json +0 -1
  82. package/locales/fa-IR/setting.json +16 -0
  83. package/locales/fr-FR/authError.json +1 -0
  84. package/locales/fr-FR/models.json +19 -21
  85. package/locales/fr-FR/providers.json +0 -1
  86. package/locales/fr-FR/setting.json +16 -0
  87. package/locales/it-IT/authError.json +1 -0
  88. package/locales/it-IT/models.json +17 -19
  89. package/locales/it-IT/providers.json +0 -1
  90. package/locales/it-IT/setting.json +16 -0
  91. package/locales/ja-JP/authError.json +1 -0
  92. package/locales/ja-JP/models.json +43 -22
  93. package/locales/ja-JP/providers.json +0 -1
  94. package/locales/ja-JP/setting.json +16 -0
  95. package/locales/ko-KR/authError.json +1 -0
  96. package/locales/ko-KR/models.json +41 -20
  97. package/locales/ko-KR/providers.json +0 -1
  98. package/locales/ko-KR/setting.json +16 -0
  99. package/locales/nl-NL/authError.json +1 -0
  100. package/locales/nl-NL/models.json +48 -20
  101. package/locales/nl-NL/providers.json +0 -1
  102. package/locales/nl-NL/setting.json +16 -0
  103. package/locales/pl-PL/authError.json +1 -0
  104. package/locales/pl-PL/models.json +19 -22
  105. package/locales/pl-PL/providers.json +0 -1
  106. package/locales/pl-PL/setting.json +16 -0
  107. package/locales/pt-BR/authError.json +1 -0
  108. package/locales/pt-BR/models.json +21 -21
  109. package/locales/pt-BR/providers.json +0 -1
  110. package/locales/pt-BR/setting.json +16 -0
  111. package/locales/ru-RU/authError.json +1 -0
  112. package/locales/ru-RU/models.json +23 -20
  113. package/locales/ru-RU/providers.json +0 -1
  114. package/locales/ru-RU/setting.json +16 -0
  115. package/locales/tr-TR/authError.json +1 -0
  116. package/locales/tr-TR/models.json +37 -20
  117. package/locales/tr-TR/providers.json +0 -1
  118. package/locales/tr-TR/setting.json +16 -0
  119. package/locales/vi-VN/authError.json +1 -0
  120. package/locales/vi-VN/models.json +15 -19
  121. package/locales/vi-VN/providers.json +0 -1
  122. package/locales/vi-VN/setting.json +16 -0
  123. package/locales/zh-CN/auth.json +1 -0
  124. package/locales/zh-CN/models.json +20 -20
  125. package/locales/zh-CN/providers.json +0 -1
  126. package/locales/zh-TW/authError.json +1 -0
  127. package/locales/zh-TW/models.json +20 -20
  128. package/locales/zh-TW/providers.json +0 -1
  129. package/locales/zh-TW/setting.json +16 -0
  130. package/netlify.toml +0 -1
  131. package/package.json +1 -1
  132. package/packages/model-bank/src/aiModels/google.ts +0 -19
  133. package/packages/model-bank/src/aiModels/moonshot.ts +56 -5
  134. package/packages/model-bank/src/aiModels/ollamacloud.ts +14 -0
  135. package/packages/model-bank/src/aiModels/openrouter.ts +0 -14
  136. package/packages/model-bank/src/aiModels/qwen.ts +105 -4
  137. package/packages/model-bank/src/aiModels/siliconcloud.ts +39 -0
  138. package/packages/model-bank/src/aiModels/wenxin.ts +0 -99
  139. package/packages/model-runtime/src/core/contextBuilders/openai.test.ts +24 -0
  140. package/packages/model-runtime/src/core/contextBuilders/openai.ts +22 -5
  141. package/packages/model-runtime/src/core/openaiCompatibleFactory/index.ts +10 -3
  142. package/packages/model-runtime/src/core/streams/google/google-ai.test.ts +54 -13
  143. package/packages/model-runtime/src/core/streams/google/index.ts +1 -4
  144. package/packages/model-runtime/src/providers/moonshot/index.ts +24 -2
  145. package/packages/model-runtime/src/providers/qwen/index.ts +16 -15
  146. package/packages/types/src/serverConfig.ts +1 -0
  147. package/src/app/[variants]/(auth)/signin/SignInEmailStep.tsx +56 -49
  148. package/src/app/[variants]/(auth)/signin/page.tsx +2 -0
  149. package/src/app/[variants]/(auth)/signin/useSignIn.ts +2 -0
  150. package/src/app/[variants]/(auth)/signup/[[...signup]]/page.tsx +7 -0
  151. package/src/envs/app.ts +0 -2
  152. package/src/envs/auth.ts +3 -0
  153. package/src/libs/better-auth/define-config.ts +1 -1
  154. package/src/libs/next/proxy/define-config.ts +0 -1
  155. package/src/locales/default/auth.ts +2 -0
  156. package/src/server/globalConfig/index.ts +1 -0
  157. package/src/server/routers/lambda/__tests__/integration/aiAgent/execAgent.integration.test.ts +3 -2
  158. package/src/store/chat/slices/topic/action.ts +1 -1
  159. package/src/store/electron/actions/settings.ts +7 -7
  160. package/src/store/electron/actions/sync.ts +11 -11
  161. package/src/store/global/actions/general.ts +12 -12
  162. package/src/store/global/initialState.ts +11 -11
  163. package/src/store/global/selectors/clientDB.ts +1 -1
  164. package/src/store/global/selectors/systemStatus.ts +1 -1
  165. package/src/store/image/slices/generationConfig/action.ts +12 -12
  166. package/src/store/image/utils/size.ts +11 -11
  167. package/src/store/library/slices/ragEval/actions/dataset.ts +1 -1
  168. package/src/store/serverConfig/selectors.ts +1 -0
  169. package/src/store/session/slices/session/initialState.ts +6 -6
  170. package/src/store/session/slices/session/reducers.ts +1 -1
  171. package/src/store/session/slices/sessionGroup/initialState.ts +2 -2
  172. package/src/store/tool/slices/customPlugin/action.ts +2 -2
  173. package/src/store/tool/slices/oldStore/action.ts +5 -5
  174. package/src/store/userMemory/slices/preference/action.ts +6 -6
@@ -39,8 +39,6 @@ We need to configure an S3 storage service in the server-side database to store
39
39
  S3_BUCKET=LobeHub
40
40
  # Request endpoint of the bucket (note that the path in this link includes the bucket name, which must be removed, or use the link provided on the page for applying S3 API token)
41
41
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
42
- # Access domain of the bucket
43
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
44
42
  ```
45
43
 
46
44
  <Callout type={'warning'}>
@@ -118,9 +116,6 @@ S3_SECRET_ACCESS_KEY=55af75d8eb6b99f189f6a35f855336ea62cd9c4751a5cf4337c53c1d3f4
118
116
  S3_BUCKET=LobeHub
119
117
  # Bucket Request Endpoint
120
118
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
121
- # Public Access Domain for the Bucket
122
- S3_PUBLIC_DOMAIN=https://s3-dev.your-domain.com
123
-
124
119
  # Bucket Region, such as us-west-1. Generally not required, but some service providers may need it.
125
120
  # S3_REGION=us-west-1
126
121
  ```
@@ -40,8 +40,6 @@ tags:
40
40
  S3_BUCKET=LobeHub
41
41
  # 存储桶的请求端点(注意此处链接的路径带存储桶名称,必须删除该路径,或使用申请 S3 API token 页面所提供的链接)
42
42
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
43
- # 存储桶对外的访问域名
44
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
45
43
  ```
46
44
 
47
45
  <Callout type={'warning'}>`S3_ENDPOINT`必须删除其路径,否则会无法访问所上传文件</Callout>
@@ -115,9 +113,6 @@ S3_SECRET_ACCESS_KEY=55af75d8eb6b99f189f6a35f855336ea62cd9c4751a5cf4337c53c1d3f4
115
113
  S3_BUCKET=LobeHub
116
114
  # 存储桶的请求端点
117
115
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
118
- # 存储桶对外的访问域名
119
- S3_PUBLIC_DOMAIN=https://s3-dev.your-domain.com
120
-
121
116
  # 桶的区域,如 us-west-1,一般来说不需要添加,但某些服务商则需要配置
122
117
  # S3_REGION=us-west-1
123
118
  ```
@@ -135,8 +135,6 @@ We need to configure an S3-compatible storage service in the server-side databas
135
135
  S3_ENDPOINT=https://lobe-s3-api.example.com
136
136
  # Bucket name
137
137
  S3_BUCKET=lobe
138
- # Public domain for accessing the bucket
139
- S3_PUBLIC_DOMAIN=https://lobe-s3-api.example.com
140
138
  S3_ENABLE_PATH_STYLE=1
141
139
  ```
142
140
  </Steps>
@@ -135,8 +135,6 @@ tags:
135
135
  S3_ENDPOINT=https://lobe-s3-api.example.com
136
136
  # 存储桶的名称
137
137
  S3_BUCKET=lobe
138
- # 存储桶对外的访问域名
139
- S3_PUBLIC_DOMAIN=https://lobe-s3-api.example.com
140
138
  S3_ENABLE_PATH_STYLE=1
141
139
  ```
142
140
  </Steps>
@@ -39,7 +39,6 @@ We need to configure S3 storage service for file storage in the server-side data
39
39
  S3_BUCKET=lobe-130xxxxxx2
40
40
  S3_ENDPOINT=https://cos.ap-chengdu.myqcloud.com
41
41
  S3_REGION=ap-chengdu
42
- S3_PUBLIC_DOMAIN=https://lobe-1251234567.cos.ap-chengdu.myqcloud.com
43
42
  ```
44
43
 
45
44
  <Callout type={'warning'}>
@@ -40,8 +40,6 @@ tags:
40
40
  S3_ENDPOINT=https://cos.ap-chengdu.myqcloud.com
41
41
  # 桶的区域
42
42
  S3_REGION=ap-chengdu
43
- # 存储桶对外的访问域名
44
- S3_PUBLIC_DOMAIN=https://lobe-1251234567.cos.ap-chengdu.myqcloud.com
45
43
  ```
46
44
 
47
45
  <Callout type={'warning'}>
@@ -50,15 +50,6 @@ The best practice in this area is to use a file storage service (S3) to store im
50
50
 
51
51
  Whether to set the ACL to `public-read` when uploading files. This option is enabled by default. If the service provider does not support setting individual ACLs for files (i.e., all files inherit the ACL of the storage bucket), enabling this option may cause request errors. Set `S3_SET_ACL` to `0` to disable it.
52
52
 
53
- ### `S3_PUBLIC_DOMAIN`
54
-
55
- The public access domain of the storage bucket, used to access files in the storage bucket. This address needs to be **publicly readable**. The reason is that when OpenAI's gpt-4o and other vision models recognize images, OpenAI will try to download this image link on their servers. Therefore, this link must be publicly accessible. If it is a private link, OpenAI will not be able to access the image and thus will not be able to recognize the image content properly.
56
-
57
- <Callout type={'warning'}>
58
- Additionally, since this access domain is often a separate URL, it needs to be configured to allow
59
- cross-origin access to the site. Otherwise, cross-origin issues will occur in the browser.
60
- </Callout>
61
-
62
53
  ### `S3_ENABLE_PATH_STYLE`
63
54
 
64
55
  Whether to enable the `path-style` access mode of S3. This option is disabled by default. If your S3 service provider uses `path-style`, set `S3_ENABLE_PATH_STYLE` to `1` to enable it.
@@ -46,14 +46,6 @@ LobeHub 在 [很早以前](https://x.com/lobehub/status/1724289575672291782) 就
46
46
 
47
47
  是否在上传文件时设置 ACL 为 `public-read`。该选项默认启用。如果服务商不支持为文件设置单独的 ACL(即所有文件继承存储桶的 ACL),启用此选项可能会导致请求错误,将 `S3_SET_ACL` 设置为 `0` 即可关闭。
48
48
 
49
- ### `S3_PUBLIC_DOMAIN`
50
-
51
- 存储桶对外的访问域名,用于访问存储桶中的文件,这个地址需要**允许互联网可读**。 原因是 OpenAI 的 gpt-4o 等视觉模型识别图片时,OpenAI 会尝试在他们的服务器中下载这个图片链接,因此这个链接必须是公开可访问的,如果是私有的链接,OpenAI 将无法访问到这个图片,进而无法正常识别到图片内容。
52
-
53
- <Callout type={'warning'}>
54
- 此外,由于该访问域名往往是一个独立的网址,因此需要配置允许站点的跨域访问,否则会在浏览器中出现跨域问题。
55
- </Callout>
56
-
57
49
  ### `S3_ENABLE_PATH_STYLE`
58
50
 
59
51
  是否启用 S3 的 `path-style` 访问模式。此选项默认禁用。如果您的 S3 服务提供商使用 `path-style`,请将 `S3_ENABLE_PATH_STYLE` 设置为 `1` 以启用它。
@@ -0,0 +1,112 @@
1
+ ---
2
+ title: Configuring Email/Password Authentication for LobeHub
3
+ description: >-
4
+ Learn how to configure email and password authentication for LobeHub,
5
+ including enabling/disabling options and SSO-only mode.
6
+ tags:
7
+ - Email
8
+ - Password
9
+ - Authentication
10
+ - LobeHub
11
+ ---
12
+
13
+ # Configuring Email/Password Authentication
14
+
15
+ LobeHub supports traditional email and password authentication out of the box.
16
+ This guide covers the available configuration options.
17
+
18
+ ## Default Behavior
19
+
20
+ By default, email/password authentication is enabled.
21
+ Users can register with their email address and set a password.
22
+
23
+ ## Configuration Options
24
+
25
+ ### Disable Email/Password Authentication (SSO-Only Mode)
26
+
27
+ If you want to force users to authenticate via SSO providers only,
28
+ set the following environment variable:
29
+
30
+ | Environment Variable | Type | Description |
31
+ | ----------------------------- | -------- | ------------------------------------------ |
32
+ | `AUTH_DISABLE_EMAIL_PASSWORD` | Optional | Set to `1` to disable email/password login |
33
+
34
+ When enabled:
35
+
36
+ - The email input field is hidden on the login page
37
+ - Only SSO provider buttons are displayed
38
+ - The signup page redirects to the login page
39
+ - Users must authenticate through configured SSO providers
40
+
41
+ <Callout type={'warning'}>
42
+ Before enabling SSO-only mode, ensure you have configured at least one SSO
43
+ provider via `AUTH_SSO_PROVIDERS`. Otherwise, users will have no way to log
44
+ in.
45
+ </Callout>
46
+
47
+ ### Enable Email Verification
48
+
49
+ To require users to verify their email address before signing in:
50
+
51
+ | Environment Variable | Type | Description |
52
+ | ------------------------- | -------- | ---------------------------------------- |
53
+ | `AUTH_EMAIL_VERIFICATION` | Optional | Set to `1` to require email verification |
54
+
55
+ This requires configuring an email service (SMTP).
56
+ See [Email Service Configuration](/docs/self-hosting/auth/email) for details.
57
+
58
+ ### Enable Magic Link Login
59
+
60
+ To allow passwordless login via email magic links:
61
+
62
+ | Environment Variable | Type | Description |
63
+ | ------------------------ | -------- | ------------------------------------- |
64
+ | `AUTH_ENABLE_MAGIC_LINK` | Optional | Set to `1` to enable magic link login |
65
+
66
+ This also requires configuring an email service (SMTP).
67
+
68
+ ## Change Password
69
+
70
+ Users can change their password in two ways:
71
+
72
+ 1. **Profile Settings**: Go to Settings > Profile to change password
73
+ 2. **Forgot Password**: On the login page, enter email, proceed to the password step, then click "Forgot Password" below the password input
74
+
75
+ <Callout type={'info'}>
76
+ Both methods require email service (SMTP) to be configured for sending
77
+ password reset emails.
78
+ </Callout>
79
+
80
+ ## Example Configurations
81
+
82
+ ### SSO-Only (Disable Email/Password)
83
+
84
+ ```bash
85
+ AUTH_DISABLE_EMAIL_PASSWORD=1
86
+ AUTH_SSO_PROVIDERS=google,github
87
+ ```
88
+
89
+ ### Email/Password with Verification
90
+
91
+ ```bash
92
+ AUTH_EMAIL_VERIFICATION=1
93
+ SMTP_HOST=smtp.example.com
94
+ SMTP_PORT=587
95
+ SMTP_USER=noreply@example.com
96
+ SMTP_PASS=your-password
97
+ ```
98
+
99
+ ### Email/Password with Magic Link
100
+
101
+ ```bash
102
+ AUTH_ENABLE_MAGIC_LINK=1
103
+ SMTP_HOST=smtp.example.com
104
+ SMTP_PORT=587
105
+ SMTP_USER=noreply@example.com
106
+ SMTP_PASS=your-password
107
+ ```
108
+
109
+ <Callout type={'tip'}>
110
+ Go to [Environment Variables](/docs/self-hosting/environment-variables/auth)
111
+ for detailed information on all authentication variables.
112
+ </Callout>
@@ -0,0 +1,103 @@
1
+ ---
2
+ title: 配置 LobeHub 邮箱密码登录
3
+ description: 了解如何配置 LobeHub 的邮箱密码登录,包括启用/禁用选项和仅 SSO 模式。
4
+ tags:
5
+ - 邮箱
6
+ - 密码
7
+ - 身份验证
8
+ - LobeHub
9
+ ---
10
+
11
+ # 配置邮箱密码登录
12
+
13
+ LobeHub 默认支持传统的邮箱密码登录方式。本指南介绍可用的配置选项。
14
+
15
+ ## 默认行为
16
+
17
+ 默认情况下,邮箱密码登录已启用。用户可以使用邮箱地址注册并设置密码。
18
+
19
+ ## 配置选项
20
+
21
+ ### 禁用邮箱密码登录(仅 SSO 模式)
22
+
23
+ 如果你希望强制用户只能通过 SSO 提供商登录,请设置以下环境变量:
24
+
25
+ | 环境变量 | 类型 | 描述 |
26
+ | ----------------------------- | -- | ---------------- |
27
+ | `AUTH_DISABLE_EMAIL_PASSWORD` | 可选 | 设置为 `1` 禁用邮箱密码登录 |
28
+
29
+ 启用后:
30
+
31
+ - 登录页面隐藏邮箱输入框
32
+ - 仅显示 SSO 提供商登录按钮
33
+ - 注册页面重定向到登录页面
34
+ - 用户必须通过配置的 SSO 提供商进行身份验证
35
+
36
+ <Callout type={'warning'}>
37
+ 启用仅 SSO 模式前,请确保已通过 `AUTH_SSO_PROVIDERS` 配置了至少一个 SSO
38
+ 提供商。否则用户将无法登录。
39
+ </Callout>
40
+
41
+ ### 启用邮箱验证
42
+
43
+ 要求用户在登录前验证邮箱地址:
44
+
45
+ | 环境变量 | 类型 | 描述 |
46
+ | ------------------------- | -- | -------------- |
47
+ | `AUTH_EMAIL_VERIFICATION` | 可选 | 设置为 `1` 启用邮箱验证 |
48
+
49
+ 这需要配置邮件服务(SMTP)。详情请参阅[邮件服务配置](/zh/docs/self-hosting/auth/email)。
50
+
51
+ ### 启用魔法链接登录
52
+
53
+ 允许通过邮件魔法链接实现无密码登录:
54
+
55
+ | 环境变量 | 类型 | 描述 |
56
+ | ------------------------ | -- | ---------------- |
57
+ | `AUTH_ENABLE_MAGIC_LINK` | 可选 | 设置为 `1` 启用魔法链接登录 |
58
+
59
+ 这也需要配置邮件服务(SMTP)。
60
+
61
+ ## 修改密码
62
+
63
+ 用户可以通过以下两种方式修改密码:
64
+
65
+ 1. **个人设置**:前往 设置 > 个人资料 修改密码
66
+ 2. **忘记密码**:在登录页面输入邮箱后,进入密码输入步骤,点击密码框下方的「忘记密码」
67
+
68
+ <Callout type={'info'}>
69
+ 以上两种方式都需要配置邮件服务(SMTP)以发送密码重置邮件。
70
+ </Callout>
71
+
72
+ ## 配置示例
73
+
74
+ ### 仅 SSO(禁用邮箱密码)
75
+
76
+ ```bash
77
+ AUTH_DISABLE_EMAIL_PASSWORD=1
78
+ AUTH_SSO_PROVIDERS=google,github
79
+ ```
80
+
81
+ ### 邮箱密码 + 邮箱验证
82
+
83
+ ```bash
84
+ AUTH_EMAIL_VERIFICATION=1
85
+ SMTP_HOST=smtp.example.com
86
+ SMTP_PORT=587
87
+ SMTP_USER=noreply@example.com
88
+ SMTP_PASS=your-password
89
+ ```
90
+
91
+ ### 邮箱密码 + 魔法链接
92
+
93
+ ```bash
94
+ AUTH_ENABLE_MAGIC_LINK=1
95
+ SMTP_HOST=smtp.example.com
96
+ SMTP_PORT=587
97
+ SMTP_USER=noreply@example.com
98
+ SMTP_PASS=your-password
99
+ ```
100
+
101
+ <Callout type={'tip'}>
102
+ 前往[环境变量](/zh/docs/self-hosting/environment-variables/auth)查看所有身份验证相关变量的详细信息。
103
+ </Callout>
@@ -61,6 +61,8 @@ To enable Better Auth in LobeHub, set the following environment variables:
61
61
  Click on a provider below for detailed configuration guides:
62
62
 
63
63
  <Cards>
64
+ <Card href={'/docs/self-hosting/advanced/auth/providers/password'} title={'Email/Password'} />
65
+
64
66
  <Card href={'/docs/self-hosting/advanced/auth/providers/github'} title={'GitHub'} />
65
67
 
66
68
  <Card href={'/docs/self-hosting/advanced/auth/providers/google'} title={'Google'} />
@@ -149,6 +151,16 @@ The current authentication system requires email. Please configure a valid email
149
151
 
150
152
  This applies to all authentication methods, including SSO providers like Casdoor. Always ensure users have valid email addresses configured.
151
153
 
154
+ ### How do I enable SSO-only mode (disable email/password login)?
155
+
156
+ Set `AUTH_DISABLE_EMAIL_PASSWORD=1` to disable email/password authentication. When enabled:
157
+
158
+ - The email input will be hidden on the login page, only SSO buttons are displayed
159
+ - The signup page will redirect to the login page
160
+ - Users can only log in via configured SSO providers
161
+
162
+ Make sure you have at least one SSO provider configured via `AUTH_SSO_PROVIDERS` before enabling this option.
163
+
152
164
  ### How do I restrict registration to specific emails or domains?
153
165
 
154
166
  Set the `AUTH_ALLOWED_EMAILS` environment variable with a comma-separated list of allowed emails or domains. For example:
@@ -61,6 +61,8 @@ LobeHub 支持使用 Better Auth 配置外部身份验证服务,供企业 /
61
61
  点击下方提供商查看详细配置指南:
62
62
 
63
63
  <Cards>
64
+ <Card href={'/zh/docs/self-hosting/advanced/auth/providers/password'} title={'邮箱密码'} />
65
+
64
66
  <Card href={'/zh/docs/self-hosting/advanced/auth/providers/github'} title={'GitHub'} />
65
67
 
66
68
  <Card href={'/zh/docs/self-hosting/advanced/auth/providers/google'} title={'Google'} />
@@ -150,6 +152,16 @@ Better Auth 支持内置提供商(Google、GitHub、Microsoft、Apple、AWS Co
150
152
 
151
153
  这适用于所有身份验证方式,包括 Casdoor 等 SSO 提供商。请确保用户配置了有效的邮箱地址。
152
154
 
155
+ ### 如何启用仅 SSO 模式(禁用邮箱密码登录)?
156
+
157
+ 设置 `AUTH_DISABLE_EMAIL_PASSWORD=1` 可禁用邮箱密码登录。启用后:
158
+
159
+ - 登录页面将隐藏邮箱输入框,仅显示 SSO 登录按钮
160
+ - 注册页面将重定向到登录页面
161
+ - 用户只能通过配置的 SSO 提供商登录
162
+
163
+ 启用此选项前,请确保已通过 `AUTH_SSO_PROVIDERS` 配置了至少一个 SSO 提供商。
164
+
153
165
  ### 如何限制只允许特定邮箱或域名注册?
154
166
 
155
167
  设置 `AUTH_ALLOWED_EMAILS` 环境变量,支持完整邮箱地址或域名,以逗号分隔。例如:
@@ -46,6 +46,13 @@ LobeHub provides a complete authentication service capability when deployed. The
46
46
  - Default: `-`
47
47
  - Example: `example.com,admin@other.com`
48
48
 
49
+ #### `AUTH_DISABLE_EMAIL_PASSWORD`
50
+
51
+ - Type: Optional
52
+ - Description: Set to `1` to disable email/password authentication, forcing users to use SSO login only. When enabled, the email input will be hidden on the login page and the signup page will redirect to login.
53
+ - Default: `0`
54
+ - Example: `1`
55
+
49
56
  #### `JWKS_KEY`
50
57
 
51
58
  - Type: Required
@@ -44,6 +44,13 @@ LobeHub 在部署时提供了完善的身份验证服务能力,以下是相关
44
44
  - 默认值:`-`
45
45
  - 示例:`example.com,admin@other.com`
46
46
 
47
+ #### `AUTH_DISABLE_EMAIL_PASSWORD`
48
+
49
+ - 类型:可选
50
+ - 描述:设置为 `1` 以禁用邮箱密码登录,强制用户使用 SSO 登录。启用后,登录页面将隐藏邮箱输入框,注册页面将重定向到登录页。
51
+ - 默认值:`0`
52
+ - 示例:`1`
53
+
47
54
  #### `JWKS_KEY`
48
55
 
49
56
  - 类型:必选
@@ -190,13 +190,6 @@ SSRF_ALLOW_IP_ADDRESS_LIST=192.168.1.100,10.0.0.50
190
190
  - Allow access to internal API gateway: `10.0.0.50`
191
191
  - Allow access to internal documentation server: `172.16.0.10`
192
192
 
193
- ### `ENABLE_AUTH_PROTECTION`
194
-
195
- - Type: Optional
196
- - Description: Controls whether to enable route protection. When set to `1`, all routes except public routes (like `/api/auth`, `/login`, `/signup`) will require authentication. When set to `0` or not set, only specific protected routes (like `/settings`, `/files`) will require authentication.
197
- - Default: `0`
198
- - Example: `1` or `0`
199
-
200
193
  ### `NEXT_PUBLIC_ASSET_PREFIX`
201
194
 
202
195
  - Type: Optional
@@ -185,13 +185,6 @@ SSRF_ALLOW_IP_ADDRESS_LIST=192.168.1.100,10.0.0.50
185
185
  - 允许访问内网 API 网关:`10.0.0.50`
186
186
  - 允许访问内网文档服务器:`172.16.0.10`
187
187
 
188
- ### `ENABLE_AUTH_PROTECTION`
189
-
190
- - 类型:可选
191
- - 说明:控制是否启用路由保护。当设置为 `1` 时,除了公共路由(如 `/api/auth`、`/login`、`/signup`)外,所有路由都需要认证。当设置为 `0` 或未设置时,只有特定的受保护路由(如 `/settings`、`/files` 等)需要认证。
192
- - 默认值:`0`
193
- - 示例:`1` 或 `0`
194
-
195
188
  ### `NEXT_PUBLIC_ASSET_PREFIX`
196
189
 
197
190
  - 类型:可选
@@ -58,13 +58,6 @@ LobeHub supports multimodal AI sessions, including the ability to upload unstruc
58
58
  - Default: `1`
59
59
  - Example: `0`
60
60
 
61
- ### `S3_PUBLIC_DOMAIN`
62
-
63
- - Type: Required
64
- - Description: Public access domain for the bucket, used to access files in the bucket
65
- - Default: -
66
- - Example: `https://files.example.com`
67
-
68
61
  ### `S3_ENABLE_PATH_STYLE`
69
62
 
70
63
  - Type: Optional
@@ -56,13 +56,6 @@ LobeHub 支持多模态的 AI 会话,包括将图片、文件等非结构化
56
56
  - 默认值:`1`
57
57
  - 示例:`0`
58
58
 
59
- ### `S3_PUBLIC_DOMAIN`
60
-
61
- - 类型:必填
62
- - 描述:存储桶对外的访问域名,用于访问存储桶中的文件
63
- - 默认值:-
64
- - 示例:`https://files.example.com`
65
-
66
59
  ### `S3_ENABLE_PATH_STYLE`
67
60
 
68
61
  - 类型:可选
@@ -40,4 +40,3 @@ If you want the deployed version to be pre-configured with Azure OpenAI for end
40
40
  | `AZURE_ENDPOINT` | Required | Azure API address, can be found in the "Keys and Endpoints" section when checking resources in the Azure portal | - | `https://docs-test-001.openai.azure.com` |
41
41
  | `AZURE_API_VERSION` | Required | Azure API version, following the format YYYY-MM-DD | 2023-08-01-preview | `-`, see [latest version](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions) |
42
42
  | `AZURE_MODEL_LIST` | Required | Used to control the model list, use `+` to add a model, use `-` to hide a model, use `id->deplymentName=displayName` to customize the display name of a model, separated by commas. Definition syntax rules see [Model List](/docs/self-hosting/advanced/model-list) | - | `gpt-35-turbo->my-deploy=GPT 3.5 Turbo` or `gpt-4-turbo->my-gpt4=GPT 4 Turbo<128000:vision:fc>` |
43
- | `ACCESS_CODE` | Optional | Add a password to access LobeHub. You can set a long password to prevent brute force attacks. When this value is separated by commas, it becomes an array of passwords | - | `awCT74` or `e3@09!` or `code1,code2,code3` |
@@ -42,4 +42,3 @@ LobeHub 支持使用 [Azure OpenAI](https://learn.microsoft.com/zh-cn/azure/ai-s
42
42
  | `AZURE_ENDPOINT` | 必选 | Azure API 地址,从 Azure 门户检查资源时,可在 “密钥和终结点” 部分中找到此值 | - | `https://docs-test-001.openai.azure.com` |
43
43
  | `AZURE_API_VERSION` | 必选 | Azure 的 API 版本,遵循 YYYY-MM-DD 格式 | 2023-08-01-preview | `-`,查阅[最新版本](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions) |
44
44
  | `AZURE_MODEL_LIST` | 必选 | 用来控制模型列表,使用 `模型名->部署名=展示名` 来自定义模型的展示名,用英文逗号隔开。支持扩展能力,其余语法规则详见 [模型列表](/zh/docs/self-hosting/advanced/model-list) | - | `gpt-35-turbo->my-deploy=GPT 3.5 Turbo` 或 `gpt-4-turbo->my-gpt4=GPT 4 Turbo<128000:vision:fc>` |
45
- | `ACCESS_CODE` | 可选 | 添加访问 LobeHub 的密码,你可以设置一个长密码以防被爆破,该值用逗号分隔时为密码数组 | - | `awCT74` 或 `e3@09!` or `code1,code2,code3` |
@@ -281,7 +281,6 @@ Now, we will introduce the necessary configurations for running these services:
281
281
  LobeHub needs to provide a public access URL for object files for the LLM service provider, so you need to configure the S3 Endpoint:
282
282
 
283
283
  ```env
284
- S3_PUBLIC_DOMAIN=https://s3.example.com
285
284
  S3_ENDPOINT=https://s3.example.com
286
285
  ```
287
286
 
@@ -277,7 +277,6 @@ mv .env.zh-CN.example .env
277
277
  LobeHub 需要为 LLM 服务提供商提供文件对象的公网访问地址,因此你需要配置 S3 的 Endpoint:
278
278
 
279
279
  ```env
280
- S3_PUBLIC_DOMAIN=https://s3.example.com
281
280
  S3_ENDPOINT=https://s3.example.com
282
281
  ```
283
282
 
@@ -64,6 +64,10 @@ Here is the process for deploying the LobeHub server database version on a Linux
64
64
 
65
65
  <GenerateSecret envName="AUTH_SECRET" />
66
66
 
67
+ Click the button below to generate `JWKS_KEY` (for signing and verifying JWTs):
68
+
69
+ <GenerateJWKSKey />
70
+
67
71
  ```shell
68
72
  # Website domain
69
73
  APP_URL=https://your-prod-domain.com
@@ -77,7 +81,7 @@ Here is the process for deploying the LobeHub server database version on a Linux
77
81
  # Authentication (Better Auth)
78
82
  # Session encryption key (generate with: openssl rand -base64 32)
79
83
  AUTH_SECRET=jgwsK28dspyVQoIf8/M3IIHl1h6LYYceSYNXeLpy6uk=
80
- # JWKS key for signing and verifying JWTs (generate at: https://lobehub.com/docs/self-hosting/environment-variables/auth#jwks_key)
84
+ # JWKS key for signing and verifying JWTs
81
85
  JWKS_KEY='{"keys":[...]}'
82
86
 
83
87
  # S3 related
@@ -85,7 +89,6 @@ Here is the process for deploying the LobeHub server database version on a Linux
85
89
  S3_SECRET_ACCESS_KEY=xxxxxxxxxx
86
90
  S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com
87
91
  S3_BUCKET=LobeHub
88
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
89
92
 
90
93
  ```
91
94
 
@@ -142,7 +145,6 @@ $ docker run -it -d --name lobehub -p 3210:3210 \
142
145
  -e S3_SECRET_ACCESS_KEY=xxxxxxxxxx \
143
146
  -e S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com \
144
147
  -e S3_BUCKET=LobeHub \
145
- -e S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com \
146
148
  lobehub/lobehub
147
149
  ```
148
150
 
@@ -60,6 +60,10 @@ tags:
60
60
 
61
61
  <GenerateSecret envName="AUTH_SECRET" />
62
62
 
63
+ 点击下方按钮一键生成 `JWKS_KEY`(用于签名和验证 JWT):
64
+
65
+ <GenerateJWKSKey />
66
+
63
67
  ```shell
64
68
  # 网站域名
65
69
  APP_URL=https://your-prod-domain.com
@@ -74,7 +78,7 @@ tags:
74
78
  # 身份验证(Better Auth)
75
79
  # 会话加密密钥(使用以下命令生成:openssl rand -base64 32)
76
80
  AUTH_SECRET=jgwsK28dspyVQoIf8/M3IIHl1h6LYYceSYNXeLpy6uk=
77
- # JWKS 密钥,用于签名和验证 JWT(在此生成:https://lobehub.com/zh/docs/self-hosting/environment-variables/auth#jwks_key)
81
+ # JWKS 密钥,用于签名和验证 JWT
78
82
  JWKS_KEY='{"keys":[...]}'
79
83
 
80
84
  # S3 相关
@@ -83,8 +87,6 @@ tags:
83
87
  # 用于 S3 API 访问的域名
84
88
  S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com
85
89
  S3_BUCKET=LobeHub
86
- # 用于外网访问 S3 的公共域名,需配置 CORS
87
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
88
90
  # S3_REGION=ap-chengdu # 如果需要指定地域
89
91
 
90
92
  ```
@@ -142,7 +144,6 @@ $ docker run -it -d --name lobehub -p 3210:3210 \
142
144
  -e S3_SECRET_ACCESS_KEY=xxxxxxxxxx \
143
145
  -e S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com \
144
146
  -e S3_BUCKET=LobeHub \
145
- -e S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com \
146
147
  lobehub/lobehub
147
148
  ```
148
149
 
@@ -39,7 +39,6 @@ S3_ACCESS_KEY_ID=
39
39
  S3_SECRET_ACCESS_KEY=
40
40
  S3_ENDPOINT=
41
41
  S3_BUCKET=
42
- S3_PUBLIC_DOMAIN=
43
42
  S3_ENABLE_PATH_STYLE=
44
43
  ```
45
44
 
@@ -118,7 +117,6 @@ S3_ACCESS_KEY_ID=
118
117
  S3_SECRET_ACCESS_KEY=
119
118
  S3_ENDPOINT=
120
119
  S3_BUCKET=
121
- S3_PUBLIC_DOMAIN=
122
120
  S3_ENABLE_PATH_STYLE=
123
121
 
124
122
  ```
@@ -40,7 +40,6 @@ S3_ACCESS_KEY_ID=
40
40
  S3_SECRET_ACCESS_KEY=
41
41
  S3_ENDPOINT=
42
42
  S3_BUCKET=
43
- S3_PUBLIC_DOMAIN=
44
43
  S3_ENABLE_PATH_STYLE=
45
44
  ```
46
45
 
@@ -119,7 +118,6 @@ S3_ACCESS_KEY_ID=
119
118
  S3_SECRET_ACCESS_KEY=
120
119
  S3_ENDPOINT=
121
120
  S3_BUCKET=
122
- S3_PUBLIC_DOMAIN=
123
121
  S3_ENABLE_PATH_STYLE=
124
122
 
125
123
  ```
@@ -154,8 +154,6 @@ In the server-side database, we need to configure the S3 storage service to stor
154
154
  S3_BUCKET=LobeHub
155
155
  # Storage bucket request endpoint (note that the path in this link includes the bucket name, which must be removed, or use the link provided on the S3 API token application page)
156
156
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
157
- # Public access domain for the storage bucket
158
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
159
157
  ```
160
158
 
161
159
  <Callout type={'warning'}>
@@ -204,9 +202,6 @@ In the server-side database, we need to configure the S3 storage service to stor
204
202
  S3_BUCKET=LobeHub
205
203
  # Bucket request endpoint
206
204
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
207
- # Public domain for bucket access
208
- S3_PUBLIC_DOMAIN=https://s3-dev.your-domain.com
209
-
210
205
  # Bucket region, such as us-west-1, generally not required, but some providers may need to configure
211
206
  # S3_REGION=us-west-1
212
207
  ```
@@ -288,8 +283,6 @@ S3_SECRET_ACCESS_KEY=55af75d8eb6b99f189f6a35f855336ea62cd9c4751a5cf4337c53c1d3f4
288
283
  S3_BUCKET=LobeHub
289
284
  # Bucket request endpoint
290
285
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
291
- # Public access domain for the bucket
292
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
293
286
  # Bucket region, such as us-west-1, generally not needed to add, but some service providers may require configuration
294
287
  # S3_REGION=us-west-1
295
288
  ```