如果你有一台高性能的游戏PC,并想要出门在外也能用笔记本连接她来Gaming,或只是想要高清的远程桌面。。。
接下来我们把运行游戏的PC叫做Server,笔记本叫Client,然后要用C远程登录S。为了流畅地Gaming,我们需要:
- S有一张NVIDIA显卡(任意Geforce RTX, Geforce GTX 650或更高) 。
- C可以是 macOS / Windows / Linux 系统。
- 有C和S的管理员权限。
- S、C需要连接有线网(80Mbps for 4K60fps),而不是Wifi。
- 🪜:规则,就是用来打破的!
梯子除了用来爬,还能干啥?
局域网、校内网的情况
人机分离十米就,就会爆炸?电脑放在实验室,人在宿舍?无论S和C之间是否隔着多层路由器、是否有AP隔离,也不需要修改路由器。只需要 Tailscale + NVIDIA Gamestream + Moonlight。
- 在S、C上安装、注册Tailscale、测试连接
- S上安装NVIDIA GeForce Experience
- 设置SHIELD (如果找不到SHIELD菜单见Q&A)
- C上安装Moonlight
- Moonlight手动添加计算机(S机的Tailscale ip)、设置分辨率和比特率
- 林肯死大头!
跨公网,且没有静态公网IP
没有公网ip怎么办?有条件可以申请一个公网ip:打电话给运营商声称安装监控需要公网ip,一般不需要额外手续,可以申请到动态公网ip。但动态ip刷新的时候会断开连接。
因此我们可以找一台最近的有静态公网ip的设备作为跳板机,跳板机也可以是公用集群的登陆节点/云服务器。
如果有跳板机的root权限,给跳板机安装Tailscale,组网,结束。
我们讨论没有跳板机root权限(无法使用Tailscale或Wireguard),但在跳板机上有普通账户、可以ssh跳板机的情况。主要有三步,分别是与跳板机建立ssh隧道、设置反向代理、设置NVIDIA Gamestream。以S是Win10/11系统 , C是MacOS为例:
与跳板机建立ssh隧道:
- S机安装Cygwin (for Win)
- Cygwin安装ssh、autossh、cygrunsrv
- 设置S机的端口转发:
~/.ssh/config
中加入
Host my-PortForward
HostName #跳板机地址
User #跳板机用户名
# frpc
LocalForward 54770 localhost:54770
RemoteForward 50775 localhost:50775
- 配置S机免密码ssh登录跳板机、测试ssh连接
- 将autossh加入Win的系统服务,以开机自启动
- 启动autossh服务
- C安装homebrew (for MacOS)
- 安装autossh:
brew install autossh
- 设置C机的端口转发:
~/.ssh/config
中加入
Host my-PortForward
HostName #跳板机地址
User #跳板机用户名
# frps
RemoteForward 54770 localhost:54770
- 配置C机免密码ssh登录跳板机、测试ssh连接
- 把autossh脚本加入启动项
设置反向代理(为了转发NVIDIA Gamestream的UDP流量):
- C下载frp
- C设置frps
编辑fprs.ini
[common]
bind_port = 54770
tls_enable = false
dashboard_port = 54775
# dashboard's username and password are both optional
dashboard_user = #自选用户名
dashboard_pwd = #自选密码
#enable_prometheus = true
- C运行frps
- S下载frp
- S设置fprc
编辑frpc.ini
[common]
server_addr = 127.0.0.1
server_port = 54770
tls_enable = false
admin_addr = 0.0.0.0
admin_port = 50775
admin_user = #自选用户名
admin_pwd = #自选密码
[gamestream_tcp_47984]
type=tcp
local_ip=127.0.0.1
local_port=47984
remote_port=47984
[gamestream_tcp_47989]
type=tcp
local_ip=127.0.0.1
local_port=47989
remote_port=47989
[gamestream_tcp_48010]
type=tcp
local_ip=127.0.0.1
local_port=48010
remote_port=48010
[range:gamestream_udp]
type = udp
local_ip = 127.0.0.1
local_port = 47998-48010,48011
remote_port = 47998-48010,48011
- S运行frpc
设置NVIDIA Gamestream:
- S安装Nvidia GeForce Experience
- 设置SHIELD (如果找不到SHIELD菜单见Q&A)
- C安装Moonlight
- 因为Moonlight不能添加回环地址127.0.0.1。我们在C机的hosts文件(对MacOS/Linux,在
/etc/hosts
) 末加入一行:127.0.0.1 my-pf.local
- Moonlight手动添加计算机(my-pf.local)、设置分辨率和比特率
- 林肯死大头!!
有静态公网IP
不需要内网穿透了。
小作业:
建立远程文件共享。
Q&A:
Q: NVIDIA GeForce Experience 不显示SHIELD菜单?
A: 首先,检查log。如果是NVIDIA GeForce Experience第一次启动时,查询显卡型号被墙了,打开Clash的tun模式,然后重新打开NVIDIA GeForce Experience
—
Q: 卡爆了
A: 检查是否连接了有线网、用speedtest.cn测试网速≥80Mbps、关闭Cloudflare Wrap,或类似的VPN
—
Q: 免密码ssh?
A: Google (雾
6 replies on “搭建私人4K60FPS云游戏服务器👩💻”
well done
Wowwwwwww
How does an Nvidia GeForce GPU prefer its coffee? With a lot of processing power and a bit of extra VRAM!
Why did the Nvidia GeForce card always win in the game of life? Because it knew how to optimize every single frame!
What did the Nvidia GeForce card say to the CPU after a big gaming session? “I’m exhausted from all that ray tracing!”
Why was the Nvidia GeForce card so good at solving problems? Because it had a lot of cores to handle every issue!