本文重在 Syncplay 的部署流程,介绍和更多使用请到:3种远程同步看电影的方法 – 承飞之咎 (vfly2.com)
若无单独说明,按照文章代码块中命令的顺序,一条一条执行,即可实现目标。
适用系统:Debian 系发行版,包括 Ubuntu 和 Armbian,其他发行版按流程稍改命令一般也可。走通预计时间:10 分钟
Syncplay 能同步媒体播放器的进度,就是那种让你和朋友家人们不需要每次暂停电影后,都齐声喊3……2……1……的工具,它的客户端安装在本地电脑上,服务端需要装在有公网IP的设备上,一般是Linux系统的服务器。
自部署 Syncplay 服务端的过程并不复杂。官方的公共服务器都在法国,延迟高甚至有时候连接不上,所以对自部署感兴趣的朋友可以试一下。
这里是 AhFei 的,只要需要,就会一直维护:
- Server address: vfly2.cn:8999
- Server password:vfly2
GitHub: Syncplay/syncplay: Client/server to synchronize media playback on mpv/VLC/MPC-HC/MPC-BE on many computers (github.com)
官方文档: Support – Syncplay
前置准备
放行端口
sudo ufw allow 8999
安装 Python 和 python-twisted
sudo apt -y install python3 python3-twisted curl
创建用户和安置源代码
创建系统用户 syncplay,用它来运行 syncplay-server
sudo adduser --disabled-login syncplay
会要求填写信息,一律回车即可,最后 输入 y 并回车 确认
下载源代码(找下最新的源代码压缩包: https://github.com/Syncplay/syncplay/releases)
curl -LO https://github.com/Syncplay/syncplay/archive/refs/tags/v1.7.3.tar.gz
解压
sudo tar -zxv -f syncplay-*.tar.gz -C /home/syncplay/
重命名
sudo mv /home/syncplay/syncplay-*/ /home/syncplay/syncplay/
设置文件所有者为 syncplay:syncplay
sudo chown -R syncplay:syncplay /home/syncplay/syncplay/
启动 Syncplay 服务端
进入拉取的目录syncplay
并运行syncplayServer.py
cd /home/syncplay/syncplay
./syncplayServer.py
应该看到如下的输出
Welcome to Syncplay server, ver. 1.6.6
PLEASE NOTE: To allow room operator passwords generated by this server instance to still work when the server is restarted, please add the following command line argument when running the Syncplay server in the future: --salt NIJGVMHKOC
这说明服务器已经正常运行了。此时其实就可以使用了:无密码,端口默认8999,地址可以用域名或者ip(建议这时候用客户端测试一下确保连接正常)。但这样太粗糙。
按Ctrl + C
停止运行。
可以记录一下
--salt
后的一串字母,它是用来对明文加密的,可以提高安全性。
自定义参数运行:密码、端口、密钥
./syncplayServer.py --password myPassword --port 4567 --salt WCRKULYHPV
更多自定义参数在这里:https://syncplay.pl/guide/server/ ,我也会放到文章结尾。
配置 systemctl 服务文件
sudo vim /lib/systemd/system/syncplay.service
填入服务文件
如果完全按照上面流程,只需要用自定义的改一下这段--salt NIJGVMHKOC --port 4567 --password myPassword
的几个参数就可以了,--salt
用前面记录的。也可以自定义更多参数。
[Unit]
Description=Syncplay Server
After=network.target
[Service]
WorkingDirectory=/home/syncplay/syncplay
User=syncplay
Group=syncplay
Type=simple
ExecStart=/home/syncplay/syncplay/syncplayServer.py --salt WCRKULYHPV --port 8999 --password myPassword
ExecStop=/bin/kill -s HUP $MAINPID
PIDFile=/home/syncplay/syncplay/syncplay.pid
RestartSec=15
Restart=always
[Install]
WantedBy=multi-user.target
保存退出,然后键入
sudo systemctl daemon-reload
sudo systemctl enable --now syncplay
这将使syncplay开机自启,并且立即运行。使用sudo systemctl status syncplay
查看状态。
到此就全部完成,如果您想了解更多,可以去官网查看: https://syncplay.pl/guide/ 。
现在您就可以断开和服务器的连接,并和朋友家人一起享受远程同步看电影!
sudo systemctl stop syncplay
sudo systemctl start syncplay
服务端自定义参数
--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 的
# If you want to use an motd, create a file with some content
echo "Welcome to our Syncplay server!" > /opt/syncplay/motd.txt
更新
删除原目录,重新下载源代码压缩包,解压重命名,再重启就可以了。
docker 部署 Syncplay
推荐用这个 Docker 镜像:ninetaillabs/syncplay-server – Docker Image | Docker Hub
原文链接: https://yanh.tech/2023/04/deploying-a-native-syncplay-server/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech) 。
保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,如果能留言互动就更好了。
可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。