Skip to content

Commit d7e0540

Browse files
feat: add tailchat (#89)
Co-authored-by: zhengkunwang223 <[email protected]>
1 parent 5600b1d commit d7e0540

File tree

5 files changed

+280
-7
lines changed

5 files changed

+280
-7
lines changed

apps/list.json

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@
260260
"github": "https://github.com/requarks/wiki",
261261
"document": "https://docs.requarks.io/"
262262
},
263-
{
263+
{
264264
"key": "uptime-kuma",
265265
"name": "Uptime Kuma",
266266
"tags": ["Tool"],
@@ -333,7 +333,7 @@
333333
"github": "https://github.com/php/php-src",
334334
"document": "https://www.php.net/docs.php"
335335
},
336-
{
336+
{
337337
"key": "gitea",
338338
"name": "Gitea",
339339
"tags": ["CI/CD"],
@@ -347,7 +347,7 @@
347347
"github": "https://github.com/go-gitea/gitea",
348348
"document": "https://docs.gitea.io/"
349349
},
350-
{
350+
{
351351
"key": "qBittorrent",
352352
"name": "qBittorrent",
353353
"tags": ["Tool"],
@@ -361,7 +361,7 @@
361361
"github": "https://github.com/qbittorrent/qBittorrent",
362362
"document": "http://wiki.qbittorrent.org/"
363363
},
364-
{
364+
{
365365
"key": "jellyfin",
366366
"name": "Jellyfin",
367367
"tags": ["Tool"],
@@ -375,7 +375,7 @@
375375
"github": "https://github.com/jellyfin/jellyfin",
376376
"document": "https://jellyfin.org/docs/"
377377
},
378-
{
378+
{
379379
"key": "alist",
380380
"name": "alist",
381381
"tags": ["Tool"],
@@ -389,7 +389,7 @@
389389
"github": "https://github.com/alist-org/alist",
390390
"document": "https://alist.nn.ci/zh/"
391391
},
392-
{
392+
{
393393
"key": "watchtower",
394394
"name": "watchtower",
395395
"tags": ["Tool"],
@@ -403,7 +403,7 @@
403403
"github": "https://github.com/containrrr/watchtower",
404404
"document": "https://containrrr.dev/watchtower/"
405405
},
406-
{
406+
{
407407
"key": "flarum",
408408
"name": "flarum",
409409
"tags": ["WebSite"],
@@ -431,6 +431,20 @@
431431
"github": "https://github.com/xiahao90/adminer",
432432
"document": "https://github.com/xiahao90/adminer"
433433
},
434+
{
435+
"key": "tailchat",
436+
"name": "Tailchat",
437+
"tags": ["WebSite"],
438+
"versions": ["1.7.3"],
439+
"shortDescZh": "在你自己工作区的下一代noIM应用",
440+
"shortDescEn": "The next-generation noIM Application in your own workspace",
441+
"type": "website",
442+
"limit": 1,
443+
"crossVersionUpdate": true,
444+
"website": "https://tailchat.msgbyte.com/",
445+
"github": "https://github.com/msgbyte/tailchat",
446+
"document": "https://tailchat.msgbyte.com/docs/intro"
447+
},
434448
{
435449
"key": "nps",
436450
"name": "nps",

apps/tailchat/metadata/logo.png

7.21 KB
Loading
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# 关于 1panel 安装
2+
3+
本应用不包含开放平台OAuth相关能力与Admin管理平台
4+
5+
如需要相关能力需要另行安装.
6+
7+
# 本应用介绍
8+
9+
官方网站: [https://tailchat.msgbyte.com/](https://tailchat.msgbyte.com/)
10+
11+
Github: [https://github.com/msgbyte/tailchat](https://github.com/msgbyte/tailchat)
12+
13+
![tailchat](https://socialify.git.ci/msgbyte/tailchat/image?description=1&font=Inter&forks=1&issues=1&language=1&logo=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F86033898%3Fs%3D200%26v%3D4&name=1&owner=1&pattern=Circuit%20Board&stargazers=1&theme=Light)
14+
15+
16+
## 在您自己工作区中的下一代 noIM 应用程序
17+
18+
### 不仅仅是另一个 `Slack`, `Discord`, `Rocket.Chat`....
19+
20+
如果您对`noIM`的概念感兴趣,欢迎阅读我的博客:
21+
- [是时候正式步入noIM的时代了](https://tailchat.msgbyte.com/zh-Hans/blog/2023/03/01/the-era-of-noIM)
22+
23+
官方文档: [https://tailchat.msgbyte.com/](https://tailchat.msgbyte.com/)
24+
25+
**Nightly版** 在线体验: [https://nightly.paw.msgbyte.com/](https://nightly.paw.msgbyte.com/)
26+
27+
> Nightly版 为自动编译版本, 即每次提交代码都会自动编译。
28+
> 不保证数据的可靠性与稳定性
29+
30+
## 动机
31+
32+
目前现有的IM应用都仅仅把目光局限在聊天本身,而IM天然作为一个多人协作方式,在我看来应当能够承担更多的职责,将外部的应用以IM为转发方式形成自己独特的工作流。
33+
34+
因此,我提出了 `noIM` 的观点,意味着 **Not only IM**。而是设计了以IM为中心,第三方应用为增强功能,中间以插件系统作为胶水连接层的个人/团队高度自定义的应用平台。
35+
36+
为此,将功能进行抽象,并且花费了大量时间设计底层的机制,诞生了 `Tailchat` 这样的一个从底层设计之初就为了拓展而存在的即时通讯应用。通过`Tailchat`的插件系统,开发者可以很轻松的将喜欢的应用以一种非常自然的方式作为`Tailchat`的一部分。与传统的类似如`Slack`的集成方式不同的是,`Tailchat`的集成更加自由,就仿佛天然就是一个原生的功能一般。
37+
38+
## 特性
39+
40+
- 注重隐私,只有被邀请的成员才能加入群组
41+
- 防止陌生人,只有通过昵称+一串随机的数字才能添加好友
42+
- 二维的群组空间,通过频道来分割不同的话题
43+
- 高度自定义的群组空间, 通过分组和拖拽来创建独创的群组空间。同时可以通过更多的插件来增加更多的能力
44+
- 可以严谨,也可以乐趣。通过插件的组合可以创造用于不同场景的 Tailchat。可以是面向娱乐,也可以是面向企业
45+
- 后端微服务架构,已经为大规模部署做好了准备。不用担心用户量大了以后怎么办
46+
47+
## 性能与拓展
48+
49+
`Tailchat` 是一个基于 **React** + **Typescript** 的现代开源 noIM 应用程序
50+
51+
前端微内核架构+后端微服务架构,`Tailchat` 已经为集群化部署做好了准备。
52+
53+
前端通过插件机制为应用赋能,对于 `Tailchat` 的二次开发来说非常简单且易用。
Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
{
2+
"formFields": [
3+
{
4+
"type": "number",
5+
"labelZh": "端口",
6+
"labelEn": "Port",
7+
"required": true,
8+
"default": 11000,
9+
"rule": "paramPort",
10+
"envKey": "PANEL_APP_PORT_HTTP",
11+
"edit": true
12+
},
13+
{
14+
"type": "service",
15+
"key": "redis",
16+
"labelZh": "缓存服务服务",
17+
"labelEn": "Redis Service",
18+
"required": true,
19+
"default": "",
20+
"envKey": "REDIS_HOST",
21+
"edit": true
22+
},
23+
{
24+
"type": "number",
25+
"labelZh": "缓存服务服务端口",
26+
"labelEn": "Redis Service Port",
27+
"required": true,
28+
"default": "6379",
29+
"envKey": "REDIS_PORT",
30+
"rule": "paramPort",
31+
"edit": true
32+
},
33+
{
34+
"type": "password",
35+
"labelZh": "缓存服务服务密码",
36+
"labelEn": "Redis Service Password",
37+
"required": true,
38+
"default": "",
39+
"rule": "paramCommon",
40+
"envKey": "REDIS_PASS",
41+
"edit": true
42+
},
43+
{
44+
"type": "service",
45+
"key": "mongodb",
46+
"labelZh": "数据库服务",
47+
"labelEn": "Database Service",
48+
"required": true,
49+
"default": "",
50+
"envKey": "MONGO_HOST",
51+
"edit": true
52+
},
53+
{
54+
"type": "number",
55+
"labelZh": "数据库服务端口",
56+
"labelEn": "Database Service Port",
57+
"required": true,
58+
"default": "27017",
59+
"envKey": "MONGO_PORT",
60+
"rule": "paramPort",
61+
"edit": true
62+
},
63+
{
64+
"type": "text",
65+
"labelZh": "数据库名",
66+
"labelEn": "Database Name",
67+
"required": true,
68+
"default": "tailchat",
69+
"rule": "paramCommon",
70+
"envKey": "MONGO_DB",
71+
"edit": true
72+
},
73+
{
74+
"type": "text",
75+
"labelZh": "数据库用户名",
76+
"labelEn": "Database User Name",
77+
"required": true,
78+
"default": "",
79+
"rule": "paramCommon",
80+
"envKey": "MONGO_USER",
81+
"edit": true
82+
},
83+
{
84+
"type": "password",
85+
"labelZh": "数据库密码",
86+
"labelEn": "Database User Password",
87+
"required": true,
88+
"default": "",
89+
"rule": "paramCommon",
90+
"envKey": "MONGO_PASS",
91+
"edit": true
92+
},
93+
{
94+
"type": "service",
95+
"key": "minio",
96+
"labelZh": "文件存储服务",
97+
"labelEn": "Storage Service",
98+
"required": true,
99+
"default": "",
100+
"envKey": "MINIO_HOST",
101+
"edit": true
102+
},
103+
{
104+
"type": "number",
105+
"labelZh": "文件存储服务API端口",
106+
"labelEn": "Storage Service Port",
107+
"required": true,
108+
"default": "9001",
109+
"envKey": "MINIO_PORT",
110+
"rule": "paramPort",
111+
"edit": true
112+
},
113+
{
114+
"type": "text",
115+
"labelZh": "文件存储服务用户名",
116+
"labelEn": "User",
117+
"required": true,
118+
"default": "",
119+
"rule": "paramCommon",
120+
"envKey": "MINIO_USER",
121+
"edit": true
122+
},
123+
{
124+
"type": "password",
125+
"labelZh": "文件存储服务密码",
126+
"labelEn": "User",
127+
"required": true,
128+
"default": "",
129+
"rule": "paramComplexity",
130+
"envKey": "MINIO_PASS",
131+
"edit": true
132+
},
133+
{
134+
"type": "text",
135+
"labelZh": "秘钥",
136+
"labelEn": "Secret",
137+
"required": true,
138+
"default": "any-random-text",
139+
"random": true,
140+
"rule": "paramExtUrl",
141+
"envKey": "SECRET",
142+
"edit": true
143+
},
144+
{
145+
"type": "text",
146+
"labelZh": "外部访问地址",
147+
"labelEn": "External URL",
148+
"required": true,
149+
"default": "http://localhost:11000",
150+
"rule": "paramExtUrl",
151+
"envKey": "API_URL",
152+
"edit": true
153+
},
154+
{
155+
"type": "text",
156+
"labelZh": "邮件服务发送人",
157+
"labelEn": "SMTP Sender",
158+
"required": false,
159+
"default": "",
160+
"rule": "paramExtUrl",
161+
"envKey": "SMTP_SENDER",
162+
"edit": true
163+
},
164+
{
165+
"type": "text",
166+
"labelZh": "邮件服务URI",
167+
"labelEn": "SMTP Sender",
168+
"required": false,
169+
"default": "",
170+
"rule": "paramExtUrl",
171+
"envKey": "SMTP_URI",
172+
"edit": true
173+
}
174+
]
175+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
version: "3"
2+
services:
3+
tailchat:
4+
container_name: ${CONTAINER_NAME}
5+
restart: unless-stopped
6+
image: "moonrailgun/tailchat:1.7.3"
7+
networks:
8+
- 1panel-network
9+
environment:
10+
- SERVICEDIR=services,plugins
11+
- LOGGER=true
12+
- LOGLEVEL=info
13+
- PORT=11000
14+
- REDIS_URL=redis://:${REDIS_PASS}@${REDIS_HOST}:${REDIS_PORT}
15+
- TRANSPORTER=redis://:${REDIS_PASS}@${REDIS_HOST}:${REDIS_PORT}
16+
- MONGO_URL=mongodb://${MONGO_USER}:${MONGO_PASS}@${MONGO_HOST}:${MONGO_PORT}/${MONGO_DB}?authSource=admin
17+
- MINIO_URL=${MINIO_HOST}:${MINIO_PORT}
18+
- MINIO_USER=${MINIO_USER}
19+
- MINIO_PASS=${MINIO_PASS}
20+
- SMTP_SENDER=${SMTP_SENDER}
21+
- SMTP_URI=${SMTP_URI}
22+
- SECRET=${SECRET}
23+
- API_URL=${API_URL}
24+
ports:
25+
- "${PANEL_APP_PORT_HTTP}:11000"
26+
labels:
27+
createdBy: "Apps"
28+
29+
networks:
30+
1panel-network:
31+
external: true

0 commit comments

Comments
 (0)