This commit is contained in:
2026-04-25 16:36:34 +08:00
commit db90e7579b
1876 changed files with 189777 additions and 0 deletions

View File

@@ -0,0 +1,93 @@
---
sidebar_position: 10
title: 声网插件部署指南
---
:::info
声网插件需要确保您的 `tailchat` 镜像版本在 1.4.0+
:::
## 在声网平台申请项目
Tailchat 声网集成是依赖声网服务实现的音视频通话功能,因此在使用前需要在声网平台上注册。
声网官方: [https://www.agora.io/](https://www.agora.io/)
### 获取配置参数
注册完毕后/登录后会自动跳转到控制台。在控制台中可以进行项目配置
![](./images/1.png)
如果没有创建项目则需要先创建项目。如下图所示
![](./images/2.png)
建议使用安全模式以避免被其他人盗用。
接下来我们需要获取一些配置项用于配置`Tailchat`的声网插件。
![](./images/3.png)
在项目配置中我们可以获取 `appid``app cert`。这两个分别是我们之后要用到的环境变量 `AGORA_APP_ID``AGORA_APP_CERT`
### 获取客户凭证
另外我们还需要在右上角的 `RESTful API` 处获得客户的权限,
操作如图所示:
![](./images/4.png)
![](./images/5.png)
这样我们就拿到了另外两个环境变量: `AGORA_CUSTOMER_KEY``AGORA_CUSTOMER_SECRET`
我们初步的准备工作就完成了
## 安装插件
目前声网插件的服务端插件已经被默认安装,您无需做任何事情。但是为了正常使用需要配置环境变量
### 配置环境变量
配置环境变量请见 [环境变量](../deployment/environment.md)
声网插件需要环境变量如下:
- `AGORA_APP_ID`: 声网项目应用id
- `AGORA_APP_CERT`: 声网项目证书
- `AGORA_CUSTOMER_KEY`: 声网客户id
- `AGORA_CUSTOMER_SECRET`: 声网客户秘钥
这些环境变量都可以在上面的教程中获取。
配置环境变量完毕后即可
## 申请服务状态回调
为了使通话状态能够同步给`Tailchat`, 需要在声网中申请服务端回调。
在项目配置中,我们需要在`服务配置` 中启用`消息通知服务`
![](./images/6.png)
需要订阅以下事件:
- channel create=101
- channel destroy=102
- broadcaster join channel=103
- broadcaster leave channel=104
接收服务器 URL 一般为: `https://<YOUR SERVER DOMAIN>/api/plugin:com.msgbyte.agora/webhook`, 其中`<YOUR SERVER DOMAIN>` 换成你的 `Tailchat` 域名。
:::info
声网的服务会对服务器做连通性检查,因此需要配置好环境变量启动服务后再执行本次步骤。
另外声网需要配置`https``webrtc`服务也依赖`https`, 因此需要确保服务器网关支持`https`协议
:::
配置完成后你会看到如下提示。等待声网工作人员确认完毕后即可生效。
![](./images/7.png)

View File

@@ -0,0 +1,100 @@
---
sidebar_position: 2
title: 部署视频会议
---
:::info
`Tailchat Meeting` 方案目前没有与 `Tailchat` 做集成如果你期望在Tailchat中使用视频会议方案请选择 `agora``livekit` 解决方案
:::
视频会议服务 `Tailchat Meeting` 可以作为一个独立应用单品存在。在本节中将会讲述如何独立部署 `Tailchat Meeting`
以下内容均基于`docker`环境,请确保服务端有 `docker` 最基本程度的环境。
如果还没有安装 `docker` + `docker-compose` 可以查看文档 [安装docker环境](../deployment/install-docker.md)
## 快速部署
```bash
git clone https://github.com/msgbyte/tailchat-meeting --depth=1
```
> NOTE: 接下来会使用docker 的 host 模式进行安装。即`docker-compose` 会自动绑定主机端口
需要服务器预留端口如下:
- swag(服务器网关, nginx 强化版, 端口可通过配置文件 tailchat-meeting/compose/nginx.conf 修改)
- 80
- 443
- tailchat-meeting
- 13001
- 40000-49999(用于RTC服务, 动态占用)
- redis
- 6379
**以上端口均会在宿主机上暴露为了服务器安全着想建议配置合适的防火墙策略仅暴露必要的端口443和40000-49999**
```bash
cd tailchat-meeting/compose
cp docker-compose.env.example docker-compose.env
vi docker-compose.env
```
修改环境变量。
环境变量如下:
```
# 内网IP
MEDIASOUP_IP=
# 公网IP
MEDIASOUP_ANNOUNCED_IP=
# swag相关
URL=
SUBDOMAINS=
TZ=Asia/Shanghai
```
其中
- 如果仅单机部署的话`MEDIASOUP_IP``MEDIASOUP_ANNOUNCED_IP`可以均填写服务器公网ip, **但是对于弹性部署网络的服务商(如国内的腾讯云,阿里云等)必须严格按照注释分别填写内网IP和公网IP**(因为该类服务商提供的外网IP并不是绑定在网卡上的)
- `tailchat-meeting` 基于 webrtc 服务,因此强依赖 https/wss 协议。swag服务可以为您自动申请https证书但是必须得分配一个有效的域名并确保dns指向已经指向到服务器上。
- 更多相关的文档可以查看 [README](https://github.com/linuxserver/docker-letsencrypt/blob/master/README.md)
- 示例配置:
```bash
URL=meeting.example.com # 这里请填入
SUBDOMAINS= # 该参数用于多域名证书申请,可留空
```
修改完毕以后可以直接执行以下命令
```bash
docker compose up -d
```
`docker compose` 会自动从网络下载镜像并构建`tailchat-meeting`
构建可能需要花费一定时间和资源。特别是构建前端代码,如果使用的小配置的服务器的话请耐心一点等待。
> 实际测试中使用1核2g的小资源服务器耗时参考如下:
> - 下载依赖包: 3分钟
> - 编译前端代码: 5分钟
访问 `https://meeting.example.com` 即可看到`tailchat-meeting`的页面
## 组合使用
对于傻瓜式部署来说只需要一键就可以执行。如果已经有现成的网关服务(比如nginx, caddy等)以及redis实例可以有选择的启动服务。
如:
```bash
docker compose up tailchat-meeting -d # 仅运行 tailchat-meeting 实例
```
## 使用host模式的原因
`tailchat-meeting` 核心的RTC服务需要在运行时申请端口但是对于docker来说并不能实现这个功能。而预先申请一定范围的端口绑定即会造成无意义端口的浪费也会在启动时瞬间占据大量资源并把系统打死。
**需要注意的是请不要把redis所在的6379端口暴露出去这可能会产生安全隐患。**

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,44 @@
---
sidebar_position: 1
title: 概述
---
:::info
音视频解决方案需要SSL支持因此只有支持https的网站才能正常使用
:::
`Tailchat` 提供以下方案用于视频语音通话,可以根据实际情况自行选择:
- ~~`tailchat-meeting` 自研视频会议(WIP)~~
- `agora` 声网集成, 详细说明见: [声网插件部署指南](./agora.md)
- `livekit` 可自部署的解决方案: [Livekit 插件部署指南](./livekit.md)
<details>
<summary>折叠内容已过时</summary>
视频会议模块是 `Tailchat` 系列的一套重要组成部分。提供能力如下:
- 语音通信
- 视频会话
- 屏幕共享
- 虚拟背景
- 文件传输
- 聊天记录
同时 `tailchat-meeting` 还可以作为独立单品存在,无需登录即可快速发起/加入会议
### 项目仓库
- 开源地址: [https://github.com/msgbyte/tailchat-meeting](https://github.com/msgbyte/tailchat-meeting)
- 开源协议: GPL-3.0
:::info 开源声明
本项目基于 [edumeet](https://github.com/edumeet/edumeet) 和 [mediasoup](https://github.com/versatica/mediasoup) 进行二次开发而来。
在此基础上进行了功能追加与SDK实现以及代码优化。如果想要找到开源协议更加宽松(MIT + ISC 协议)的实现可以看一下这两个项目
:::
### 项目架构
![](/img/architecture/meeting.excalidraw.svg)
</details>

View File

@@ -0,0 +1,73 @@
---
sidebar_position: 20
title: Livekit 插件部署指南
---
`Livekit` 是一款基于 `Apache-2.0` 开源协议的,允许自部署的开源视频会议解决方案,支持视频会议、视频直播、录制等场景
你可以使用他的云端服务或者自部署。以下我会介绍怎么将 `Livekit` 集成到 `Tailchat` 中:
## 云端服务
首先进入Livekit云平台: [https://cloud.livekit.io/](https://cloud.livekit.io/), 首次进入要创建一下项目:
此时会问一些问题,按照情况随便回答一下就行
![](/img/advanced-usage/livekit/1.png)
完成后我们会进入控制台主界面:
![](/img/advanced-usage/livekit/2.png)
### 获取需要的环境变量
为使插件工作,我们需要以下环境变量:
- `LIVEKIT_URL`
- `LIVEKIT_API_KEY`
- `LIVEKIT_API_SECRET`
其中 `LIVEKIT_URL` 我们可以直接从控制台上获取,形如 `wss://********.livekit.cloud`
在左边 `Settings` 菜单中,我们需要自行创建一对秘钥
![](/img/advanced-usage/livekit/3.png)
![](/img/advanced-usage/livekit/4.png)
![](/img/advanced-usage/livekit/5.png)
在这里我们可以获取到 `LIVEKIT_API_KEY``LIVEKIT_API_SECRET`.
记录下来填入环境变量后启动 `Tailchat` 即可.
### 启动 webhook
![](/img/advanced-usage/livekit/6.png)
如果你需要上述的频道在线提示能够即时更新,则需要单独启动一个 `webhook-receiver` 来接受来自 `livekit` 的推送并将接收到的事件转发给 `Tailchat`,让 `Tailchat` 来更新所有群组成员的显示。
官方已为您准备好了一键启动的`docker-compose`配置, 就像 `admin` 一样:
```bash
wget https://raw.githubusercontent.com/msgbyte/tailchat/master/docker/livekit.yml
docker compose -f docker-compose.yml -f livekit.yml up -d
```
此时你可以在docker运行的容器中看到一个 `tailchat-livekit-webhook-receiver` 服务.
然后我们切换到 `livekit` 控制台,在 `webhook` 中添加我们的地址。
![](/img/advanced-usage/livekit/7.png)
一般为 `https://<your tailchat url>/livekit/webhook`, 记得选择与服务一致的密钥对
![](/img/advanced-usage/livekit/8.png)
> PS: 在云端应用可能会有一些延时。
## 自部署
自部署可见官方文档: [https://docs.livekit.io/oss/deployment/](https://docs.livekit.io/oss/deployment/)
除了部署方式不一样与配置为先,其他的与使用云端服务一样