Ubuntu 20.04 LTS 中的 x11vnc 和 noVNC开机启动

1,x11vnc

先安装x11vnc:

sudo apt install x11vnc

将x11vnc设置成一个服务:

服务文件:x11vnc.service

[Unit]
Description=x11vnc (Remote access)
After=display-manager.service network.target syslog.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -display :0 -shared -nomodtweak -forever -capslock -repeat -xkb -xrandr "resize" -rfbport 5900
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=graphical.target

放到 /etc/systemd/system/目录下,然后执行:

systemctl enable x11vnc


2,noVNC

noVNC:https://github.com/novnc/noVNC

websockify:https://github.com/novnc/websockify

直接git clone下放到对应的目录就可以正常工作的,我这里由于我打过tar压缩包,所以还需要进行解压。

先将novnc的文件下载到本地根目录(/),对应的解压命令(如果没有放置在根目录,则下面的解压命令相应改动就可以):

cd / && tar -xzf /noVNC-1.4.0.tar.gz -C /opt && mv /opt/noVNC-1.4.0 /opt/noVNC && ln -s /opt/noVNC/vnc.html /opt/noVNC/index.html && \
    tar -xzf /websockify.tgz -C /opt/noVNC/utils && rm -rf /websockify.tgz /noVNC-1.4.0.tar.gz

 

将novnc设置成一个服务:

服务文件:novnc.service:

[Unit]
Description=noVNC remote desktop server
After=x11vnc.service
 
[Service]
Type=simple
ExecStart=/opt/noVNC/utils/novnc_proxy --vnc localhost:5900 --listen 8080 --heartbeat 10
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
Restart=on-failure
 
[Install]
WantedBy=graphical.target

同样放到 /etc/systemd/system/目录下,然后执行:

systemctl enable novnc

 

后记:重启机器后发现novnc服务启动成功了,但是x11vnc服务启动失败,使用 journalctl -u x11vnc 命令查看具体的错误的时候可以看到一句:

x11vnc was unable to open the X DISPLAY: ":0", it cannot continue

 无法解决使用另外的方式启动:在特定用户登录后执行脚本,可以将脚本添加到用户的启动项中。

在用户的主目录中,有一个名为 .config/autostart/ 的目录,你可以在其中创建一个 .desktop 文件,指定要运行的脚本。例如:

cd ~/.config/autostart/
touch my_start_vnc.desktop vim my_start_vnc.desktop
[Desktop Entry]
Type=Application
Exec=/path/to/my_start_vnc.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=My Startup Script
Comment=Run my custom startup script

然后在上一步设定的目录创建my_start_vnc.sh ,并写入如下x11vnc的启动命令:

/usr/bin/x11vnc -display :0 -shared -nomodtweak -forever -capslock -repeat -xkb -xrandr "resize" -rfbport 5900

给 my_start_vnc.sh 文件赋予执行权限:

chmod 777 my_start_vnc.sh

 novnc应该也可以放在这个文件里执行而不需要使用.service服务的方式。

posted @ 2023-09-12 15:32  透明飞起来了  阅读(1411)  评论(0编辑  收藏  举报