也不知道是什么意思,天天都有人在微信公众号的后台发,是打算找我兑奖吗?
本文软件是朋友
Eduna
推荐的,因为他觉得好像很好玩的样子。老苏一开始以为tl-rtc-file
是跟Snapdrop
一样的局域网文件传输工具,在看了demo
网站后,发现确实有点意思,但最终的结果却有点让人失望了。
什么是 tl-rtc-file ?
tl-rtc-file
是基于webrtc
的网页在线媒体流传输开源工具。内网不限速(局域网最高到过70多M/s),支持多文件拖拽发送,网页文件预览。 扩展了许多丰富的小功能,如本地屏幕录制,远程屏幕共享(无延迟),远程音视频通话(无延迟),直播(无延迟),密码房间,oss
云存储,中继服务设置,webrtc
检测,webrtc
统计,文字传输(群聊,私聊),公共聊天,远程画板,AI
聊天框,丰富的后台管理,实时执行日志展示,机器人告警通知等功能… 等等
官方的演示站点:https://im.iamtsm.cn
安装
在群晖上以 Docker 方式安装。因为涉及到多个容器,所以采用 docker-compose
安装方式。
准备工作
第一步、先创建好目录
# 新建文件夹 tlrtcfile 和 子目录
mkdir -p /volume1/docker/tlrtcfile/{data/{db,log,init.sql,my.cnf},coturn}
# 进入 tlrtcfile 目录
cd /volume1/docker/tlrtcfile
第二步、准备好需要的文件
turnserver-with-secret-user.conf
第一个文件是 turnserver-with-secret-user.conf
实际上
turnserver
在局域网是非必须步骤,只有在公网才是必须步骤。所谓非必须就是哪怕容器停止了,也不影响使用的意思
老苏基于官方的示例文件:https://github.com/tl-open-source/tl-rtc-file/blob/master/docker/coturn/turnserver-with-secret-user.conf 做了微调
#------------TURN BASE CONFIG 基础配置------------#
#监听网卡
listening-device=eth0
#监听ip(内网ip)
listening-ip=
#监听端口(端口)
listening-port=3478
#公网ip
# external-ip=
#端口最小值
min-port=49152
#端口最大值
min-port=55000
#cli密码
cli-password=qwerty
#后台运行-默认关闭 docker运行时需关闭, 自行部署时,可以开启
# daemon
#会话指纹
fingerprint
#中等详细日志
verbose
#长期凭证
#lt-cred-mech
#关闭tls
no-tls
#关闭dtls
no-dtls
#------------TURN REST API USER CONFIG 有效时间帐号密码模式 (优先推荐使用这种方式)------------#
#开启rest api
use-auth-secret
#rest api账号密码
static-auth-secret=tlrtcfile
#来源(域名或ip:port)
realm=192.168.0.197:3478
其中 :
listening-device
:一般单网卡不需要修改static-auth-secret
:密码realm
: 前面的IP
修改为自己群晖主机的IP
,后面的端口不要改
这个文件需存放在 coturn
目录中
env.txt
第二个文件是 env.txt
,之所以没用 tlrtcfile.env
做文件名,是为了方便在 FileStation
中直接编辑修改
老苏基于官方的示例文件:https://github.com/tl-open-source/tl-rtc-file/blob/master/tlrtcfile.env 做了微调,去掉了没用上的部分,例如 OSS
、企业微信等
#-----------------以下为基础配置-----------------#
## api服务端口
tl_rtc_file_api_port=9092
## websocket服务端口
tl_rtc_file_socket_port=8444
## websocket服务地址
tl_rtc_file_socket_host=192.168.0.197:8444
#-----------------以下为webrtc相关配置-----------------#
## webrtc-stun中继服务地址
tl_rtc_file_webrtc_stun_host=stun:192.168.0.197:3478
## webrtc-turn中继服务地址
tl_rtc_file_webrtc_turn_host=turn:192.168.0.197:3478?transport=udp
## webrtc中继服务用户名
tl_rtc_file_webrtc_turn_username=tlrtcfile
## webrtc中继服务密码
tl_rtc_file_webrtc_turn_credential=tlrtcfile
## webrtc中继服务Secret
tl_rtc_file_webrtc_turn_secret=tlrtcfile
## webrtc中继服务帐号过期时间 (毫秒)
tl_rtc_file_webrtc_turn_expire=86400000
#-----------------以下为mysql数据库相关配置-----------------#
## 是否开启数据库
tl_rtc_file_db_open=true
## 数据库地址
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
#-----------------以下为管理后台相关配置-----------------#
## 管理后台房间号
tl_rtc_file_manage_room=tlrtcfile
## 管理后台密码
tl_rtc_file_manage_password=tlrtcfile
需要将 192.168.0.197
修改为自己群晖主机的 IP
docker-compose.yml
第三个文件是 docker-compose.yml
老苏基于官方的示例文件:https://github.com/tl-open-source/tl-rtc-file/blob/master/docker-compose.yml 做了微调,
version: '3'
services:
api-http:
profiles: ['http']
image: iamtsm/tl-rtc-file-api
container_name: tl-rtc-file-api
env_file:
- ./env.txt
environment:
- tl_rtc_file_env_mode=http
- tl_rtc_file_db_open=true
command:
- tlapi
ports:
- 9092:9092
links:
- mysql
depends_on:
- mysql
- coturn
volumes:
- ./env.txt:/tlrtcfile/tlrtcfile.env
#https模式启动api服务
api-https:
profiles: ['https']
image: iamtsm/tl-rtc-file-api
container_name: tl-rtc-file-api
env_file:
- ./env.txt
environment:
- tl_rtc_file_env_mode=https
- tl_rtc_file_db_open=true
command:
- tlapi
ports:
- 9092:9092
links:
- mysql
depends_on:
- mysql
- coturn
volumes:
- ./env.txt:/tlrtcfile/tlrtcfile.env
#http模式启动socket服务
socket-http:
profiles: ['http']
image: iamtsm/tl-rtc-file-socket
container_name: tl-rtc-file-socket
command:
- tlsocket
env_file:
- ./env.txt
environment:
- tl_rtc_file_env_mode=http
- tl_rtc_file_db_open=true
ports:
- 8444:8444
links:
- mysql
depends_on:
- mysql
- coturn
volumes:
- ./env.txt:/tlrtcfile/tlrtcfile.env
#https模式启动socket服务
socket-https:
profiles: ['https']
image: iamtsm/tl-rtc-file-socket
container_name: tl-rtc-file-socket
command:
- tlsocket
env_file:
- ./env.txt
environment:
- tl_rtc_file_env_mode=https
- tl_rtc_file_db_open=true
ports:
- 8444:8444
links:
- mysql
depends_on:
- mysql
- coturn
volumes:
- ./env.txt:/tlrtcfile/tlrtcfile.env
#mysql服务
mysql:
profiles: ['http','https']
image: iamtsm/tl-rtc-file-mysql
container_name: tl-rtc-file-mysql
restart: always
environment:
#设置root密码
- MYSQL_ROOT_PASSWORD=tlrtcfile
#设置数据库
- MYSQL_DATABASE=webchat
#设置用户
- MYSQL_USER=tlrtcfile
#设置用户密码
- MYSQL_PASSWORD=tlrtcfile
#ports:
# - 3306:3306
volumes:
- ./data/db:/var/lib/mysql
- ./data/my.cnf:/etc/mysql/conf.d/my.cnf
- ./data/log:/var/log/mysql
- ./data/init.sql:/docker-entrypoint-initdb.d/init.sql
#coturn服务
coturn:
profiles: ['http','https']
image: iamtsm/tl-rtc-file-coturn
container_name: tl-rtc-file-coturn
ports:
- "3478:3478/udp"
- "3478:3478/tcp"
volumes:
- ./coturn/turnserver-with-secret-user.conf:/etc/turnserver.conf
将 env.txt
、docker-compose.yml
放入根目录
一键启动
然后执行下面的命令
# 进入 tlrtcfile 目录
cd /volume1/docker/tlrtcfile
# 以 http 方式一键启动
docker-compose --profile=http up -d
# 以 https 方式一键启动
docker-compose --profile=https up -d
运行
如果是以 http
模式启动的,在浏览器中输入 http://群晖IP:9092
就能看到主界面
如果是 https
模式启动的,在浏览器中输入 https://群晖IP:9092
会看到提示
点 高级
,选择继续前往
之后的操作和功能都是一样的
点左下角的 创建/加入房间
默认会生成一串数字,但是并不能用来做房间号
所以需要手动改为字母,然后再次点左下角的 创建/加入房间
加入成功
另一方输入同样的房间号,加入到同一个房间
双方可以聊天
也可发文件
选择需要传递的文件,点 一键发送
接收端会有提示
点开能看到详情
可惜其他功能不能用,可能需要 捐赠版
才行吧
遗留问题
刷新页面会显示 系统错误
但是似乎并不影响发消息和发文件,因此也就不去深究了,先这样吧
参考文档
tl-open-source/tl-rtc-file: WebRTC P2P online web media streaming tool (for files, video, screen, live streaming, text) with management and statistical monitoring capabilities.
地址:https://github.com/tl-open-source/tl-rtc-file
tl-rtc-file
地址:https://im.iamtsm.cn/
tl-rtc-file-使用手册 · tl-rtc-file
地址:https://im.iamtsm.cn/document/
tl-rtc-file-website
地址:https://im.iamtsm.cn/website/index.html