为无头 Linux 服务器提供完整的桌面 GUI 控制。创建虚拟显示(Xvfb + XFCE),让你可以在 VPS/云服务器上运行和控制桌面应用,无需物理显示器。
:99运行设置脚本安装所有组件(systemd 服务、无闪烁 VNC):
./scripts/setup-vnc.sh
这将安装:
:99所有服务开机自启,崩溃自动重启。
| 操作 | 脚本 | 参数 | 描述 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| screenshot | screenshot.sh | — | 截屏 → base64 PNG |
| cursor_position | cursor_position.sh | — | 获取当前鼠标 X,Y 坐标 |
| mouse_move | mouse_move.sh | x y | 移动鼠标到指定坐标 |
| left_click | click.sh | x y left | 左键点击 |
| right_click | click.sh | x y right | 右键点击 |
| middle_click | click.sh | x y middle | 中键点击 |
| double_click | click.sh | x y double | 双击 |
| triple_click | click.sh | x y triple | 三击(选中行) |
| left_click_drag | drag.sh | x1 y1 x2 y2 | 从起点拖拽到终点 |
| left_mouse_down | mouse_down.sh | — | 按下鼠标键 |
| left_mouse_up | mouse_up.sh | — | 释放鼠标键 |
| type | type_text.sh | "text" | 输入文本(50字符分块,12ms延迟) |
| key | key.sh | "combo" | 按键(Return, ctrl+c, alt+F4) |
| hold_key | hold_key.sh | "key" secs | 按住按键指定时长 |
| scroll | scroll.sh | dir amt [x y] | 向上/下/左/右滚动 |
| wait | wait.sh | seconds | 等待后截屏 |
| zoom | zoom.sh | x1 y1 x2 y2 | 裁剪区域截图 |
export DISPLAY=:99
# 截屏
./scripts/screenshot.sh
# 点击坐标
./scripts/click.sh 512 384 left
# 输入文本
./scripts/type_text.sh "Hello world"
# 按键组合
./scripts/key.sh "ctrl+s"
# 向下滚动
./scripts/scroll.sh down 5
ctrl+End 跳转到页面底部通过浏览器或 VNC 客户端实时观看桌面。
# SSH 隧道(在本地机器运行)
ssh -L 6080:localhost:6080 your-server
# 在浏览器中打开
http://localhost:6080/vnc.html
# SSH 隧道
ssh -L 5900:localhost:5900 your-server
# VNC 客户端连接到 localhost:5900
添加到 ~/.ssh/config 实现自动隧道:
Host your-server
HostName your.server.ip
User your-user
LocalForward 6080 127.0.0.1:6080
LocalForward 5900 127.0.0.1:5900
然后只需 ssh your-server,VNC 即可使用。
# 检查状态
systemctl status xvfb xfce-minimal x11vnc novnc
# 需要时重启
sudo systemctl restart xvfb xfce-minimal x11vnc novnc
xvfb → xfce-minimal → x11vnc → novnc
-noxdamage 提高稳定性export DISPLAY=:99
# Chrome — 仅在内核缺少用户命名空间支持时使用 --no-sandbox
# 检查: cat /proc/sys/kernel/unprivileged_userns_clone
# 1 = 沙箱可用,不要使用 --no-sandbox
# 0 = 沙箱失败,需要 --no-sandbox 作为后备
# 不必要时使用 --no-sandbox 会导致不稳定和崩溃
if [ "$(cat /proc/sys/kernel/unprivileged_userns_clone 2>/dev/null)" = "0" ]; then
google-chrome --no-sandbox &
else
google-chrome &
fi
xfce4-terminal & # 终端
thunar & # 文件管理器
注意: Snap 浏览器(Firefox、Chromium)在无头服务器上有沙箱问题。改用 Chrome .deb:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt-get install -f
如果不想使用 setup-vnc.sh,可以手动设置:
# 安装软件包
sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify
# 运行设置脚本(生成 systemd 服务,屏蔽 xfdesktop,启动所有服务)
./scripts/setup-vnc.sh
如果更喜欢完全手动设置,setup-vnc.sh 脚本在内联生成所有 systemd 服务文件 — 阅读它获取确切的服务定义。
pgrep xfwm4sudo systemctl restart xfce-minimal/usr/bin/xfdesktop)--heartbeat 30 参数-noxdamage 参数-noxdamage -noxfixes 参数由 setup-vnc.sh 安装:
xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify
共 1 个版本