@lobehub/chat 1.127.2 → 1.127.3

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 (231) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/changelog/v1.json +9 -0
  3. package/docker-compose/local/docker-compose.yml +83 -1
  4. package/docker-compose/local/grafana/.env.example +42 -0
  5. package/docker-compose/local/grafana/.env.zh-CN.example +42 -0
  6. package/docker-compose/local/grafana/docker-compose.yml +251 -0
  7. package/docker-compose/local/grafana/grafana/dashboards/.gitkeep +0 -0
  8. package/docker-compose/local/grafana/grafana/datasources/datasource-prometheus.yaml +15 -0
  9. package/docker-compose/local/grafana/grafana/datasources/datasource-tempo.yaml +16 -0
  10. package/docker-compose/local/grafana/otel-collector/collector-config.yaml +45 -0
  11. package/docker-compose/local/grafana/prometheus/prometheus.yml +11 -0
  12. package/docker-compose/local/grafana/tempo/tempo.yaml +58 -0
  13. package/docker-compose/production/grafana/.env.example +44 -0
  14. package/docker-compose/production/grafana/.env.zh-CN.example +42 -0
  15. package/docker-compose/production/grafana/docker-compose.yml +249 -0
  16. package/docker-compose/production/grafana/grafana/dashboards/.gitkeep +0 -0
  17. package/docker-compose/production/grafana/grafana/datasources/datasource-prometheus.yaml +15 -0
  18. package/docker-compose/production/grafana/grafana/datasources/datasource-tempo.yaml +20 -0
  19. package/docker-compose/production/grafana/otel-collector/collector-config.yaml +45 -0
  20. package/docker-compose/production/grafana/prometheus/prometheus.yml +11 -0
  21. package/docker-compose/production/grafana/tempo/tempo.yaml +58 -0
  22. package/docker-compose.development.yml +44 -0
  23. package/docs/self-hosting/advanced/observability/grafana.mdx +71 -0
  24. package/docs/self-hosting/advanced/observability/grafana.zh-CN.mdx +70 -0
  25. package/package.json +1 -1
  26. package/packages/model-runtime/package.json +1 -1
  27. package/packages/model-runtime/src/const/modelProvider.ts +64 -0
  28. package/packages/model-runtime/src/const/type.test.ts +9 -0
  29. package/packages/model-runtime/src/{BaseAI.ts → core/BaseAI.ts} +3 -4
  30. package/packages/model-runtime/src/{ModelRuntime.test.ts → core/ModelRuntime.test.ts} +3 -3
  31. package/packages/model-runtime/src/{ModelRuntime.ts → core/ModelRuntime.ts} +9 -8
  32. package/packages/model-runtime/src/core/RouterRuntime/baseRuntimeMap.ts +17 -0
  33. package/packages/model-runtime/src/{RouterRuntime → core/RouterRuntime}/createRuntime.ts +7 -7
  34. package/packages/model-runtime/src/{utils → core}/openaiCompatibleFactory/createImage.ts +3 -3
  35. package/packages/model-runtime/src/{utils → core}/openaiCompatibleFactory/index.test.ts +2 -2
  36. package/packages/model-runtime/src/{utils → core}/openaiCompatibleFactory/index.ts +9 -9
  37. package/packages/model-runtime/src/{utils → core}/streams/bedrock/claude.ts +1 -1
  38. package/packages/model-runtime/src/{utils → core}/streams/bedrock/llama.test.ts +1 -1
  39. package/packages/model-runtime/src/{utils → core}/streams/bedrock/llama.ts +1 -1
  40. package/packages/model-runtime/src/{utils → core}/streams/google-ai.test.ts +1 -1
  41. package/packages/model-runtime/src/{utils → core}/streams/google-ai.ts +1 -1
  42. package/packages/model-runtime/src/core/streams/model.test.ts +268 -0
  43. package/packages/model-runtime/src/{utils → core}/streams/ollama.test.ts +1 -1
  44. package/packages/model-runtime/src/{utils → core}/streams/ollama.ts +1 -1
  45. package/packages/model-runtime/src/{utils → core}/streams/openai/openai.test.ts +3 -4
  46. package/packages/model-runtime/src/{utils → core}/streams/openai/openai.ts +1 -1
  47. package/packages/model-runtime/src/{utils → core}/streams/openai/responsesStream.ts +1 -1
  48. package/packages/model-runtime/src/{utils → core}/streams/protocol.ts +2 -2
  49. package/packages/model-runtime/src/{utils → core}/streams/qwen.ts +1 -1
  50. package/packages/model-runtime/src/{utils → core}/streams/spark.ts +1 -1
  51. package/packages/model-runtime/src/core/streams/utils.test.ts +164 -0
  52. package/packages/model-runtime/src/{utils → core}/streams/vertex-ai.test.ts +1 -1
  53. package/packages/model-runtime/src/{utils → core}/streams/vertex-ai.ts +1 -1
  54. package/packages/model-runtime/src/index.ts +28 -27
  55. package/packages/model-runtime/src/providerTestUtils.ts +1 -1
  56. package/packages/model-runtime/src/{ai21 → providers/ai21}/index.test.ts +1 -1
  57. package/packages/model-runtime/src/{ai21 → providers/ai21}/index.ts +2 -2
  58. package/packages/model-runtime/src/{ai302 → providers/ai302}/index.ts +4 -4
  59. package/packages/model-runtime/src/{ai360 → providers/ai360}/index.test.ts +1 -1
  60. package/packages/model-runtime/src/{ai360 → providers/ai360}/index.ts +2 -2
  61. package/packages/model-runtime/src/{aihubmix → providers/aihubmix}/index.ts +5 -5
  62. package/packages/model-runtime/src/{akashchat → providers/akashchat}/index.test.ts +1 -1
  63. package/packages/model-runtime/src/{akashchat → providers/akashchat}/index.ts +5 -4
  64. package/packages/model-runtime/src/{anthropic → providers/anthropic}/index.test.ts +2 -2
  65. package/packages/model-runtime/src/{anthropic → providers/anthropic}/index.ts +10 -10
  66. package/packages/model-runtime/src/{azureOpenai → providers/azureOpenai}/index.test.ts +4 -4
  67. package/packages/model-runtime/src/{azureOpenai → providers/azureOpenai}/index.ts +11 -11
  68. package/packages/model-runtime/src/{azureai → providers/azureai}/index.ts +9 -9
  69. package/packages/model-runtime/src/{baichuan → providers/baichuan}/index.test.ts +1 -1
  70. package/packages/model-runtime/src/{baichuan → providers/baichuan}/index.ts +2 -2
  71. package/packages/model-runtime/src/{bedrock → providers/bedrock}/index.test.ts +1 -1
  72. package/packages/model-runtime/src/{bedrock → providers/bedrock}/index.ts +12 -12
  73. package/packages/model-runtime/src/{bfl → providers/bfl}/createImage.test.ts +25 -25
  74. package/packages/model-runtime/src/{bfl → providers/bfl}/createImage.ts +6 -6
  75. package/packages/model-runtime/src/{bfl → providers/bfl}/index.test.ts +1 -1
  76. package/packages/model-runtime/src/{bfl → providers/bfl}/index.ts +4 -4
  77. package/packages/model-runtime/src/{cloudflare → providers/cloudflare}/index.test.ts +1 -1
  78. package/packages/model-runtime/src/{cloudflare → providers/cloudflare}/index.ts +8 -8
  79. package/packages/model-runtime/src/{cohere → providers/cohere}/index.test.ts +1 -1
  80. package/packages/model-runtime/src/{cohere → providers/cohere}/index.ts +2 -2
  81. package/packages/model-runtime/src/providers/cometapi/index.test.ts +12 -0
  82. package/packages/model-runtime/src/{cometapi → providers/cometapi}/index.ts +3 -3
  83. package/packages/model-runtime/src/{deepseek → providers/deepseek}/index.test.ts +1 -1
  84. package/packages/model-runtime/src/{deepseek → providers/deepseek}/index.ts +3 -5
  85. package/packages/model-runtime/src/{fal → providers/fal}/index.test.ts +1 -1
  86. package/packages/model-runtime/src/{fal → providers/fal}/index.ts +4 -4
  87. package/packages/model-runtime/src/{fireworksai → providers/fireworksai}/index.test.ts +1 -1
  88. package/packages/model-runtime/src/{fireworksai → providers/fireworksai}/index.ts +2 -2
  89. package/packages/model-runtime/src/{giteeai → providers/giteeai}/index.test.ts +1 -1
  90. package/packages/model-runtime/src/{giteeai → providers/giteeai}/index.ts +3 -3
  91. package/packages/model-runtime/src/{github → providers/github}/index.test.ts +1 -1
  92. package/packages/model-runtime/src/{github → providers/github}/index.ts +5 -5
  93. package/packages/model-runtime/src/{google → providers/google}/createImage.test.ts +2 -2
  94. package/packages/model-runtime/src/{google → providers/google}/createImage.ts +5 -5
  95. package/packages/model-runtime/src/{google → providers/google}/index.test.ts +2 -2
  96. package/packages/model-runtime/src/{google → providers/google}/index.ts +13 -13
  97. package/packages/model-runtime/src/{groq → providers/groq}/index.test.ts +1 -1
  98. package/packages/model-runtime/src/{groq → providers/groq}/index.ts +3 -3
  99. package/packages/model-runtime/src/{higress → providers/higress}/index.ts +6 -5
  100. package/packages/model-runtime/src/{huggingface → providers/huggingface}/index.ts +4 -4
  101. package/packages/model-runtime/src/{hunyuan → providers/hunyuan}/index.test.ts +1 -1
  102. package/packages/model-runtime/src/{hunyuan → providers/hunyuan}/index.ts +2 -2
  103. package/packages/model-runtime/src/{infiniai → providers/infiniai}/index.ts +3 -3
  104. package/packages/model-runtime/src/{internlm → providers/internlm}/index.test.ts +1 -1
  105. package/packages/model-runtime/src/{internlm → providers/internlm}/index.ts +2 -2
  106. package/packages/model-runtime/src/{jina → providers/jina}/index.test.ts +1 -1
  107. package/packages/model-runtime/src/{jina → providers/jina}/index.ts +2 -2
  108. package/packages/model-runtime/src/{lmstudio → providers/lmstudio}/index.test.ts +1 -1
  109. package/packages/model-runtime/src/{lmstudio → providers/lmstudio}/index.ts +2 -2
  110. package/packages/model-runtime/src/{minimax → providers/minimax}/createImage.test.ts +2 -2
  111. package/packages/model-runtime/src/{minimax → providers/minimax}/createImage.ts +3 -3
  112. package/packages/model-runtime/src/{minimax → providers/minimax}/index.test.ts +1 -1
  113. package/packages/model-runtime/src/{minimax → providers/minimax}/index.ts +2 -2
  114. package/packages/model-runtime/src/{mistral → providers/mistral}/index.test.ts +1 -1
  115. package/packages/model-runtime/src/{mistral → providers/mistral}/index.ts +2 -2
  116. package/packages/model-runtime/src/{modelscope → providers/modelscope}/index.test.ts +1 -1
  117. package/packages/model-runtime/src/{modelscope → providers/modelscope}/index.ts +3 -3
  118. package/packages/model-runtime/src/{moonshot → providers/moonshot}/index.test.ts +1 -1
  119. package/packages/model-runtime/src/{moonshot → providers/moonshot}/index.ts +3 -3
  120. package/packages/model-runtime/src/{nebius → providers/nebius}/index.test.ts +1 -1
  121. package/packages/model-runtime/src/{nebius → providers/nebius}/index.ts +3 -3
  122. package/packages/model-runtime/src/{newapi → providers/newapi}/index.test.ts +4 -4
  123. package/packages/model-runtime/src/{newapi → providers/newapi}/index.ts +5 -5
  124. package/packages/model-runtime/src/{novita → providers/novita}/index.test.ts +1 -1
  125. package/packages/model-runtime/src/{novita → providers/novita}/index.ts +3 -3
  126. package/packages/model-runtime/src/{nvidia → providers/nvidia}/index.test.ts +1 -1
  127. package/packages/model-runtime/src/{nvidia → providers/nvidia}/index.ts +3 -3
  128. package/packages/model-runtime/src/{ollama → providers/ollama}/index.test.ts +3 -3
  129. package/packages/model-runtime/src/{ollama → providers/ollama}/index.ts +11 -10
  130. package/packages/model-runtime/src/{openai → providers/openai}/index.test.ts +1 -1
  131. package/packages/model-runtime/src/{openai → providers/openai}/index.ts +6 -5
  132. package/packages/model-runtime/src/{openrouter → providers/openrouter}/index.test.ts +1 -1
  133. package/packages/model-runtime/src/{openrouter → providers/openrouter}/index.ts +3 -3
  134. package/packages/model-runtime/src/{perplexity → providers/perplexity}/index.test.ts +1 -1
  135. package/packages/model-runtime/src/{perplexity → providers/perplexity}/index.ts +2 -2
  136. package/packages/model-runtime/src/{ppio → providers/ppio}/index.test.ts +1 -1
  137. package/packages/model-runtime/src/{ppio → providers/ppio}/index.ts +2 -2
  138. package/packages/model-runtime/src/{qiniu → providers/qiniu}/index.test.ts +2 -2
  139. package/packages/model-runtime/src/{qiniu → providers/qiniu}/index.ts +3 -3
  140. package/packages/model-runtime/src/{qwen → providers/qwen}/createImage.test.ts +2 -2
  141. package/packages/model-runtime/src/{qwen → providers/qwen}/createImage.ts +4 -4
  142. package/packages/model-runtime/src/{qwen → providers/qwen}/index.test.ts +1 -1
  143. package/packages/model-runtime/src/{qwen → providers/qwen}/index.ts +4 -4
  144. package/packages/model-runtime/src/{sambanova → providers/sambanova}/index.test.ts +1 -1
  145. package/packages/model-runtime/src/{sambanova → providers/sambanova}/index.ts +2 -2
  146. package/packages/model-runtime/src/{search1api → providers/search1api}/index.test.ts +1 -1
  147. package/packages/model-runtime/src/{search1api → providers/search1api}/index.ts +2 -2
  148. package/packages/model-runtime/src/{sensenova → providers/sensenova}/index.test.ts +1 -1
  149. package/packages/model-runtime/src/{sensenova → providers/sensenova}/index.ts +3 -3
  150. package/packages/model-runtime/src/{siliconcloud → providers/siliconcloud}/index.ts +4 -4
  151. package/packages/model-runtime/src/{spark → providers/spark}/index.test.ts +1 -1
  152. package/packages/model-runtime/src/{spark → providers/spark}/index.ts +3 -3
  153. package/packages/model-runtime/src/{stepfun → providers/stepfun}/index.test.ts +1 -1
  154. package/packages/model-runtime/src/{stepfun → providers/stepfun}/index.ts +2 -2
  155. package/packages/model-runtime/src/{taichu → providers/taichu}/index.test.ts +2 -2
  156. package/packages/model-runtime/src/{taichu → providers/taichu}/index.ts +2 -2
  157. package/packages/model-runtime/src/{tencentcloud → providers/tencentcloud}/index.test.ts +1 -1
  158. package/packages/model-runtime/src/{tencentcloud → providers/tencentcloud}/index.ts +2 -2
  159. package/packages/model-runtime/src/{togetherai → providers/togetherai}/index.test.ts +1 -1
  160. package/packages/model-runtime/src/{togetherai → providers/togetherai}/index.ts +2 -2
  161. package/packages/model-runtime/src/{upstage → providers/upstage}/index.test.ts +1 -1
  162. package/packages/model-runtime/src/{upstage → providers/upstage}/index.ts +2 -2
  163. package/packages/model-runtime/src/{v0 → providers/v0}/index.ts +3 -3
  164. package/packages/model-runtime/src/providers/vertexai/index.test.ts +54 -0
  165. package/packages/model-runtime/src/{vertexai → providers/vertexai}/index.ts +2 -2
  166. package/packages/model-runtime/src/providers/vllm/index.test.ts +12 -0
  167. package/packages/model-runtime/src/{vllm → providers/vllm}/index.ts +2 -2
  168. package/packages/model-runtime/src/{volcengine → providers/volcengine}/createImage.test.ts +2 -2
  169. package/packages/model-runtime/src/{volcengine → providers/volcengine}/createImage.ts +2 -2
  170. package/packages/model-runtime/src/{volcengine → providers/volcengine}/index.ts +3 -3
  171. package/packages/model-runtime/src/{wenxin → providers/wenxin}/index.test.ts +1 -1
  172. package/packages/model-runtime/src/{wenxin → providers/wenxin}/index.ts +2 -2
  173. package/packages/model-runtime/src/{xai → providers/xai}/index.test.ts +1 -1
  174. package/packages/model-runtime/src/{xai → providers/xai}/index.ts +3 -3
  175. package/packages/model-runtime/src/providers/xinference/index.test.ts +12 -0
  176. package/packages/model-runtime/src/{xinference → providers/xinference}/index.ts +2 -2
  177. package/packages/model-runtime/src/{zeroone → providers/zeroone}/index.test.ts +1 -1
  178. package/packages/model-runtime/src/{zeroone → providers/zeroone}/index.ts +3 -3
  179. package/packages/model-runtime/src/{zhipu → providers/zhipu}/index.test.ts +1 -1
  180. package/packages/model-runtime/src/{zhipu → providers/zhipu}/index.ts +5 -5
  181. package/packages/model-runtime/src/runtimeMap.ts +61 -61
  182. package/packages/model-runtime/src/types/index.ts +1 -0
  183. package/packages/model-runtime/src/types/type.ts +1 -65
  184. package/packages/model-runtime/src/utils/createError.test.ts +95 -0
  185. package/packages/model-runtime/src/utils/handleOpenAIError.test.ts +149 -0
  186. package/packages/model-runtime/src/utils/postProcessModelList.test.ts +190 -0
  187. package/packages/model-runtime/src/utils/response.test.ts +91 -0
  188. package/packages/types/src/fetch.ts +1 -1
  189. package/packages/types/src/message/base.ts +2 -3
  190. package/packages/types/src/user/settings/index.ts +1 -2
  191. package/packages/types/src/user/settings/modelProvider.ts +4 -3
  192. package/src/app/[variants]/(main)/settings/llm/ProviderList/HuggingFace/index.tsx +1 -1
  193. package/src/server/modules/ModelRuntime/index.test.ts +2 -4
  194. package/src/services/__tests__/chat.test.ts +13 -8
  195. package/src/store/user/slices/settings/initialState.ts +2 -3
  196. package/tsconfig.json +0 -2
  197. package/vitest.config.mts +0 -1
  198. package/packages/model-runtime/src/RouterRuntime/baseRuntimeMap.ts +0 -17
  199. /package/packages/model-runtime/src/{RouterRuntime → core/RouterRuntime}/createRuntime.test.ts +0 -0
  200. /package/packages/model-runtime/src/{RouterRuntime → core/RouterRuntime}/index.ts +0 -0
  201. /package/packages/model-runtime/src/{utils → core}/streams/__snapshots__/protocol.test.ts.snap +0 -0
  202. /package/packages/model-runtime/src/{utils → core}/streams/anthropic.test.ts +0 -0
  203. /package/packages/model-runtime/src/{utils → core}/streams/anthropic.ts +0 -0
  204. /package/packages/model-runtime/src/{utils → core}/streams/bedrock/common.ts +0 -0
  205. /package/packages/model-runtime/src/{utils → core}/streams/bedrock/index.ts +0 -0
  206. /package/packages/model-runtime/src/{utils → core}/streams/index.ts +0 -0
  207. /package/packages/model-runtime/src/{utils → core}/streams/model.ts +0 -0
  208. /package/packages/model-runtime/src/{utils → core}/streams/openai/__snapshots__/responsesStream.test.ts.snap +0 -0
  209. /package/packages/model-runtime/src/{utils → core}/streams/openai/index.ts +0 -0
  210. /package/packages/model-runtime/src/{utils → core}/streams/openai/responsesStream.test.ts +0 -0
  211. /package/packages/model-runtime/src/{utils → core}/streams/protocol.test.ts +0 -0
  212. /package/packages/model-runtime/src/{utils → core}/streams/qwen.test.ts +0 -0
  213. /package/packages/model-runtime/src/{utils → core}/streams/spark.test.ts +0 -0
  214. /package/packages/model-runtime/src/{utils → core}/streams/utils.ts +0 -0
  215. /package/packages/model-runtime/src/{anthropic → providers/anthropic}/handleAnthropicError.ts +0 -0
  216. /package/packages/model-runtime/src/{bfl → providers/bfl}/types.ts +0 -0
  217. /package/packages/model-runtime/src/{huggingface → providers/huggingface}/index.test.ts +0 -0
  218. /package/packages/model-runtime/src/{novita → providers/novita}/__snapshots__/index.test.ts.snap +0 -0
  219. /package/packages/model-runtime/src/{novita → providers/novita}/fixtures/models.json +0 -0
  220. /package/packages/model-runtime/src/{novita → providers/novita}/type.ts +0 -0
  221. /package/packages/model-runtime/src/{ollama → providers/ollama}/type.ts +0 -0
  222. /package/packages/model-runtime/src/{openai → providers/openai}/__snapshots__/index.test.ts.snap +0 -0
  223. /package/packages/model-runtime/src/{openai → providers/openai}/fixtures/openai-models.json +0 -0
  224. /package/packages/model-runtime/src/{openrouter → providers/openrouter}/fixtures/frontendModels.json +0 -0
  225. /package/packages/model-runtime/src/{openrouter → providers/openrouter}/fixtures/models.json +0 -0
  226. /package/packages/model-runtime/src/{openrouter → providers/openrouter}/type.ts +0 -0
  227. /package/packages/model-runtime/src/{ppio → providers/ppio}/__snapshots__/index.test.ts.snap +0 -0
  228. /package/packages/model-runtime/src/{ppio → providers/ppio}/fixtures/models.json +0 -0
  229. /package/packages/model-runtime/src/{ppio → providers/ppio}/type.ts +0 -0
  230. /package/packages/model-runtime/src/{togetherai → providers/togetherai}/fixtures/models.json +0 -0
  231. /package/packages/model-runtime/src/{togetherai → providers/togetherai}/type.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 1.127.3](https://github.com/lobehub/lobe-chat/compare/v1.127.2...v1.127.3)
6
+
7
+ <sup>Released on **2025-09-11**</sup>
8
+
9
+ #### ♻ Code Refactoring
10
+
11
+ - **misc**: Refactor model runtime folder structure and add more tests.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### Code refactoring
19
+
20
+ - **misc**: Refactor model runtime folder structure and add more tests, closes [#9210](https://github.com/lobehub/lobe-chat/issues/9210) ([7fe17e4](https://github.com/lobehub/lobe-chat/commit/7fe17e4))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
5
30
  ### [Version 1.127.2](https://github.com/lobehub/lobe-chat/compare/v1.127.1...v1.127.2)
6
31
 
7
32
  <sup>Released on **2025-09-11**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,13 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "improvements": [
5
+ "Refactor model runtime folder structure and add more tests."
6
+ ]
7
+ },
8
+ "date": "2025-09-11",
9
+ "version": "1.127.3"
10
+ },
2
11
  {
3
12
  "children": {
4
13
  "fixes": [
@@ -9,6 +9,9 @@ services:
9
9
  - '9001:9001' # MinIO Console
10
10
  - '${CASDOOR_PORT}:${CASDOOR_PORT}' # Casdoor
11
11
  - '${LOBE_PORT}:3210' # LobeChat
12
+ - '3000:3000' # Grafana
13
+ - '4318:4318' # otel-collector HTTP
14
+ - '4317:4317' # otel-collector gRPC
12
15
  command: tail -f /dev/null
13
16
  networks:
14
17
  - lobe-network
@@ -58,7 +61,7 @@ services:
58
61
  wait \$MINIO_PID
59
62
  "
60
63
 
61
- # version lock ref: https://github.com/lobehub/lobe-chat/pull/7331
64
+ # version lock ref: https://github.com/lobehub/lobe-chat/pull/7331
62
65
  casdoor:
63
66
  image: casbin/casdoor:v2.13.0
64
67
  container_name: lobe-casdoor
@@ -162,11 +165,90 @@ services:
162
165
  wait \$LOBE_PID
163
166
  "
164
167
 
168
+ grafana:
169
+ profiles:
170
+ - otel
171
+ image: grafana/grafana:12.2.0-17419259409
172
+ container_name: lobe-grafana
173
+ network_mode: 'service:network-service'
174
+ restart: always
175
+ environment:
176
+ - GF_AUTH_ANONYMOUS_ENABLED=true
177
+ - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
178
+ - GF_AUTH_DISABLE_LOGIN_FORM=true
179
+ - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor
180
+ volumes:
181
+ - grafana_data:/var/lib/grafana
182
+ - ./grafana/dashboards:/etc/grafana/provisioning/dashboards
183
+ - ./grafana/datasources:/etc/grafana/provisioning/datasources
184
+ depends_on:
185
+ - tempo
186
+ - prometheus
187
+
188
+ tempo:
189
+ profiles:
190
+ - otel
191
+ image: grafana/tempo:latest
192
+ container_name: lobe-tempo
193
+ network_mode: 'service:network-service'
194
+ restart: always
195
+ volumes:
196
+ - ./tempo/tempo.yaml:/etc/tempo.yaml
197
+ - tempo_data:/var/tempo
198
+ command: ['-config.file=/etc/tempo.yaml']
199
+
200
+ prometheus:
201
+ profiles:
202
+ - otel
203
+ image: prom/prometheus
204
+ container_name: lobe-prometheus
205
+ network_mode: 'service:network-service'
206
+ restart: always
207
+ volumes:
208
+ - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
209
+ - prometheus_data:/prometheus
210
+ command:
211
+ - '--config.file=/etc/prometheus/prometheus.yml'
212
+ - '--web.enable-otlp-receiver'
213
+ - '--web.enable-remote-write-receiver'
214
+ - '--enable-feature=exemplar-storage'
215
+
216
+ otel-collector:
217
+ profiles:
218
+ - otel
219
+ image: otel/opentelemetry-collector
220
+ container_name: lobe-otel-collector
221
+ network_mode: 'service:network-service'
222
+ restart: always
223
+ volumes:
224
+ - ./otel-collector/collector-config.yaml:/etc/otelcol/config.yaml
225
+ command: ['--config', '/etc/otelcol/config.yaml']
226
+ depends_on:
227
+ - tempo
228
+ - prometheus
229
+
230
+ otel-tracing-test:
231
+ profiles:
232
+ - otel-test
233
+ image: ghcr.io/grafana/xk6-client-tracing:v0.0.7
234
+ container_name: lobe-otel-tracing-test
235
+ network_mode: 'service:network-service'
236
+ restart: always
237
+ environment:
238
+ - ENDPOINT=127.0.0.1:4317
239
+
165
240
  volumes:
166
241
  data:
167
242
  driver: local
168
243
  s3_data:
169
244
  driver: local
245
+ grafana_data:
246
+ driver: local
247
+ tempo_data:
248
+ driver: local
249
+ prometheus_data:
250
+ driver: local
251
+
170
252
 
171
253
  networks:
172
254
  lobe-network:
@@ -0,0 +1,42 @@
1
+ # Proxy, if you need it
2
+ # HTTP_PROXY=http://localhost:7890
3
+ # HTTPS_PROXY=http://localhost:7890
4
+
5
+
6
+ # Other environment variables, as needed. You can refer to the environment variables configuration for the client version, making sure not to have ACCESS_CODE.
7
+ # OPENAI_API_KEY=sk-xxxx
8
+ # OPENAI_PROXY_URL=https://api.openai.com/v1
9
+ # OPENAI_MODEL_LIST=...
10
+
11
+
12
+ # ===========================
13
+ # ====== Preset config ======
14
+ # ===========================
15
+ # if no special requirements, no need to change
16
+ LOBE_PORT=3210
17
+ CASDOOR_PORT=8000
18
+ MINIO_PORT=9000
19
+ APP_URL=http://localhost:3210
20
+ AUTH_URL=http://localhost:3210/api/auth
21
+
22
+ # Postgres related, which are the necessary environment variables for DB
23
+ LOBE_DB_NAME=lobechat
24
+ POSTGRES_PASSWORD=uWNZugjBqixf8dxC
25
+
26
+ AUTH_CASDOOR_ISSUER=http://localhost:8000
27
+ # Casdoor secret
28
+ AUTH_CASDOOR_ID=a387a4892ee19b1a2249
29
+ AUTH_CASDOOR_SECRET=dbf205949d704de81b0b5b3603174e23fbecc354
30
+ CASDOOR_WEBHOOK_SECRET=casdoor-secret
31
+
32
+ # MinIO S3 configuration
33
+ MINIO_ROOT_USER=admin
34
+ MINIO_ROOT_PASSWORD=YOUR_MINIO_PASSWORD
35
+
36
+ # Configure the bucket information of MinIO
37
+ S3_PUBLIC_DOMAIN=http://localhost:9000
38
+ S3_ENDPOINT=http://localhost:9000
39
+ MINIO_LOBE_BUCKET=lobe
40
+
41
+ # Configure for casdoor
42
+ origin=http://localhost:8000
@@ -0,0 +1,42 @@
1
+ # Proxy,如果你需要的话(比如你使用 GitHub 作为鉴权服务提供商)
2
+ # HTTP_PROXY=http://localhost:7890
3
+ # HTTPS_PROXY=http://localhost:7890
4
+
5
+
6
+ # 其他环境变量,视需求而定,可以参照客户端版本的环境变量配置,注意不要有 ACCESS_CODE
7
+ # OPENAI_API_KEY=sk-xxxx
8
+ # OPENAI_PROXY_URL=https://api.openai.com/v1
9
+ # OPENAI_MODEL_LIST=...
10
+
11
+
12
+ # ===================
13
+ # ===== 预设配置 =====
14
+ # ===================
15
+ # 如没有特殊需要不用更改
16
+ LOBE_PORT=3210
17
+ CASDOOR_PORT=8000
18
+ MINIO_PORT=9000
19
+ APP_URL=http://localhost:3210
20
+ AUTH_URL=http://localhost:3210/api/auth
21
+
22
+ # Postgres 相关,也即 DB 必须的环境变量
23
+ LOBE_DB_NAME=lobechat
24
+ POSTGRES_PASSWORD=uWNZugjBqixf8dxC
25
+
26
+ AUTH_CASDOOR_ISSUER=http://localhost:8000
27
+ # Casdoor secret
28
+ AUTH_CASDOOR_ID=a387a4892ee19b1a2249
29
+ AUTH_CASDOOR_SECRET=dbf205949d704de81b0b5b3603174e23fbecc354
30
+ CASDOOR_WEBHOOK_SECRET=casdoor-secret
31
+
32
+ # MinIO S3 配置
33
+ MINIO_ROOT_USER=admin
34
+ MINIO_ROOT_PASSWORD=YOUR_MINIO_PASSWORD
35
+
36
+ # 在下方配置 minio 中添加的桶
37
+ S3_PUBLIC_DOMAIN=http://localhost:9000
38
+ S3_ENDPOINT=http://localhost:9000
39
+ MINIO_LOBE_BUCKET=lobe
40
+
41
+ # 为 casdoor 配置
42
+ origin=http://localhost:8000
@@ -0,0 +1,251 @@
1
+ name: lobe-chat-database
2
+ services:
3
+ network-service:
4
+ image: alpine
5
+ container_name: lobe-network
6
+ restart: always
7
+ ports:
8
+ - '${MINIO_PORT}:${MINIO_PORT}' # MinIO API
9
+ - '9001:9001' # MinIO Console
10
+ - '${CASDOOR_PORT}:${CASDOOR_PORT}' # Casdoor
11
+ - '${LOBE_PORT}:3210' # LobeChat
12
+ - '3000:3000' # Grafana
13
+ - '4318:4318' # otel-collector HTTP
14
+ - '4317:4317' # otel-collector gRPC
15
+ command: tail -f /dev/null
16
+ networks:
17
+ - lobe-network
18
+
19
+ postgresql:
20
+ image: pgvector/pgvector:pg17
21
+ container_name: lobe-postgres
22
+ ports:
23
+ - '5432:5432'
24
+ volumes:
25
+ - './data:/var/lib/postgresql/data'
26
+ environment:
27
+ - 'POSTGRES_DB=${LOBE_DB_NAME}'
28
+ - 'POSTGRES_PASSWORD=${POSTGRES_PASSWORD}'
29
+ healthcheck:
30
+ test: ['CMD-SHELL', 'pg_isready -U postgres']
31
+ interval: 5s
32
+ timeout: 5s
33
+ retries: 5
34
+ restart: always
35
+ networks:
36
+ - lobe-network
37
+
38
+ minio:
39
+ image: minio/minio:RELEASE.2025-04-22T22-12-26Z
40
+ container_name: lobe-minio
41
+ network_mode: 'service:network-service'
42
+ volumes:
43
+ - './s3_data:/etc/minio/data'
44
+ environment:
45
+ - 'MINIO_API_CORS_ALLOW_ORIGIN=*'
46
+ env_file:
47
+ - .env
48
+ restart: always
49
+ entrypoint: >
50
+ /bin/sh -c "
51
+ minio server /etc/minio/data --address ':${MINIO_PORT}' --console-address ':9001' &
52
+ MINIO_PID=\$!
53
+ while ! curl -s http://localhost:${MINIO_PORT}/minio/health/live; do
54
+ echo 'Waiting for MinIO to start...'
55
+ sleep 1
56
+ done
57
+ sleep 5
58
+ mc alias set myminio http://localhost:${MINIO_PORT} ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD}
59
+ echo 'Creating bucket ${MINIO_LOBE_BUCKET}'
60
+ mc mb myminio/${MINIO_LOBE_BUCKET}
61
+ wait \$MINIO_PID
62
+ "
63
+
64
+ # version lock ref: https://github.com/lobehub/lobe-chat/pull/7331
65
+ casdoor:
66
+ image: casbin/casdoor:v2.13.0
67
+ container_name: lobe-casdoor
68
+ entrypoint: /bin/sh -c './server --createDatabase=true'
69
+ network_mode: 'service:network-service'
70
+ depends_on:
71
+ postgresql:
72
+ condition: service_healthy
73
+ environment:
74
+ httpport: ${CASDOOR_PORT}
75
+ RUNNING_IN_DOCKER: 'true'
76
+ driverName: 'postgres'
77
+ dataSourceName: 'user=postgres password=${POSTGRES_PASSWORD} host=postgresql port=5432 sslmode=disable dbname=casdoor'
78
+ runmode: 'dev'
79
+ volumes:
80
+ - ./init_data.json:/init_data.json
81
+ env_file:
82
+ - .env
83
+
84
+ searxng:
85
+ image: searxng/searxng
86
+ container_name: lobe-searxng
87
+ volumes:
88
+ - './searxng-settings.yml:/etc/searxng/settings.yml'
89
+ environment:
90
+ - 'SEARXNG_SETTINGS_FILE=/etc/searxng/settings.yml'
91
+ restart: always
92
+ networks:
93
+ - lobe-network
94
+ env_file:
95
+ - .env
96
+
97
+ grafana:
98
+ image: grafana/grafana:12.2.0-17419259409
99
+ container_name: lobe-grafana
100
+ network_mode: 'service:network-service'
101
+ restart: always
102
+ environment:
103
+ - GF_AUTH_ANONYMOUS_ENABLED=true
104
+ - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
105
+ - GF_AUTH_DISABLE_LOGIN_FORM=true
106
+ - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor
107
+ volumes:
108
+ - grafana_data:/var/lib/grafana
109
+ - ./grafana/dashboards:/etc/grafana/provisioning/dashboards
110
+ - ./grafana/datasources:/etc/grafana/provisioning/datasources
111
+ depends_on:
112
+ - tempo
113
+ - prometheus
114
+
115
+ tempo:
116
+ image: grafana/tempo:latest
117
+ container_name: lobe-tempo
118
+ network_mode: 'service:network-service'
119
+ restart: always
120
+ volumes:
121
+ - ./tempo/tempo.yaml:/etc/tempo.yaml
122
+ - tempo_data:/var/tempo
123
+ command: ['-config.file=/etc/tempo.yaml']
124
+
125
+ prometheus:
126
+ image: prom/prometheus
127
+ container_name: lobe-prometheus
128
+ network_mode: 'service:network-service'
129
+ restart: always
130
+ volumes:
131
+ - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
132
+ - prometheus_data:/prometheus
133
+ command:
134
+ - '--config.file=/etc/prometheus/prometheus.yml'
135
+ - '--web.enable-otlp-receiver'
136
+ - '--web.enable-remote-write-receiver'
137
+ - '--enable-feature=exemplar-storage'
138
+
139
+ otel-collector:
140
+ image: otel/opentelemetry-collector
141
+ container_name: lobe-otel-collector
142
+ network_mode: 'service:network-service'
143
+ restart: always
144
+ volumes:
145
+ - ./otel-collector/collector-config.yaml:/etc/otelcol/config.yaml
146
+ command: ['--config', '/etc/otelcol/config.yaml']
147
+ depends_on:
148
+ - tempo
149
+ - prometheus
150
+
151
+ otel-tracing-test:
152
+ profiles:
153
+ - otel-test
154
+ image: ghcr.io/grafana/xk6-client-tracing:v0.0.7
155
+ container_name: lobe-otel-tracing-test
156
+ network_mode: 'service:network-service'
157
+ restart: always
158
+ environment:
159
+ - ENDPOINT=127.0.0.1:4317
160
+
161
+ lobe:
162
+ image: lobehub/lobe-chat-database
163
+ container_name: lobe-chat
164
+ network_mode: 'service:network-service'
165
+ depends_on:
166
+ postgresql:
167
+ condition: service_healthy
168
+ network-service:
169
+ condition: service_started
170
+ minio:
171
+ condition: service_started
172
+ casdoor:
173
+ condition: service_started
174
+
175
+ environment:
176
+ - 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
177
+ - 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ='
178
+ - 'NEXT_AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg'
179
+ - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
180
+ - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
181
+ - 'S3_ENABLE_PATH_STYLE=1'
182
+ - 'S3_ACCESS_KEY=${MINIO_ROOT_USER}'
183
+ - 'S3_ACCESS_KEY_ID=${MINIO_ROOT_USER}'
184
+ - 'S3_SECRET_ACCESS_KEY=${MINIO_ROOT_PASSWORD}'
185
+ - 'LLM_VISION_IMAGE_USE_BASE64=1'
186
+ - 'S3_SET_ACL=0'
187
+ - 'SEARXNG_URL=http://searxng:8080'
188
+ - 'OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf'
189
+ - 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://localhost:4318/v1/metrics'
190
+ - 'OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf'
191
+ - 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4318/v1/traces'
192
+ env_file:
193
+ - .env
194
+ restart: always
195
+ entrypoint: >
196
+ /bin/sh -c "
197
+ /bin/node /app/startServer.js &
198
+ LOBE_PID=\$!
199
+ sleep 3
200
+ if [ $(wget --timeout=5 --spider --server-response ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -c 'HTTP/1.1 200 OK') -eq 0 ]; then
201
+ echo '⚠️Warning: Unable to fetch OIDC configuration from Casdoor'
202
+ echo 'Request URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
203
+ echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
204
+ echo ''
205
+ echo '⚠️注意:无法从 Casdoor 获取 OIDC 配置'
206
+ echo '请求 URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
207
+ echo '了解更多:https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration'
208
+ echo ''
209
+ else
210
+ if ! wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep 'issuer' | grep ${AUTH_CASDOOR_ISSUER}; then
211
+ printf '❌Error: The Auth issuer is conflict, Issuer in OIDC configuration is: %s' \$(wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -E 'issuer.*' | awk -F '\"' '{print \$4}')
212
+ echo ' , but the issuer in .env file is: ${AUTH_CASDOOR_ISSUER} '
213
+ echo 'Request URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
214
+ echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
215
+ echo ''
216
+ printf '❌错误:Auth 的 issuer 冲突,OIDC 配置中的 issuer 是:%s' \$(wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -E 'issuer.*' | awk -F '\"' '{print \$4}')
217
+ echo ' , 但 .env 文件中的 issuer 是:${AUTH_CASDOOR_ISSUER} '
218
+ echo '请求 URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
219
+ echo '了解更多:https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration'
220
+ echo ''
221
+ fi
222
+ fi
223
+ if [ $(wget --timeout=5 --spider --server-response ${S3_ENDPOINT}/minio/health/live 2>&1 | grep -c 'HTTP/1.1 200 OK') -eq 0 ]; then
224
+ echo '⚠️Warning: Unable to fetch MinIO health status'
225
+ echo 'Request URL: ${S3_ENDPOINT}/minio/health/live'
226
+ echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
227
+ echo ''
228
+ echo '⚠️注意:无法获取 MinIO 健康状态'
229
+ echo '请求 URL: ${S3_ENDPOINT}/minio/health/live'
230
+ echo '了解更多:https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration'
231
+ echo ''
232
+ fi
233
+ wait \$LOBE_PID
234
+ "
235
+
236
+ volumes:
237
+ data:
238
+ driver: local
239
+ s3_data:
240
+ driver: local
241
+ grafana_data:
242
+ driver: local
243
+ tempo_data:
244
+ driver: local
245
+ prometheus_data:
246
+ driver: local
247
+
248
+
249
+ networks:
250
+ lobe-network:
251
+ driver: bridge
@@ -0,0 +1,15 @@
1
+ apiVersion: 1
2
+
3
+ prune: true
4
+
5
+ datasources:
6
+ - name: Prometheus
7
+ type: prometheus
8
+ uid: prometheus
9
+ access: proxy
10
+ orgId: 1
11
+ url: http://127.0.0.1:9090
12
+ basicAuth: false
13
+ isDefault: false
14
+ version: 1
15
+ editable: false
@@ -0,0 +1,16 @@
1
+ apiVersion: 1
2
+
3
+ prune: true
4
+
5
+ datasources:
6
+ - name: Tempo
7
+ type: tempo
8
+ access: proxy
9
+ orgId: 1
10
+ url: http://127.0.0.1:3200
11
+ basicAuth: false
12
+ isDefault: true
13
+ version: 1
14
+ editable: false
15
+ apiVersion: 1
16
+ uid: tempo
@@ -0,0 +1,45 @@
1
+ extensions:
2
+ health_check:
3
+ endpoint: 127.0.0.1:13133
4
+
5
+ receivers:
6
+ prometheus:
7
+ config:
8
+ scrape_configs:
9
+ - job_name: otel-collector-metrics
10
+ scrape_interval: 10s
11
+ static_configs:
12
+ - targets: ["127.0.0.1:8888"]
13
+
14
+ otlp:
15
+ protocols:
16
+ grpc:
17
+ endpoint: 0.0.0.0:4317
18
+ http:
19
+ endpoint: 0.0.0.0:4318
20
+
21
+ exporters:
22
+ prometheusremotewrite:
23
+ endpoint: http://127.0.0.1:9090/api/v1/write
24
+ tls:
25
+ insecure: true
26
+
27
+ otlp:
28
+ endpoint: 127.0.0.1:14317
29
+ tls:
30
+ insecure: true
31
+
32
+ debug:
33
+ verbosity: detailed
34
+
35
+ service:
36
+ pipelines:
37
+ metrics:
38
+ receivers: [prometheus]
39
+ exporters: [prometheusremotewrite]
40
+ traces:
41
+ receivers: [otlp]
42
+ exporters: [otlp]
43
+ logs:
44
+ receivers: [otlp]
45
+ exporters: [debug]
@@ -0,0 +1,11 @@
1
+ global:
2
+ scrape_interval: 15s
3
+ evaluation_interval: 15s
4
+
5
+ scrape_configs:
6
+ - job_name: "prometheus"
7
+ static_configs:
8
+ - targets: ["127.0.0.1:9090"]
9
+ - job_name: "tempo"
10
+ static_configs:
11
+ - targets: ["127.0.0.1:3200"]
@@ -0,0 +1,58 @@
1
+ stream_over_http_enabled: true
2
+ server:
3
+ http_listen_port: 3200
4
+ log_level: info
5
+
6
+ query_frontend:
7
+ search:
8
+ duration_slo: 5s
9
+ throughput_bytes_slo: 1.073741824e+09
10
+ metadata_slo:
11
+ duration_slo: 5s
12
+ throughput_bytes_slo: 1.073741824e+09
13
+ trace_by_id:
14
+ duration_slo: 5s
15
+
16
+ distributor:
17
+ max_attribute_bytes: 10485760
18
+ receivers:
19
+ otlp:
20
+ protocols:
21
+ grpc:
22
+ endpoint: 127.0.0.1:14317
23
+ http:
24
+ endpoint: 127.0.0.1:14318
25
+
26
+ ingester:
27
+ max_block_duration: 5m # cut the headblock when this much time passes. this is being set for demo purposes and should probably be left alone normally
28
+
29
+ compactor:
30
+ compaction:
31
+ block_retention: 1h # overall Tempo trace retention. set for demo purposes
32
+
33
+ metrics_generator:
34
+ registry:
35
+ external_labels:
36
+ source: tempo
37
+ cluster: docker-compose
38
+ storage:
39
+ path: /var/tempo/generator/wal
40
+ remote_write:
41
+ - url: http://127.0.0.1:9090/api/v1/write
42
+ send_exemplars: true
43
+ traces_storage:
44
+ path: /var/tempo/generator/traces
45
+
46
+ storage:
47
+ trace:
48
+ backend: local # backend configuration to use
49
+ wal:
50
+ path: /var/tempo/wal # where to store the wal locally
51
+ local:
52
+ path: /var/tempo/blocks
53
+
54
+ overrides:
55
+ defaults:
56
+ metrics_generator:
57
+ processors: [service-graphs, span-metrics, local-blocks] # enables metrics generator
58
+ generate_native_histograms: both
@@ -0,0 +1,44 @@
1
+ # Proxy, if you need it
2
+ # HTTP_PROXY=http://localhost:7890
3
+ # HTTPS_PROXY=http://localhost:7890
4
+
5
+
6
+ # Other environment variables, as needed. You can refer to the environment variables configuration for the client version, making sure not to have ACCESS_CODE.
7
+ # OPENAI_API_KEY=sk-xxxx
8
+ # OPENAI_PROXY_URL=https://api.openai.com/v1
9
+ # OPENAI_MODEL_LIST=...
10
+
11
+
12
+ # ===========================
13
+ # ====== Preset config ======
14
+ # ===========================
15
+ # if no special requirements, no need to change
16
+ LOBE_PORT=3210
17
+ CASDOOR_PORT=8000
18
+ MINIO_PORT=9000
19
+ APP_URL=http://localhost:3210
20
+ AUTH_URL=http://localhost:3210/api/auth
21
+
22
+ # Postgres related, which are the necessary environment variables for DB
23
+ LOBE_DB_NAME=lobechat
24
+ POSTGRES_PASSWORD=uWNZugjBqixf8dxC
25
+
26
+ AUTH_CASDOOR_ISSUER=http://localhost:8000
27
+ # Casdoor secret
28
+ AUTH_CASDOOR_ID=a387a4892ee19b1a2249
29
+ AUTH_CASDOOR_SECRET=dbf205949d704de81b0b5b3603174e23fbecc354
30
+ CASDOOR_WEBHOOK_SECRET=casdoor-secret
31
+
32
+ # MinIO S3 configuration
33
+ MINIO_ROOT_USER=admin
34
+ MINIO_ROOT_PASSWORD=YOUR_MINIO_PASSWORD
35
+
36
+ # Configure the bucket information of MinIO
37
+ S3_PUBLIC_DOMAIN=http://localhost:9000
38
+ S3_ENDPOINT=http://localhost:9000
39
+ MINIO_LOBE_BUCKET=lobe
40
+
41
+ GF_SECURITY_ADMIN_PASSWORD=YOUR_GRAFANA_PASSWORD
42
+
43
+ # Configure for casdoor
44
+ origin=http://localhost:8000