Zerotier Moon搭建和Android Moonlight串流完整过程

前言

只因没有笔记本电脑和掌机,为了出差玩游戏我最先想到的是Steam Link和AMD Link,但是Steam Link延迟高且手机需要使用加速器,动起来画面模糊等原因被我作为迫不得已不去用的方案,而Steam Link因为我没有公网IP v4地址,甚至运营商没给我IP v6地址,所以只能作罢。在寻找串流软件过程中,我得知了Moonlight,但因我使用的是AMD显卡,所以又找到了Sunshine,并决定使用此软件进行串流。首先叠个甲吧,因为我本人没有任何技术可言,从来没用过Linux也就更别说学习过编程和网络知识了,在学习和搭建过程中发现网上没有一篇十分完整且详细到能让纯小白看懂的流程,所以我打算做一次缝合,把我的学习和搭建流程罗列出来,以帮助在苦苦寻找教程的玩家们,篇内如有错误或可改进地方也十分希望大家指正提出。

创建Zerotier虚拟局域网

注册登录并创建

首先前往ZeroTier | Global Area Networking注册并登录,登陆后点击“Create A Network”并在框中随便选择一个名字,等待创建完成。

将电脑加入虚拟局域网

1. 首先根据自己电脑系统前往Download (zerotier.com)下载对应的客户端并安装打开。然后打开刚刚注册的虚拟局域网并复制自己“Network ID”下的字符。

2. 打开Zerotier客户端控制面板,选择“Join New Network”后,填入刚刚复制好的“Network ID”并点击“Join Network”。

3. 回到ZeroTier网页的配置页面,找到“Auth?”,并将刚刚加入网络的设备打勾。只有这样才算完成了加入。

配置Moon

云服务器的选择

选择一个云服务器提供商,因为本人也是小白不知道如何选择,现在使用的是腾讯云提供的7天试用,并选择的Ubantu系统,所以具体选择无从推荐,先从大厂白嫖试用练手,看后续效果再决定。

配置Zerotier Moon

1. 在云服务器上安装 zerotier-one。在腾讯云内开机并登录所租用的云服务器。直接输入下列命令并回车即可。

curl -s https://install.zerotier.com | sudo bash

 2. 将云服务器加入刚刚创建的虚拟局域网。注意:此处的xxxxxxxx为刚刚创建的“Network ID”,输入时要将其进行替换。然后回到ZeroTier网页的配置页面,找到“Auth?”,并将云服务器加入网络的设备打勾。(类似于“将电脑加入虚拟局域网”一栏中的步骤)

sudo zerotier-cli join xxxxxxxx

3. 配置Moon。这里会遇到个问题,就是权限不够。所以我们先来获取Root。

sudo passwd

会提示你输入新密码,注意:密码输入时是不会显示的!然后再次输入密码。

su root

再次输入刚刚输入的密码即可。输入命令前的$号已经变成#,就证明已经成功。

4. 进入 zerotier-one 程序所在的目录,默认为 /var/lib/zerotier-one。

cd /var/lib/zerotier-one

生成 moon.json 配置文件

sudo zerotier-idtool initmoon identity.public >> moon.json

编辑moon.json配置文件

sudo vi moon.json

这时会弹出很多文字,我们找到 “stableEndpoints”: [] ,将中括号内的填入“ServerIP/9993”(这里的引号也是必填内容!),ServerIP是自己的云服务器公网IP地址,在实例内可以找到“主IPv4地址”,将下方的公网IP替换“ServerIP”。注意:这里会出现无法输出,此时按"i"就会进入编辑界面,蓝色方块前一位就是输入位置,替换输入完成后点击“Esc”推出编辑。然后依次输入":""w""q"三个字符即可返回输入命令界面。

5. 生成.moon 文件

sudo zerotier-idtool genmoon moon.json

6. 将生成的000000xxxxxxxxxx.moon移动到moons.d目录

sudo mkdir moons.d
sudo mv 000000xxxxxxxxxx.moon moons.d

这里的“000000xxxxxxxxxx”为上一步生成的.moon文件名,向上查看自己生成的文件名,将命令内的进行替换即可。

7. 重启zerotier-one服务

sudo systemctl restart zerotier-one

在云服务器的安全组内允许9993端口的UDP流量通过。其实这里我把UDP:47998 47999 48000 48002 48010和TCP:47984 47989 48010都允许了,在我写这篇文章时我有去寻找我之前哪里看到了Sunshine需要这些端口,但是没有找到,后续如有找到我会在“致谢”一栏里进行更新。

8. 配置节点环绕Moon

zerotier-cli.bat orbit moon的网络号 moon的网络号

在个人电脑上以管理员方式运行终端(右键开始菜单内即可找到),将“moon的网络号”替换为个人生成的“000000xxxxxxxxxx”。出现“200 orbit OK”即可。

设置Sunshine

前往Releases · LizardByte/Sunshine · GitHub下载最新版,如打不开还请科学上网。安装完成后会跳出一个网页,要你输入账号密码,这里输入后记得记好,要不然只能重装Sunshine。

设置方面我只将“UPnP”打开,然后用一次Steam Link自动安装虚拟声卡即可,这样可以避免无声和自己安装步骤繁琐的情况。

Android客户端加入Moon

这里所需要的文件请前往Releases · kaaass/ZerotierFix · GitHub下载,如网站打不开还请科学上网。

1. 打开Zerotier Fix,点击右下角加号,在“Network ID”输出Zerotier网站创建的Netowork ID并添加,然后前往Zerotier登录并将手机打勾完成加入。(类似于“将电脑加入虚拟局域网”一栏中的步骤)

2. 登录腾讯云实例后,点击左上角文件夹标志的“SFTP”打开文件管理,在根目录里依次打开“/var/lib/zerotier-one”,找到里边的“planet”文件,点击下载图标即可。

3. 安装好Zerotier FIX并将下载好的planet传输到手机上,打开软件点击右上角“设置”“启动自定义planet”“选择从文件导入”,选择刚才的palnet文件,提示导入成功即切换planet成功。

4. 加入moon服务器,打开软件点击右上角“入轨”“右下角加号”“入轨 通过入轨导入”,输入“Moon地址”和“Moon种子”,地址和种子为同一字符,均为Zerotier网站上“Members”一栏内,云服务器"Address”十位字符。输入并添加,提示成功后,会在入轨界面看到moon服务的ID。

Android Moonlight客户端配置

1. 前往Releases · moonlight-stream/moonlight-android · GitHub下载Android客户端,如网站打不开还请科学上网。

2. 将电脑、云服务器(理论已经连接)和手机的Zerotier连接上线后打开Moonlight。

3. 此时软件会自动搜索网络内的设备,第一次添加电脑会一个屏幕中间带个锁的图标,此时证明已经搜索到了电脑,但是没有将二者配对。

4. 在电脑上右键Sunshine并点击“Open Sunshine”打开网址,并输入自己在“设置Sunshine”一栏中所设置的用户名和密码。

5. 登陆后点击页面左上角的“PIN”,此时点击手机上的带锁的显示器图标,会给出一组数字,将此数字输入网页内并点击“Send”完成配对。

6. 电脑前往Speedtest by Ookla - The Global Broadband Speed Test测试电脑网络的上行带宽。并根据实际网络情况和需求对手机版Moonlight内的分辨率、帧率、码率等进行个性化调整。

后记

最后我对细节进行了一点点优化,买了向日葵的智能插座并开启主板的AC Recovery,这样我可以通过控制插座开关电源来实现远程开机。使用Autologon来自动输入密码完成开机的登录,否则软件无法运行也就没办法串流。

致谢

以上所有内容的原文链接均在下方,这些文章对我完成此次游戏串流予以了大力支持,博主在此表示衷心感谢!

Private Root Servers | ZeroTier Documentation

一个能用的 Moonlight + Zerotier 游戏串流教程 | y=xsinx (gump.cloud)

详解Linux下出现permission denied的解决办法-腾讯云开发者社区-腾讯云 (tencent.com)

ZeroTier-One在三丰台搭建moon完整过程 - 知乎 (zhihu.com)

私有化zerotier one,第三方控制器ztncui折腾过程 - 知乎 (zhihu.com)

Zerotier Moon 和 Zerotier Planet 节点搭建_哔哩哔哩_bilibili

你可能感兴趣的:(docker,android)