起因
虽说服务器上一般没有必要跑图形界面,但还是偶尔会碰到有些烦人的程序CLI不能跑,比如百度网盘。
正巧,远古MC存档的备份就在百度网盘上……最后折腾了半天,也没成功把远程桌面搞起来,最后还是用Baidupcs-Go
这个第三方CLI客户端解决的问题。
不过前几天我发现了WayVNC
,十分适合没有物理屏幕的远程服务器。一方面是FAQ里写得清清楚楚,另一方面是用wlroots
做合成器〔Compositor〕的窗口管理器,比如sway
,十分的轻量。
搭建
因为阿里云的服务器用的是debian 10 buster这个远古版本,包基本上旧得不行,比如就没有sway。要安装可以参照sway的wiki关于debian 10的这篇文章手动编译,麻烦的很。所以选择用Nix。
安装Nix
参照Nix的文档.
执行脚本,安装Nix(多用户):
$ sh <(curl -L https://nixos.org/nix/install) --daemon
然后重启一下服务器。Nix就安装好了。
安装所需的软件包
nix-env --install --attr sway wayvnc
我习惯安个浏览器和终端仿真器
nix-env --install --attr firefox konsole
为什么是Qt写的konsole?因为我发现更轻量的kitty和alacritty都没法用,似乎都和openGL没法使用有关。至于为什么openGL没法用,我不太懂。
然后记得配置一下sway。
启动wayvnc
首先进入nix-shell
。
nix-shell -p sway wayvnc firefox konsole
然后按照WayVNC的FAQ,以无头〔headless〕模式启动sway。
设置三个环境变量
export WLR_BACKENDS=headless
export WLR_LIBINPUT_NO_DEVICES=1
export WAYLAND_DISPLAY=wayland-1
然后启动sway:
sway & # 加上&是为了sway可以在后台运行
然后启动WayVNC
wayvnc 0.0.0.0 2304 # 端口号改成自己需要的
如果一切正常,那么现在可以用VNC工具,比如vinagre
,连接远程桌面了。
注意!如果不进一步配置,那么这个连接没有任何密码、没有加密,也就不安全。如果要长期开着WayVNC,建议加上身份校验,参考WayVNC的GitHub页面。
如果要调整屏幕的大小,开启sway之后执行下面的命令:
swaymsg output "HEADLESS-1" resolution 1920x1080 # 大小自己调
后记
虽说服务器带宽有点小,画面传过来有点卡顿掉帧,但毕竟不是不能用……应付偶尔的需求足够了。