下面文章已经过时,新版在「技焉洲」更新: 10分钟在Ubuntu部署原生的Syncplay服务端 – 技焉洲 (yanh.tech)
放在新站点「技焉洲」的原因: 承飞之咎与技焉洲 – 承飞之咎 (vfly2.com)
若无单独说明,按照文章代码块中命令的顺序,一条一条执行,即可实现目标。
适用系统:Debian 系发行版,包括 Ubuntu 和 Armbian,其他发行版按流程稍改命令一般也可。走通预计时间:10 分钟
本文重在 Syncplay 的部署流程,介绍和具体使用方法请到:3 种异地相隔的朋友间一起 同步看电影 的方法 – 承飞之咎 (vfly2.com)
Syncplay 能同步媒体播放器的进度,就是那种让你和朋友家人们不需要每次暂停电影后,都齐声喊3……2……1……的工具,它的客户端安装在本地电脑上,服务端需要装在有公网IP的设备上,一般是Linux系统的服务器。客户端的使用流程可以看之前的文章。
其实仅从功能上讲,自部署的必要性不大,这里是寡人的,只要需要,就会一直维护:
- Server address: 82.157.53.75:8999
- Server password:vfly2
自部署Syncplay服务端的过程并不复杂。官方的公共服务器都在法国,延迟高甚至有时候连接不上,所以对自部署感兴趣的朋友可以试一下。
如果您的服务器能顺利连接GitHub,下面只是10分钟的流程。复制式教程。
前置准备
使用root用户会更方便,下文的流程是以root用户进行的。
环境需求:
- Git ,用来下载源代码
- Python 3.4.x 或更高版本,python3-twisted 包,用来执行源代码
- 放行对应端口。服务端的默认端口是8999,也可以自定义
一行代码部署环境:
创建用户和安置源代码
创建系统用户syncplay,用它来运行syncplay-server(也可以让现有用户运行)
会要求填写信息,一律回车即可,最后 输入 y 并回车 确认
进入syncplay的家目录并拉取源代码
如果服务器在国内,因为网络原因无法下载,可以在本地用代理下载后传到服务器,或者用网址代理等,或者等网络恢复。
设置文件所有者为 syncplay:syncplay
启动 Syncplay 服务端
进入拉取的目录syncplay
并运行syncplayServer.py
应该看到如下的输出
这说明服务器已经正常运行了。此时其实就可以使用了:无密码,端口默认8999,地址可以用域名或者ip(建议这时候用客户端测试一下确保连接正常)。但这样太粗糙。
按Ctrl + C
停止运行。
可以记录一下
--salt
后的一串字母,它是用来对明文加密的,可以提高安全性。
自定义参数运行:密码、端口、密钥
更多自定义参数在这里:https://syncplay.pl/guide/server/ ,我也会放到文章结尾。
这时候配合nohup或者screen使Syncplay在后台运行勉强也能用,不过有更好的方法管理它!
不想折腾的就可以离开,测试同步的效果了。
配置 systemctl 服务文件
填入服务文件
如果完全按照上面流程,只需要用自定义的改一下这段--salt NIJGVMHKOC --port 4567 --password myPassword
的几个参数就可以了,--salt
用前面记录的。也可以自定义更多参数。
保存退出,然后键入
这将使syncplay开机自启,并且立即运行。使用systemctl status syncplay
查看状态。
到此就全部完成,如果您想了解更多,可以去官网查看: https://syncplay.pl/guide/ 。
现在您就可以断开和服务器的连接,并和朋友家人一起享受远程同步看电影!
服务端自定义参数
--port [port]
– 自定义端口--isolate-room
– 如果有这一项,那么用户将无法看到除了他们所在的房间以外的其他房间中的用户的信息。--password [password]
– 为Syncplay服务器设置密码,只有通过密码才能连接上服务器。MARKDOWN_HASH95bbdcfb79634bfa11230a9c9d2c3db9MARKDOWNHASH
– 随机的 salt(http://en.wikipedia.org/wiki/Salt(cryptography)) 字符串 used to generate controlled room passwords – needs to be the same for controlled room passwords to work between server instances. (不太明白)--motd-file [filepath]
– 自定义motd文件的目录,这个可以在进入房间时显示欢迎词--disable-ready
– 禁用准备指示功能--disable-chat
– 禁用聊天功能--max-chat-message-length
– 限制聊天允许发送字符数量的最大值--max-username-length
– 限制用户名字母数量的最大值--stats-db-file [filepath]
– 使用 SQLite db 记录服务器状态--tls [path]
– 使用在特定目录的证书来启动TLS功能. 看更多教程: https://github.com/Syncplay/syncplay/wiki/TLS-support 。 这个功能只适用于 Syncplay >= 1.6.3 的
docker 部署 Syncplay
用docker就简单的多了,推荐下面这个。
docker:ninetaillabs/syncplay-server – Docker Image | Docker Hub