feat: perf docker-compose.yml

feat: update socket host env
feat: udpate doc
This commit is contained in:
https://blog.iamtsm.cn
2023-08-15 15:07:35 +08:00
parent 540b1d1b90
commit ab27863fa5
6 changed files with 95 additions and 148 deletions

173
README.md
View File

@@ -1,4 +1,4 @@
# tl-rtc-file-tool【始于文件传输,不止于文件传输】
# tl-rtc-file-tool
[![](https://img.shields.io/badge/webrtc-p2p-blue)](https://webrtc.org.cn/)
[![](https://img.shields.io/badge/code-simple-green)](https://github.com/iamtsm/tl-rtc-file/)
@@ -9,42 +9,45 @@
<p align="center">
<a href="https://im.iamtsm.cn/file" target="_blank">体验地址</a>
<a href="https://hub.docker.com/u/iamtsm" target="_blank">DockerHub</a>
<a href="https://github.com/tl-open-source/tl-rtc-file/blob/master/doc/README_EN.md" target="_blank">EN-DOC</a>
<a href="https://github.com/tl-open-source/tl-rtc-file/blob/master/doc/README_EN.md" target="_blank"> EN-DOC </a> QQ群:
<a href="https://jq.qq.com/?_wv=1027&k=TKCwMBjN" target="_blank">624214498 </a>
</p>
<p align="center">QQ群: <a href="https://jq.qq.com/?_wv=1027&k=TKCwMBjN" target="_blank">624214498 </a></p>
## 目录
- [背景](#背景)
- [简介](#简介)
- [优点](#优点)
- [扩展](#扩展)
- [准备 (必须步骤)](#准备-必须步骤)
- [配置websocket (必须步骤)](#配置websocket-必须步骤)
- [启动 (必须步骤)](#启动-必须步骤)
- [配置数据库 (非必须步骤)](#配置数据库-非必须步骤)
- [管理后台 (非必须步骤)](#管理后台-非必须步骤)
- [企微通知 (非必须步骤)](#企微通知-非必须步骤)
- [OSS云存储 (非必须步骤)](#oss云存储-非必须步骤)
- [Chat-GPT (非必须步骤)](#chat-gpt-非必须步骤)
- [配置turnserver (局域网非必须步骤,公网必须步骤)](#配置turnserver-局域网非必须步骤公网必须步骤)
- [Docker](#docker)
- [背景-简介](#背景-简介)
- [优点-扩展](#优点-扩展)
- [修改配置](#修改配置)
- [自行部署](#自行部署)
- [安装环境](#安装环境)
- [准备启动](#准备启动)
- [配置数据库 (必须步骤)](#配置数据库-非必须步骤)
- [管理后台 (非必须步骤)](#管理后台-非必须步骤)
- [企微通知 (非必须步骤)](#企微通知-非必须步骤)
- [OSS云存储 (非必须步骤)](#oss云存储-非必须步骤)
- [Chat-GPT (非必须步骤)](#chat-gpt-非必须步骤)
- [配置turnserver (局域网非必须步骤,公网必须步骤)](#配置turnserver-局域网非必须步骤公网必须步骤)
- [Docker部署](#Docker部署)
- [其他形式部署](#其他形式部署)
- [概述图](#概述图)
- [License](#license)
- [免责声明](#免责声明)
#### 背景 20年毕设的题目相关整理出来的
### 背景-简介
#### 简介 tl webrtc datachannel filetools用webrt在web端传输文件支持传输超大文件。
20年毕设的题目相关整理出来的tl webrtc datachannel filetools用webrt在web端传输文件支持传输超大文件。
#### 优点 分片传输跨终端不限平台方便使用内网不限速局域网最高到过70多M/s支持私有部署支持多文件拖拽发送网页文件预览
### 优点-扩展
#### 扩展 扩展了许多丰富的小功能,如本地屏幕录制,远程屏幕共享(无延迟),远程音视频通话(无延迟),直播(无延迟)密码房间oss云存储中继服务设置webrtc检测webrtc统计文字传输(群聊,私聊)公共聊天远程画板AI聊天框丰富的后台管理实时执行日志展示机器人告警通知等功能... 等等
分片传输跨终端不限平台方便使用内网不限速局域网最高到过70多M/s支持私有部署支持多文件拖拽发送网页文件预览。 扩展了许多丰富的小功能,如本地屏幕录制,远程屏幕共享(无延迟),远程音视频通话(无延迟),直播(无延迟)密码房间oss云存储中继服务设置webrtc检测webrtc统计文字传输(群聊,私聊)公共聊天远程画板AI聊天框丰富的后台管理实时执行日志展示机器人告警通知等功能... 等等
## 准备 (必须步骤)
## 修改配置
无论是自行部署还是docker部署还是其他脚本部署都需要先行修改 `tlrtcfile.env` 中相应配置,再执行下面操作,且后续还需修改配置,需要重启服务
## 自行部署
#### 安装环境
1.安装node-14.21.x或14.21.x以上npm后进入项目目录运行下面命令
```
@@ -58,19 +61,7 @@ npm install
3.修改 `tlrtcfile.env` 配置文件
## 配置websocket (必须步骤)
修改 `tlrtcfile.env` 中相应websocket配置
## websocket服务端口
tl_rtc_file_socket_port=8444
## websocket服务地址
## "ws://域名 或者 ws://ip:端口 或者 ws://域名:端口"
tl_rtc_file_socket_host=ws://127.0.0.1:8444
## 启动 (必须步骤)
#### 准备启动
启动以下两个服务, 选一种模式启动即可两者的区别就是https环境启动才可以使用音视频,直播,屏幕共享功能,其他功能不影响
@@ -84,89 +75,29 @@ https模式启动后访问 https://你的机器ip:9092 即可
- api服务: `npm run https-api`
- socket服务 : `npm run https-socket`
## 配置数据库 (非必须步骤)
#### 配置数据库 (非必须步骤)
修改 `tlrtcfile.env` 中的数据库相关配置即可
## 是否开启数据库
tl_rtc_file_db_open=false
## 数据库地址
tl_rtc_file_db_mysql_host=mysql
## 数据库端口
tl_rtc_file_db_mysql_port=3306
## 数据库名称
tl_rtc_file_db_mysql_dbName=webchat
## 数据库用户名
tl_rtc_file_db_mysql_user=tlrtcfile
## 数据库密码
tl_rtc_file_db_mysql_password=tlrtcfile
#### 企微通知 (非必须步骤)
## 管理后台 (非必须步骤)
修改 `tlrtcfile.env` 中的企业微信通知相关配置即可
#### OSS云存储 (非必须步骤)
修改 `tlrtcfile.env` 中的OSS存储相关配置即可
#### Chat-GPT (非必须步骤)
修改 `tlrtcfile.env` 中的openai相关配置即可
#### 管理后台 (非必须步骤)
前提 : 需要开启数据库配置
修改 `tlrtcfile.env` 中的管理后台相关配置即可, 启动后,输入配置的房间号,输入密码,即可进入管理后台
## 管理后台房间号
tl_rtc_file_manage_room=tlrtcfile
## 管理后台密码
tl_rtc_file_manage_password=tlrtcfile
## 企微通知 (非必须步骤)
修改 `tlrtcfile.env` 中的企业微信通知相关配置即可
# ## 企业微信通知开关
tl_rtc_file_notify_open=false
## 企业微信通知机器人KEY正常通知如果有多个key逗号分隔
tl_rtc_file_notify_qiwei_normal=
## 企业微信通知机器人KEY错误通知如果有多个key逗号分隔
tl_rtc_file_notify_qiwei_error=
## OSS云存储 (非必须步骤)
修改 `tlrtcfile.env` 中的OSS存储相关配置即可
## oss-seafile存储库ID
tl_rtc_file_oss_seafile_repoid=
## oss-seafile地址
tl_rtc_file_oss_seafile_host=
## oss-seafile用户名
tl_rtc_file_oss_seafile_username=
## oss-seafile密码
tl_rtc_file_oss_seafile_password=
## oss-alyun存储accessKey
tl_rtc_file_oss_alyun_AccessKey=
## oss-aly存储SecretKey
tl_rtc_file_oss_alyun_Secretkey=
## oss-aly存储bucket
tl_rtc_file_oss_alyun_bucket=
## oss-txyun存储accessKey
tl_rtc_file_oss_txyun_AccessKey=
## oss-txyunt存储SecretKey
tl_rtc_file_oss_txyun_Secretkey=
## oss-txyun存储bucket
tl_rtc_file_oss_txyun_bucket=
## oss-qiniuyun存储accessKey
tl_rtc_file_oss_qiniuyun_AccessKey=
## oss-qiniuyunt存储SecretKey
tl_rtc_file_oss_qiniuyun_Secretkey==
## oss-qiniuyun存储bucket
tl_rtc_file_oss_qiniuyun_bucket=
## Chat-GPT (非必须步骤)
修改 `tlrtcfile.env` 中的openai相关配置即可
## openai-key如果有多个key逗号分隔
tl_rtc_file_openai_keys=
## 配置turnserver (局域网非必须步骤,公网必须步骤)
#### 配置turnserver (局域网非必须步骤,公网必须步骤)
目前有两种形式去生成使用turn服务的帐号密码一种是固定帐号密码 (优先推荐),一种是有效期帐号密码。**选一种方式即可**
@@ -208,9 +139,15 @@ ubuntu示例:
目前支持 `官方镜像``自行打包镜像`,使用官方镜像目前支持两种操作方式 `docker脚本启动``docker-compose启动`
自行在 `服务器/电脑部署` 不同的是docke环境默认开启数据库coturn服务无须过多额外操作启动即可用
`自行部署` 操作/配置上的差异有下面两点
### 使用官方镜像(docker脚本启动) :
- [x] docker环境默认开启数据库,coturn服务
- [x] docker环境需要挂载coturn的配置项目基础配置(tlrtcfile.env)
由于是内置coturn和mysql服务所以这两个相应的配置(可以在docker-compose.yml中找到具体配置文件位置),也需要在启动前修改好。
#### 使用官方镜像(docker脚本启动) :
按需修改好 `tlrtcfile.env` 配置 (或使用默认配置也可) 后,进入 `bin/` 目录执行脚本 `auto-pull-and-start-docker.sh`
@@ -219,7 +156,7 @@ chmod +x ./auto-pull-and-start-docker.sh
./auto-pull-and-start-docker.sh
```
### 使用官方镜像(docker-compose启动) :
#### 使用官方镜像(docker-compose启动) :
按需修改好 `tlrtcfile.env` 配置 (或使用默认配置也可) 后,根据你的`Docker Compose`版本在主目录执行如下对应的命令
@@ -233,7 +170,7 @@ docker-compose --profile=http up -d
docker compose --profile=http up -d
```
### 自行打包启动镜像(docker-compose打包启动) :
#### 自行打包启动镜像(docker-compose打包启动) :
确认修改好 `tlrtcfile.env` 配置文件 (或使用默认配置也可) 后, 进入 `docker/` 目录后根据你的`Docker Compose`版本在主目录执行如下对应的命令
@@ -253,9 +190,9 @@ docker compose -f docker-compose-build-code.yml up -d
下载项目后,可以进入 `bin/` 目录,选择对应的系统脚本,直接执行即可,会自动检测安装环境,自动安装依赖,自动启动服务
**注意 : 执行之前可以先修改好配置,如使用默认配置,后续修改需要重启两个服务才能生效**,重启可以先执行 `停止服务脚本`,然后再次执行 `自动脚本` 即可
**注意 : 执行之前可以先修改好 tlrtcfile.env 配置,如使用默认配置,后续修改需要重启两个服务才能生效**,重启可以先执行 `停止服务脚本`,然后再次执行 `自动脚本` 即可
### ubuntu自动脚本 (比如ubuntu16)
#### ubuntu自动脚本 (比如ubuntu16)
```
chmod +x ./ubuntu16/*.sh
@@ -273,7 +210,7 @@ cd ubuntu16/
./auto-stop.sh
```
### windows自动脚本
#### windows自动脚本
```
windows/auto-check-install-http.bat
@@ -283,7 +220,7 @@ windows/auto-check-install-http.bat
windows/auto-check-install-https.bat
```
### zeabur平台一键部署
#### zeabur平台一键部署
[![Deploy on Zeabur](https://zeabur.com/button.svg)](https://zeabur.com/templates/898TLE?referralCode=iamtsm)

View File

@@ -65,8 +65,8 @@ Modify the corresponding websocket configurations in `tlrtcfile.env`:
tl_rtc_file_socket_port=8444
## Websocket server address
## "ws://domain or ws://ip:port or ws://domain:port"
tl_rtc_file_socket_host=ws://127.0.0.1:8444
## "domain or ip:port or domain:port"
tl_rtc_file_socket_host=127.0.0.1
## Startup (Essential Steps)

View File

@@ -1,4 +1,6 @@
## 用于docker-compose部署并启动官方镜像
## !!!!!!用于docker-compose部署并启动官方镜像!!!!!!
## !!!!!!挂载配置的形式启动,方便修改配置!!!!!!!!!!!!
## !!!!!!需要依赖项目配置文件!!!!!!!!!!!!!!!!!!!!!!
version: '3'
services:
@@ -6,10 +8,10 @@ services:
#http模式启动api服务
api-http:
profiles: ['http']
container_name: api
image: iamtsm/tl-rtc-file-api
container_name: api
env_file:
- ./tlrtcfile.env
- tlrtcfile.env
environment:
- tl_rtc_file_env_mode=http
- tl_rtc_file_db_open=true
@@ -23,15 +25,15 @@ services:
- mysql
- coturn
volumes:
- ./tlrtcfile.env:/tlrtcfile/tlrtcfile.env
- tlrtcfile.env:/tlrtcfile/tlrtcfile.env
#https模式启动api服务
api-https:
profiles: ['https']
container_name: api
image: iamtsm/tl-rtc-file-api
container_name: api
env_file:
- ./tlrtcfile.env
- tlrtcfile.env
environment:
- tl_rtc_file_env_mode=https
- tl_rtc_file_db_open=true
@@ -45,17 +47,17 @@ services:
- mysql
- coturn
volumes:
- ./tlrtcfile.env:/tlrtcfile/tlrtcfile.env
- tlrtcfile.env:/tlrtcfile/tlrtcfile.env
#http模式启动socket服务
socket-http:
profiles: ['http']
container_name: socket
image: iamtsm/tl-rtc-file-socket
container_name: socket
command:
- tlsocket
env_file:
- ./tlrtcfile.env
- tlrtcfile.env
environment:
- tl_rtc_file_env_mode=http
- tl_rtc_file_db_open=true
@@ -67,17 +69,17 @@ services:
- mysql
- coturn
volumes:
- ./tlrtcfile.env:/tlrtcfile/tlrtcfile.env
- tlrtcfile.env:/tlrtcfile/tlrtcfile.env
#https模式启动socket服务
socket-https:
profiles: ['https']
container_name: socket
image: iamtsm/tl-rtc-file-socket
container_name: socket
command:
- tlsocket
env_file:
- ./tlrtcfile.env
- tlrtcfile.env
environment:
- tl_rtc_file_env_mode=https
- tl_rtc_file_db_open=true
@@ -89,20 +91,26 @@ services:
- mysql
- coturn
volumes:
- ./tlrtcfile.env:/tlrtcfile/tlrtcfile.env
- tlrtcfile.env:/tlrtcfile/tlrtcfile.env
#mysql服务
mysql:
profiles: ['http','https']
container_name: mysql
image: iamtsm/tl-rtc-file-mysql
container_name: mysql
restart: always
env_file:
- ./docker/mysql/mysql.env
environment:
#设置root密码
- MYSQL_ROOT_PASSWORD=tlrtcfile
#设置数据库
- MYSQL_DATABASE=webchat
#设置用户
- MYSQL_USER=tlrtcfile
#设置用户密码
- MYSQL_PASSWORD=tlrtcfile
ports:
- 3306:3306
volumes:
- ./docker/mysql/data/mysql.env:/tlrtcfile/docker/mysql/mysql.env
- ./docker/mysql/data/db:/var/lib/mysql
- ./docker/mysql/data/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/mysql/data/log:/var/log/mysql
@@ -111,10 +119,8 @@ services:
#coturn服务
coturn:
profiles: ['http','https']
container_name: coturn
image: iamtsm/tl-rtc-file-coturn
env_file:
- ./docker/coturn/coturn.env
container_name: coturn
ports:
- "3478:3478/udp"
- "3478:3478/tcp"

View File

@@ -1,5 +1,5 @@
{
"version": "10.3.8",
"version": "10.4.0",
"socket": {
"port": "请到 tlrtcfile.env 中进行配置",
"host": "请到 tlrtcfile.env 中进行配置"

View File

@@ -28,9 +28,11 @@ function initData(req, res) {
ip = "127.0.0.1"
}
let wsHost = conf.socket.host || ip;
let data = {
version : conf.version,
wsHost: conf.socket.host || ip,
wsHost: "ws://" + wsHost + ":" + conf.socket.port,
rtcConfig: { iceServers },
options: webrtcConf.options,
logo : utils.genClientLogo(),
@@ -39,9 +41,11 @@ function initData(req, res) {
res.json(data)
}else{
let wsHost = conf.socket.host || ip;
let data = {
version : conf.version,
wsHost: conf.socket.host,
wsHost: "wss://" + wsHost + ":" + conf.socket.port,
rtcConfig: { iceServers },
options: webrtcConf.options,
logo : utils.genClientLogo(),

View File

@@ -4,7 +4,7 @@ tl_rtc_file_api_port=9092
## websocket服务端口
tl_rtc_file_socket_port=8444
## websocket服务地址
tl_rtc_file_socket_host=ws://127.0.0.1:8444
tl_rtc_file_socket_host=127.0.0.1
#-----------------以下为webrtc相关配置-----------------#
@@ -75,13 +75,13 @@ tl_rtc_file_manage_room=tlrtcfile
tl_rtc_file_manage_password=tlrtcfile
# #-----------------以下为openai相关配置-----------------#
# ## openai-key如果有多个key逗号分隔
#-----------------以下为openai相关配置-----------------#
## openai-key如果有多个key逗号分隔
tl_rtc_file_openai_keys=
# #-----------------以下为企业微信通知相关配置-----------------#
# ## 企业微信通知开关
#-----------------以下为企业微信通知相关配置-----------------#
## 企业微信通知开关
tl_rtc_file_notify_open=false
## 企业微信通知机器人KEY正常通知如果有多个key逗号分隔
tl_rtc_file_notify_qiwei_normal=