@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
package/CHANGELOG.md CHANGED
@@ -2,6 +2,56 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 2.1.1](https://github.com/lobehub/lobe-chat/compare/v2.1.0...v2.1.1)
6
+
7
+ <sup>Released on **2026-01-30**</sup>
8
+
9
+ #### 🐛 Bug Fixes
10
+
11
+ - **misc**: Correct desktop download URL path.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### What's fixed
19
+
20
+ - **misc**: Correct desktop download URL path, closes [#11990](https://github.com/lobehub/lobe-chat/issues/11990) ([e46df98](https://github.com/lobehub/lobe-chat/commit/e46df98))
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
+
30
+ ## [Version 2.1.0](https://github.com/lobehub/lobe-chat/compare/v2.0.13...v2.1.0)
31
+
32
+ <sup>Released on **2026-01-30**</sup>
33
+
34
+ #### ✨ Features
35
+
36
+ - **misc**: Refactor cron job UI and use runtime enableBusinessFeatures flag.
37
+
38
+ <br/>
39
+
40
+ <details>
41
+ <summary><kbd>Improvements and Fixes</kbd></summary>
42
+
43
+ #### What's improved
44
+
45
+ - **misc**: Refactor cron job UI and use runtime enableBusinessFeatures flag, closes [#11975](https://github.com/lobehub/lobe-chat/issues/11975) ([104a19a](https://github.com/lobehub/lobe-chat/commit/104a19a))
46
+
47
+ </details>
48
+
49
+ <div align="right">
50
+
51
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
52
+
53
+ </div>
54
+
5
55
  ### [Version 2.0.13](https://github.com/lobehub/lobe-chat/compare/v2.0.12...v2.0.13)
6
56
 
7
57
  <sup>Released on **2026-01-29**</sup>
package/changelog/v2.json CHANGED
@@ -1,4 +1,22 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "fixes": [
5
+ "Correct desktop download URL path."
6
+ ]
7
+ },
8
+ "date": "2026-01-30",
9
+ "version": "2.1.1"
10
+ },
11
+ {
12
+ "children": {
13
+ "features": [
14
+ "Refactor cron job UI and use runtime enableBusinessFeatures flag."
15
+ ]
16
+ },
17
+ "date": "2026-01-30",
18
+ "version": "2.1.0"
19
+ },
2
20
  {
3
21
  "children": {
4
22
  "improvements": [
@@ -0,0 +1,35 @@
1
+ # Proxy, if you need it
2
+ # HTTP_PROXY=http://localhost:7890
3
+ # HTTPS_PROXY=http://localhost:7890
4
+
5
+ # Allowed email addresses for login, separated by commas
6
+ # When set, only emails in the list can log in, other users cannot log in
7
+ # Leave empty to allow all users to register
8
+ # AUTH_ALLOWED_EMAILS=user1@example.com,user2@example.com
9
+
10
+
11
+ # ===========================
12
+ # ====== Preset config ======
13
+ # ===========================
14
+ # if no special requirements, no need to change
15
+ LOBE_PORT=3210
16
+ RUSTFS_PORT=9000
17
+ APP_URL=http://localhost:3210
18
+ # INTERNAL_APP_URL is optional, used for server-to-server calls
19
+ # to bypass CDN/proxy. If not set, defaults to APP_URL.
20
+ # Example: INTERNAL_APP_URL=http://localhost:3210
21
+
22
+ # Postgres related, which are the necessary environment variables for DB
23
+ LOBE_DB_NAME=lobechat
24
+ POSTGRES_PASSWORD=uWNZugjBqixf8dxC
25
+
26
+ # RUSTFS S3 configuration
27
+ RUSTFS_ACCESS_KEY=admin
28
+ RUSTFS_SECRET_KEY=YOUR_RUSTFS_PASSWORD
29
+
30
+ # Configure the bucket information of RUSTFS
31
+ S3_PUBLIC_DOMAIN=http://localhost:9000
32
+ S3_ENDPOINT=http://localhost:9000
33
+ RUSTFS_LOBE_BUCKET=lobe
34
+
35
+ JWKS_KEY={"keys":[{"d":"PVoFyqyrGstB8wU52S7gqqQQdZLtin_thcEM0nrNtqp9U-NlKLlhgEcWp5t89ycgvhsAzmrRbezGj4JBTr3jn7eWdwQpPJNYiipnsgeJn0pwsB0H2dMqtavxinoPVXkMTOuGHMTFhhyguFBw2JbIL0PTQUcUlXjv40OoJpYHZeggSxgfV-TuxjwW8Ll4-n84M5IOi6A53RvioE-Hm1iyIc2XLBCfyOu-SbAQYi8HzrA64kCxobAB0peLQMiAzfZmwPKiGOhnhKrAlYmG02qFnbUYiJu_-AXwsAyGv9S9i6dwK7QXaGGWYyis8LlPpd_JmPrBnrWomwDlI045NUMWZQ","dp":"OSXI2NBBZl2r0Dpf4-1z44A_jC5lOyXtJhXQYnSXy5eIuxTJcEtkUYagGEwnREO4Q3t-4J-lT_6Y71M1ZlgKG1upwfw1O4aE3vGpHOik9iZYYCjA8fe5uBfOpX1ELmOtHNoHRhMtyjuPxSFXLlSp3bgcF1f3F40ClukdvXCx0Mc","dq":"m6hNdfj-F8E_7nUlX2nG95OffkFrhHTo67ML9aPgpvFwBlzg-hk5LwtxMfUzngqWF78TMl0JDm7vS1bz0xlWqXqu8pFPoTUnUoWgYfvuyHLBwR5TgccQkfoKbkSMzYNy8VJPXZeyIjVXsW98tZvj-NZF-M9Pke_EWJm-jjXCu_8","e":"AQAB","kty":"RSA","n":"piffosMS0HOSgsSr_zQkXYaQt1kOCD73VR0b2XJD6UdQCKPbnBOzTIuA_xowX61QVsl5pCZLTw8ERC3r2Nlxj5Rp_H6RuOT7ioUqlbnxSGnfuAn8dFupY3A-sf9HVDOvtJdlS-nO9yA4wWU-A50zZ1Mf0pPZlUZE6dUQfsJFi5yXaNAybyk3U4VpMO_SXAilWEHVhiO0F0ccpJMCkT47AeXmYH9MlWwIGcay0UiAsdrs8J-q1arZ7Mbq0oxHmUXJG0vwRvAL8KnCEi8cJ3e2kKCRcr-BQCujsHUyUl6f_ATwSVuTHdAR1IzIcW37v27h3WQK_v0ffQM1NstamDX5vQ","p":"4myVm2M5cZGvVXsOmWUTUG87VC1GlQcL5tmMNSGSpQCL8yWZ1vANkmCxSMptrKB4dU9DAB3On6_oMhW1pJ3uYNGSW49BcmJoLkiWKeg5zWFnKPQNuThQmY1sCCubtKhBQgaYUr7TVzN9smrDV3zCu9MlRl-XPwnEmWaDII3g-f8","q":"u9v4IOEsb4l2Y3eWKE2bwJh5fJRR4vivaYA7U-1-OpvDwB3A48Rey9IL1ucXqE5G1Du8BtijPm5oSAar5uzrjtg1bZ9gevif6DnBGaIRE7LnSrUsTPfZwzntJ1rTaGiVe_pAdnTKXXaH6DxygXxH4wvGgA44V3TTfBXQUcjzdEM","qi":"lDBnSPKkRnYqQvbqVD1LxzqBPEeqEA3GyCqMj6fIZNgoEaBSLi0TSsUyGZ5mahX3KO35vKAZa5jvGjhvUGUiXycq8KvRZdeGK45vJdwZT2TiXiDwo9IQgJcbFMpxaB9DhjX2x0yqxgUY5ca75jLqbMuKBKBN0PVqIr9jlHkR8_s","use":"sig","kid":"6823046760c5d460","alg":"RS256"}]}
@@ -0,0 +1,31 @@
1
+ # Proxy,如果你需要的话(比如你使用 GitHub 作为鉴权服务提供商)
2
+ # HTTP_PROXY=http://localhost:7890
3
+ # HTTPS_PROXY=http://localhost:7890
4
+
5
+ # 允许登录的邮箱地址,用英文逗号分隔
6
+ # 设置后只有列表中的邮箱可以登录,其他用户可以注册但无法登录
7
+ # 留空则允许所有用户注册登录
8
+ # AUTH_ALLOWED_EMAILS=user1@example.com,user2@example.com
9
+
10
+ # ===================
11
+ # ===== 预设配置 =====
12
+ # ===================
13
+ # 如没有特殊需要不用更改
14
+ LOBE_PORT=3210
15
+ RUSTFS_PORT=9000
16
+ APP_URL=http://localhost:3210
17
+
18
+ # Postgres 相关,也即 DB 必须的环境变量
19
+ LOBE_DB_NAME=lobehub
20
+ POSTGRES_PASSWORD=uWNZugjBqixf8dxC
21
+
22
+ # RustFS S3 配置
23
+ RUSTFS_ACCESS_KEY=admin
24
+ RUSTFS_SECRET_KEY=YOUR_RUSTFS_PASSWORD
25
+
26
+ # 在下方配置 rustfs 中添加的桶
27
+ S3_PUBLIC_DOMAIN=http://localhost:9000
28
+ S3_ENDPOINT=http://localhost:9000
29
+ RUSTFS_LOBE_BUCKET=lobe
30
+
31
+ JWKS_KEY={"keys":[{"d":"PVoFyqyrGstB8wU52S7gqqQQdZLtin_thcEM0nrNtqp9U-NlKLlhgEcWp5t89ycgvhsAzmrRbezGj4JBTr3jn7eWdwQpPJNYiipnsgeJn0pwsB0H2dMqtavxinoPVXkMTOuGHMTFhhyguFBw2JbIL0PTQUcUlXjv40OoJpYHZeggSxgfV-TuxjwW8Ll4-n84M5IOi6A53RvioE-Hm1iyIc2XLBCfyOu-SbAQYi8HzrA64kCxobAB0peLQMiAzfZmwPKiGOhnhKrAlYmG02qFnbUYiJu_-AXwsAyGv9S9i6dwK7QXaGGWYyis8LlPpd_JmPrBnrWomwDlI045NUMWZQ","dp":"OSXI2NBBZl2r0Dpf4-1z44A_jC5lOyXtJhXQYnSXy5eIuxTJcEtkUYagGEwnREO4Q3t-4J-lT_6Y71M1ZlgKG1upwfw1O4aE3vGpHOik9iZYYCjA8fe5uBfOpX1ELmOtHNoHRhMtyjuPxSFXLlSp3bgcF1f3F40ClukdvXCx0Mc","dq":"m6hNdfj-F8E_7nUlX2nG95OffkFrhHTo67ML9aPgpvFwBlzg-hk5LwtxMfUzngqWF78TMl0JDm7vS1bz0xlWqXqu8pFPoTUnUoWgYfvuyHLBwR5TgccQkfoKbkSMzYNy8VJPXZeyIjVXsW98tZvj-NZF-M9Pke_EWJm-jjXCu_8","e":"AQAB","kty":"RSA","n":"piffosMS0HOSgsSr_zQkXYaQt1kOCD73VR0b2XJD6UdQCKPbnBOzTIuA_xowX61QVsl5pCZLTw8ERC3r2Nlxj5Rp_H6RuOT7ioUqlbnxSGnfuAn8dFupY3A-sf9HVDOvtJdlS-nO9yA4wWU-A50zZ1Mf0pPZlUZE6dUQfsJFi5yXaNAybyk3U4VpMO_SXAilWEHVhiO0F0ccpJMCkT47AeXmYH9MlWwIGcay0UiAsdrs8J-q1arZ7Mbq0oxHmUXJG0vwRvAL8KnCEi8cJ3e2kKCRcr-BQCujsHUyUl6f_ATwSVuTHdAR1IzIcW37v27h3WQK_v0ffQM1NstamDX5vQ","p":"4myVm2M5cZGvVXsOmWUTUG87VC1GlQcL5tmMNSGSpQCL8yWZ1vANkmCxSMptrKB4dU9DAB3On6_oMhW1pJ3uYNGSW49BcmJoLkiWKeg5zWFnKPQNuThQmY1sCCubtKhBQgaYUr7TVzN9smrDV3zCu9MlRl-XPwnEmWaDII3g-f8","q":"u9v4IOEsb4l2Y3eWKE2bwJh5fJRR4vivaYA7U-1-OpvDwB3A48Rey9IL1ucXqE5G1Du8BtijPm5oSAar5uzrjtg1bZ9gevif6DnBGaIRE7LnSrUsTPfZwzntJ1rTaGiVe_pAdnTKXXaH6DxygXxH4wvGgA44V3TTfBXQUcjzdEM","qi":"lDBnSPKkRnYqQvbqVD1LxzqBPEeqEA3GyCqMj6fIZNgoEaBSLi0TSsUyGZ5mahX3KO35vKAZa5jvGjhvUGUiXycq8KvRZdeGK45vJdwZT2TiXiDwo9IQgJcbFMpxaB9DhjX2x0yqxgUY5ca75jLqbMuKBKBN0PVqIr9jlHkR8_s","use":"sig","kid":"6823046760c5d460","alg":"RS256"}]}
@@ -0,0 +1,18 @@
1
+ {
2
+ "ID": "",
3
+ "Statement": [
4
+ {
5
+ "Sid": "",
6
+ "Effect": "Allow",
7
+ "Principal": {
8
+ "AWS": ["*"]
9
+ },
10
+ "Action": ["s3:GetObject"],
11
+ "NotAction": [],
12
+ "Resource": ["arn:aws:s3:::lobe/*"],
13
+ "NotResource": [],
14
+ "Condition": {}
15
+ }
16
+ ],
17
+ "Version": "2012-10-17"
18
+ }
@@ -0,0 +1,148 @@
1
+ name: lobehub
2
+ services:
3
+ network-service:
4
+ image: alpine
5
+ container_name: lobe-network
6
+ restart: always
7
+ ports:
8
+ - '${RUSTFS_PORT}:9000' # RustFS API
9
+ - '9001:9001' # RustFS Console
10
+ - '${LOBE_PORT}:3210' # LobeChat
11
+ command: tail -f /dev/null
12
+ networks:
13
+ - lobe-network
14
+
15
+ postgresql:
16
+ image: paradedb/paradedb:latest-pg17
17
+ container_name: lobe-postgres
18
+ ports:
19
+ - '5432:5432'
20
+ volumes:
21
+ - './data:/var/lib/postgresql/data'
22
+ environment:
23
+ - 'POSTGRES_DB=${LOBE_DB_NAME}'
24
+ - 'POSTGRES_PASSWORD=${POSTGRES_PASSWORD}'
25
+ healthcheck:
26
+ test: ['CMD-SHELL', 'pg_isready -U postgres']
27
+ interval: 5s
28
+ timeout: 5s
29
+ retries: 5
30
+ restart: always
31
+ networks:
32
+ - lobe-network
33
+
34
+ redis:
35
+ image: redis:7-alpine
36
+ container_name: lobe-redis
37
+ ports:
38
+ - '6379:6379'
39
+ command: redis-server --save 60 1000 --appendonly yes
40
+ volumes:
41
+ - 'redis_data:/data'
42
+ healthcheck:
43
+ test: ['CMD', 'redis-cli', 'ping']
44
+ interval: 5s
45
+ timeout: 3s
46
+ retries: 5
47
+ restart: always
48
+ networks:
49
+ - lobe-network
50
+
51
+ rustfs:
52
+ image: rustfs/rustfs:latest
53
+ container_name: lobe-rustfs
54
+ network_mode: 'service:network-service'
55
+ environment:
56
+ - RUSTFS_CONSOLE_ENABLE=true
57
+ - RUSTFS_ACCESS_KEY=${RUSTFS_ACCESS_KEY}
58
+ - RUSTFS_SECRET_KEY=${RUSTFS_SECRET_KEY}
59
+ volumes:
60
+ - rustfs-data:/data
61
+ healthcheck:
62
+ test: ["CMD-SHELL", "wget -qO- http://localhost:9000/health >/dev/null 2>&1 || exit 1"]
63
+ interval: 5s
64
+ timeout: 3s
65
+ retries: 30
66
+ command: ["--access-key","${RUSTFS_ACCESS_KEY}","--secret-key","${RUSTFS_SECRET_KEY}","/data"]
67
+
68
+ rustfs-init:
69
+ image: minio/mc:latest
70
+ container_name: lobe-rustfs-init
71
+ depends_on:
72
+ rustfs:
73
+ condition: service_healthy
74
+ volumes:
75
+ - ./bucket.config.json:/bucket.config.json:ro
76
+ entrypoint: /bin/sh
77
+ command: -c '
78
+ set -eux;
79
+ echo "S3_ACCESS_KEY=${RUSTFS_ACCESS_KEY}, S3_SECRET_KEY=${RUSTFS_SECRET_KEY}";
80
+ mc --version;
81
+ mc alias set rustfs "http://network-service:9000" "${RUSTFS_ACCESS_KEY}" "${RUSTFS_SECRET_KEY}";
82
+ mc ls rustfs || true;
83
+ mc mb "rustfs/lobe" --ignore-existing;
84
+ mc admin info rustfs || true;
85
+ mc anonymous set-json "/bucket.config.json" "rustfs/lobe";
86
+ '
87
+ restart: "no"
88
+ networks:
89
+ - lobe-network
90
+
91
+ searxng:
92
+ image: searxng/searxng
93
+ container_name: lobe-searxng
94
+ volumes:
95
+ - './searxng-settings.yml:/etc/searxng/settings.yml'
96
+ environment:
97
+ - 'SEARXNG_SETTINGS_FILE=/etc/searxng/settings.yml'
98
+ restart: always
99
+ networks:
100
+ - lobe-network
101
+ env_file:
102
+ - .env
103
+
104
+ lobe:
105
+ image: lobehub/lobehub
106
+ container_name: lobehub
107
+ network_mode: 'service:network-service'
108
+ depends_on:
109
+ postgresql:
110
+ condition: service_healthy
111
+ network-service:
112
+ condition: service_started
113
+ rustfs:
114
+ condition: service_healthy
115
+ rustfs-init:
116
+ condition: service_completed_successfully
117
+ redis:
118
+ condition: service_healthy
119
+ environment:
120
+ - 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ='
121
+ - 'AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg'
122
+ - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
123
+ - 'S3_BUCKET=${RUSTFS_LOBE_BUCKET}'
124
+ - 'S3_ENABLE_PATH_STYLE=1'
125
+ - 'S3_ACCESS_KEY=${RUSTFS_ACCESS_KEY}'
126
+ - 'S3_ACCESS_KEY_ID=${RUSTFS_ACCESS_KEY}'
127
+ - 'S3_SECRET_ACCESS_KEY=${RUSTFS_SECRET_KEY}'
128
+ - 'LLM_VISION_IMAGE_USE_BASE64=1'
129
+ - 'S3_SET_ACL=0'
130
+ - 'SEARXNG_URL=http://searxng:8080'
131
+ - 'REDIS_URL=redis://redis:6379'
132
+ - 'REDIS_PREFIX=lobechat'
133
+ - 'REDIS_TLS=0'
134
+ env_file:
135
+ - .env
136
+ restart: always
137
+
138
+ volumes:
139
+ data:
140
+ driver: local
141
+ redis_data:
142
+ driver: local
143
+ rustfs-data:
144
+ driver: local
145
+
146
+ networks:
147
+ lobe-network:
148
+ driver: bridge