529 字
3 分钟
配置适用于 ArchLinux KDE 桌面环境的 KasmVNC
安装基于 X11 的 KDE 桌面环境
https://wiki.archlinux.org/title/KDE
https://archlinux.org/news/plasma-640-will-need-manual-intervention-if-you-are-on-x11/
sudo pacman -S plasma-meta plasma-x11-session konsole dolphin pipewire安装 KasmVNC
- 使用 AUR 安装
yay -S kasmvncserver-bin openssl-1.1- 生成初始配置
kasmvncserver选择手动设置密码 (键入选项 1)
完成后, 会出现文件 ~/.kasmpasswd
配置 KasmVNC
修改如下位置的配置文件
/etc/kasmvnc/kasmvnc.yaml如下配置文件会在 59000 端口开启外部可访问的 WebVNC
network: protocol: http interface: 0.0.0.0 websocket_port: 59000 use_ipv4: true use_ipv6: true udp: public_ip: auto port: auto payload_size: auto stun_server: auto ssl: pem_certificate: /etc/ssl/certs/ssl-cert-snakeoil.pem pem_key: /etc/ssl/private/ssl-cert-snakeoil.key require_ssl: false当 network.ssl.require_ssl 为 false 时 允许 HTTP 访问, 但是仍需要指定同级配置下的 pem_key 与 pem_certificate
要使用 openssl 生成 key 与 certificate, 请使用如下命令生成有效期 90 天的 RSA 4096bit 证书至默认位置:
sudo openssl req -x509 -nodes -days 90 -newkey rsa:4096 \ -keyout /etc/ssl/private/ssl-cert-snakeoil.key \ -out /etc/ssl/certs/ssl-cert-snakeoil.pem \ -subj "/C=CN/ST=Default/L=Default/O=KasmVNC/CN=${HOST:default-host}"
sudo chmod 644 /etc/ssl/certs/ssl-cert-snakeoil.pemsudo chmod 600 /etc/ssl/private/ssl-cert-snakeoil.keySEE ALSO
要使 Caddy 反向代理忽略 TLS 证书有效性, 请使用:
reverse_proxy https://<url> {transport http {tls_insecure_skip_verify}}
配置 VNC 启动脚本
打开如下位置脚本文件
~/.vnc/xstartup写入如下脚本内容
#!/bin/bashunset DBUS_SESSION_BUS_ADDRESSunset SESSION_MANAGER
export XDG_RUNTIME_DIR="/run/user/$(id -u)"mkdir -p "$XDG_RUNTIME_DIR"chmod 700 "$XDG_RUNTIME_DIR"
export KWIN_COMPOSE=O2 # use OpenGL 2 as render, change it in needexport XDG_CURRENT_DESKTOP="KDE"
launch_session() { pipewire & pipewire-pulse & wireplumber &
exec startplasma-x11}
export -f launch_session
# launch with dbusexec dbus-run-session bash -c launch_session尝试运行
运行如下命令后, 会在上方配置的 network.websocket_port 端口启动位于 X11 的 DISPLAY 0 的 WebVNC
kasmvncserver :0如果该命令较长时间未能成功, 或显示 Failed to get public IP, please specify it with -publicIP 字样, 请修改配置文件的 network.udp.public_ip 字段, 或在启动 kasmvncserver 时使用 -publicIP <public-ipaddr> 指定 公网 IP 地址 (没有者尝试填写内网地址)
经测试: 位于反向代理后的 KasmVNC 将 network.udp.public_ip 字段配置为内网地址是通过反向代理访问的
使用 systemd 开机自启动服务
- 以免用户服务在 SSH 终止后退出
loginctl enable-linger lovemilk- 写入如下位置文件 (文件(夹)不存在就创建)
~/.config/systemd/user/kasmvnc.service[Unit]Description=KasmVNC Service for <username>After=network.target
[Service]Type=simple
Environment="XDG_SESSION_TYPE=x11"Environment="XDG_CURRENT_DESKTOP=KDE"ExecStart=/usr/bin/bash -c "/usr/bin/kasmvncserver :0 -fg"
Restart=on-failureRestartSec=5
[Install]WantedBy=default.target- 使 Systemd 刷新出该服务
systemctl --user daemon-reload- 启用并启动该服务
systemctl --user enable --now kasmvnc.service 配置适用于 ArchLinux KDE 桌面环境的 KasmVNC
https://notes.lovemilk.top/posts/deployment/kasmvnc/archlinux-kde/