mirror of
https://github.com/QYG2297248353/appstore-1panel.git
synced 2024-11-10 18:06:56 +08:00
feat: add tailchat (#89)
Co-authored-by: zhengkunwang223 <31820853+zhengkunwang223@users.noreply.github.com>
This commit is contained in:
parent
5600b1def0
commit
d7e05406b7
@ -260,7 +260,7 @@
|
||||
"github": "https://github.com/requarks/wiki",
|
||||
"document": "https://docs.requarks.io/"
|
||||
},
|
||||
{
|
||||
{
|
||||
"key": "uptime-kuma",
|
||||
"name": "Uptime Kuma",
|
||||
"tags": ["Tool"],
|
||||
@ -333,7 +333,7 @@
|
||||
"github": "https://github.com/php/php-src",
|
||||
"document": "https://www.php.net/docs.php"
|
||||
},
|
||||
{
|
||||
{
|
||||
"key": "gitea",
|
||||
"name": "Gitea",
|
||||
"tags": ["CI/CD"],
|
||||
@ -347,7 +347,7 @@
|
||||
"github": "https://github.com/go-gitea/gitea",
|
||||
"document": "https://docs.gitea.io/"
|
||||
},
|
||||
{
|
||||
{
|
||||
"key": "qBittorrent",
|
||||
"name": "qBittorrent",
|
||||
"tags": ["Tool"],
|
||||
@ -361,7 +361,7 @@
|
||||
"github": "https://github.com/qbittorrent/qBittorrent",
|
||||
"document": "http://wiki.qbittorrent.org/"
|
||||
},
|
||||
{
|
||||
{
|
||||
"key": "jellyfin",
|
||||
"name": "Jellyfin",
|
||||
"tags": ["Tool"],
|
||||
@ -375,7 +375,7 @@
|
||||
"github": "https://github.com/jellyfin/jellyfin",
|
||||
"document": "https://jellyfin.org/docs/"
|
||||
},
|
||||
{
|
||||
{
|
||||
"key": "alist",
|
||||
"name": "alist",
|
||||
"tags": ["Tool"],
|
||||
@ -389,7 +389,7 @@
|
||||
"github": "https://github.com/alist-org/alist",
|
||||
"document": "https://alist.nn.ci/zh/"
|
||||
},
|
||||
{
|
||||
{
|
||||
"key": "watchtower",
|
||||
"name": "watchtower",
|
||||
"tags": ["Tool"],
|
||||
@ -403,7 +403,7 @@
|
||||
"github": "https://github.com/containrrr/watchtower",
|
||||
"document": "https://containrrr.dev/watchtower/"
|
||||
},
|
||||
{
|
||||
{
|
||||
"key": "flarum",
|
||||
"name": "flarum",
|
||||
"tags": ["WebSite"],
|
||||
@ -431,6 +431,20 @@
|
||||
"github": "https://github.com/xiahao90/adminer",
|
||||
"document": "https://github.com/xiahao90/adminer"
|
||||
},
|
||||
{
|
||||
"key": "tailchat",
|
||||
"name": "Tailchat",
|
||||
"tags": ["WebSite"],
|
||||
"versions": ["1.7.3"],
|
||||
"shortDescZh": "在你自己工作区的下一代noIM应用",
|
||||
"shortDescEn": "The next-generation noIM Application in your own workspace",
|
||||
"type": "website",
|
||||
"limit": 1,
|
||||
"crossVersionUpdate": true,
|
||||
"website": "https://tailchat.msgbyte.com/",
|
||||
"github": "https://github.com/msgbyte/tailchat",
|
||||
"document": "https://tailchat.msgbyte.com/docs/intro"
|
||||
},
|
||||
{
|
||||
"key": "nps",
|
||||
"name": "nps",
|
||||
|
BIN
apps/tailchat/metadata/logo.png
Normal file
BIN
apps/tailchat/metadata/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
53
apps/tailchat/versions/1.7.3/README.md
Normal file
53
apps/tailchat/versions/1.7.3/README.md
Normal file
@ -0,0 +1,53 @@
|
||||
# 关于 1panel 安装
|
||||
|
||||
本应用不包含开放平台OAuth相关能力与Admin管理平台
|
||||
|
||||
如需要相关能力需要另行安装.
|
||||
|
||||
# 本应用介绍
|
||||
|
||||
官方网站: [https://tailchat.msgbyte.com/](https://tailchat.msgbyte.com/)
|
||||
|
||||
Github: [https://github.com/msgbyte/tailchat](https://github.com/msgbyte/tailchat)
|
||||
|
||||
![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)
|
||||
|
||||
|
||||
## 在您自己工作区中的下一代 noIM 应用程序
|
||||
|
||||
### 不仅仅是另一个 `Slack`, `Discord`, `Rocket.Chat`....
|
||||
|
||||
如果您对`noIM`的概念感兴趣,欢迎阅读我的博客:
|
||||
- [是时候正式步入noIM的时代了](https://tailchat.msgbyte.com/zh-Hans/blog/2023/03/01/the-era-of-noIM)
|
||||
|
||||
官方文档: [https://tailchat.msgbyte.com/](https://tailchat.msgbyte.com/)
|
||||
|
||||
**Nightly版** 在线体验: [https://nightly.paw.msgbyte.com/](https://nightly.paw.msgbyte.com/)
|
||||
|
||||
> Nightly版 为自动编译版本, 即每次提交代码都会自动编译。
|
||||
> 不保证数据的可靠性与稳定性
|
||||
|
||||
## 动机
|
||||
|
||||
目前现有的IM应用都仅仅把目光局限在聊天本身,而IM天然作为一个多人协作方式,在我看来应当能够承担更多的职责,将外部的应用以IM为转发方式形成自己独特的工作流。
|
||||
|
||||
因此,我提出了 `noIM` 的观点,意味着 **Not only IM**。而是设计了以IM为中心,第三方应用为增强功能,中间以插件系统作为胶水连接层的个人/团队高度自定义的应用平台。
|
||||
|
||||
为此,将功能进行抽象,并且花费了大量时间设计底层的机制,诞生了 `Tailchat` 这样的一个从底层设计之初就为了拓展而存在的即时通讯应用。通过`Tailchat`的插件系统,开发者可以很轻松的将喜欢的应用以一种非常自然的方式作为`Tailchat`的一部分。与传统的类似如`Slack`的集成方式不同的是,`Tailchat`的集成更加自由,就仿佛天然就是一个原生的功能一般。
|
||||
|
||||
## 特性
|
||||
|
||||
- 注重隐私,只有被邀请的成员才能加入群组
|
||||
- 防止陌生人,只有通过昵称+一串随机的数字才能添加好友
|
||||
- 二维的群组空间,通过频道来分割不同的话题
|
||||
- 高度自定义的群组空间, 通过分组和拖拽来创建独创的群组空间。同时可以通过更多的插件来增加更多的能力
|
||||
- 可以严谨,也可以乐趣。通过插件的组合可以创造用于不同场景的 Tailchat。可以是面向娱乐,也可以是面向企业
|
||||
- 后端微服务架构,已经为大规模部署做好了准备。不用担心用户量大了以后怎么办
|
||||
|
||||
## 性能与拓展
|
||||
|
||||
`Tailchat` 是一个基于 **React** + **Typescript** 的现代开源 noIM 应用程序
|
||||
|
||||
前端微内核架构+后端微服务架构,`Tailchat` 已经为集群化部署做好了准备。
|
||||
|
||||
前端通过插件机制为应用赋能,对于 `Tailchat` 的二次开发来说非常简单且易用。
|
175
apps/tailchat/versions/1.7.3/config.json
Normal file
175
apps/tailchat/versions/1.7.3/config.json
Normal file
@ -0,0 +1,175 @@
|
||||
{
|
||||
"formFields": [
|
||||
{
|
||||
"type": "number",
|
||||
"labelZh": "端口",
|
||||
"labelEn": "Port",
|
||||
"required": true,
|
||||
"default": 11000,
|
||||
"rule": "paramPort",
|
||||
"envKey": "PANEL_APP_PORT_HTTP",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "service",
|
||||
"key": "redis",
|
||||
"labelZh": "缓存服务服务",
|
||||
"labelEn": "Redis Service",
|
||||
"required": true,
|
||||
"default": "",
|
||||
"envKey": "REDIS_HOST",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"labelZh": "缓存服务服务端口",
|
||||
"labelEn": "Redis Service Port",
|
||||
"required": true,
|
||||
"default": "6379",
|
||||
"envKey": "REDIS_PORT",
|
||||
"rule": "paramPort",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "password",
|
||||
"labelZh": "缓存服务服务密码",
|
||||
"labelEn": "Redis Service Password",
|
||||
"required": true,
|
||||
"default": "",
|
||||
"rule": "paramCommon",
|
||||
"envKey": "REDIS_PASS",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "service",
|
||||
"key": "mongodb",
|
||||
"labelZh": "数据库服务",
|
||||
"labelEn": "Database Service",
|
||||
"required": true,
|
||||
"default": "",
|
||||
"envKey": "MONGO_HOST",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"labelZh": "数据库服务端口",
|
||||
"labelEn": "Database Service Port",
|
||||
"required": true,
|
||||
"default": "27017",
|
||||
"envKey": "MONGO_PORT",
|
||||
"rule": "paramPort",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"labelZh": "数据库名",
|
||||
"labelEn": "Database Name",
|
||||
"required": true,
|
||||
"default": "tailchat",
|
||||
"rule": "paramCommon",
|
||||
"envKey": "MONGO_DB",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"labelZh": "数据库用户名",
|
||||
"labelEn": "Database User Name",
|
||||
"required": true,
|
||||
"default": "",
|
||||
"rule": "paramCommon",
|
||||
"envKey": "MONGO_USER",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "password",
|
||||
"labelZh": "数据库密码",
|
||||
"labelEn": "Database User Password",
|
||||
"required": true,
|
||||
"default": "",
|
||||
"rule": "paramCommon",
|
||||
"envKey": "MONGO_PASS",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "service",
|
||||
"key": "minio",
|
||||
"labelZh": "文件存储服务",
|
||||
"labelEn": "Storage Service",
|
||||
"required": true,
|
||||
"default": "",
|
||||
"envKey": "MINIO_HOST",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"labelZh": "文件存储服务API端口",
|
||||
"labelEn": "Storage Service Port",
|
||||
"required": true,
|
||||
"default": "9001",
|
||||
"envKey": "MINIO_PORT",
|
||||
"rule": "paramPort",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"labelZh": "文件存储服务用户名",
|
||||
"labelEn": "User",
|
||||
"required": true,
|
||||
"default": "",
|
||||
"rule": "paramCommon",
|
||||
"envKey": "MINIO_USER",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "password",
|
||||
"labelZh": "文件存储服务密码",
|
||||
"labelEn": "User",
|
||||
"required": true,
|
||||
"default": "",
|
||||
"rule": "paramComplexity",
|
||||
"envKey": "MINIO_PASS",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"labelZh": "秘钥",
|
||||
"labelEn": "Secret",
|
||||
"required": true,
|
||||
"default": "any-random-text",
|
||||
"random": true,
|
||||
"rule": "paramExtUrl",
|
||||
"envKey": "SECRET",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"labelZh": "外部访问地址",
|
||||
"labelEn": "External URL",
|
||||
"required": true,
|
||||
"default": "http://localhost:11000",
|
||||
"rule": "paramExtUrl",
|
||||
"envKey": "API_URL",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"labelZh": "邮件服务发送人",
|
||||
"labelEn": "SMTP Sender",
|
||||
"required": false,
|
||||
"default": "",
|
||||
"rule": "paramExtUrl",
|
||||
"envKey": "SMTP_SENDER",
|
||||
"edit": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"labelZh": "邮件服务URI",
|
||||
"labelEn": "SMTP Sender",
|
||||
"required": false,
|
||||
"default": "",
|
||||
"rule": "paramExtUrl",
|
||||
"envKey": "SMTP_URI",
|
||||
"edit": true
|
||||
}
|
||||
]
|
||||
}
|
31
apps/tailchat/versions/1.7.3/docker-compose.yml
Normal file
31
apps/tailchat/versions/1.7.3/docker-compose.yml
Normal file
@ -0,0 +1,31 @@
|
||||
version: "3"
|
||||
services:
|
||||
tailchat:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: unless-stopped
|
||||
image: "moonrailgun/tailchat:1.7.3"
|
||||
networks:
|
||||
- 1panel-network
|
||||
environment:
|
||||
- SERVICEDIR=services,plugins
|
||||
- LOGGER=true
|
||||
- LOGLEVEL=info
|
||||
- PORT=11000
|
||||
- REDIS_URL=redis://:${REDIS_PASS}@${REDIS_HOST}:${REDIS_PORT}
|
||||
- TRANSPORTER=redis://:${REDIS_PASS}@${REDIS_HOST}:${REDIS_PORT}
|
||||
- MONGO_URL=mongodb://${MONGO_USER}:${MONGO_PASS}@${MONGO_HOST}:${MONGO_PORT}/${MONGO_DB}?authSource=admin
|
||||
- MINIO_URL=${MINIO_HOST}:${MINIO_PORT}
|
||||
- MINIO_USER=${MINIO_USER}
|
||||
- MINIO_PASS=${MINIO_PASS}
|
||||
- SMTP_SENDER=${SMTP_SENDER}
|
||||
- SMTP_URI=${SMTP_URI}
|
||||
- SECRET=${SECRET}
|
||||
- API_URL=${API_URL}
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:11000"
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
Loading…
Reference in New Issue
Block a user