一、Novnc与Xrdp
尝试了vnc/rdp/kasmvnc/novnc等方案远程方案,本地用rdp还行远程卡的要命,所以远程用novnc或kasmvnc,这个是真难配置,完成了tightvncserver配置、xrdp配置、novnc的配置,可以用Win10自带的远程连接,也可以网页的novnc连接,一键安装脚本如下:
bash
#!/bin/bash
CURRENT_USER=$(logname)
CURRENT_GROUP=$(id -gn "$CURRENT_USER")
VNC_PW="password"
sudo mkdir -p "/home/${CURRENT_USER}"
sudo chown -R $CURRENT_USER:$CURRENT_GROUP "/home/${CURRENT_USER}"
sudo chmod 755 "/home/${CURRENT_USER}"
echo "[INFO] 更新软件源..."
sudo apt update
echo "[INFO] 安装中文环境..."
sudo apt install -y locales fonts-noto-cjk fonts-wqy-zenhei
sudo sed -i '/^# zh_CN.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sudo locale-gen
sudo update-locale LANG=zh_CN.UTF-8
echo "[INFO] 安装xfce4桌面与dbus-x11..."
sudo apt install -y dbus-x11 xfce4 xfce4-goodies
echo "[INFO] 安装tightvncserver服务器..."
sudo apt install -y tightvncserver
if ! command -v tightvncserver >/dev/null 2>&1; then
echo "[ERROR] tightvncserver 安装失败,脚本终止!"
exit 1
fi
PASS_FILE="$HOME/.vnc/passwd"
echo "[INFO] 自动配置tightvncserver密码..."
if [ ! -f "$PASS_FILE" ]; then
umask 0077
mkdir -p "$HOME/.vnc"
chmod go-rwx "$HOME/.vnc"
tightvncpasswd -f <<<"$VNC_PW" >"$PASS_FILE"
echo "密码已保存至 $PASS_FILE"
fi
echo "[INFO] 自动配置xstartup (XFCE)内容..."
cat > "$HOME/.vnc/xstartup" <<EOF
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
EOF
chmod u+x "$HOME/.vnc/xstartup"
echo "[INFO] 下载 noVNC 并生成脚本与证书..."
cd "$HOME"
if [ ! -d "noVNC" ]; then
git clone https://github.com/novnc/noVNC.git || { echo "[ERROR] 下载 noVNC 失败,请重新下载!"; exit 1; }
cd noVNC
#生成自签名证书以便通过 HTTPS 连接
openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem -subj "/C=CN/ST=Default/L=Default/O=Default/CN=localhost"
#生成novnc启动脚本
cat > "start.sh" <<'EOF'
#!/bin/bash
vncserver :1
~/noVNC/utils/novnc_proxy --vnc localhost:5901 --listen 8443 --cert ~/noVNC/self.pem
vncserver -kill :1 > /dev/null 2>&1
EOF
chmod u+x start.sh
fi
echo "[INFO] 创建noVNC 代理的Systemd服务..."
# 配置 Systemd 服务
sudo tee "/etc/systemd/system/novnc.service" > /dev/null <<EOF
[Unit]
Description=noVNC
After=network.target
[Service]
Type=simple
User=${CURRENT_USER}
Group=${CURRENT_GROUP}
ExecStart=/home/${CURRENT_USER}/noVNC/start.sh
Restart=always
[Install]
WantedBy=multi-user.target
EOF
echo "[INFO] 配置 XRDP..."
sudo apt install -y xrdp xorgxrdp
echo "/usr/bin/xfce4-session" > "$HOME/.xsession"
sudo adduser xrdp ssl-cert
sudo systemctl daemon-reload
echo "[INFO] 启动XRDP服务..."
sudo systemctl enable xrdp
sudo systemctl restart xrdp
echo "[INFO] 启动noVNC服务..."
sudo systemctl enable novnc
sudo systemctl restart novnc
echo "[SUCCESS] 安装完成!"
echo "稳定访问地址: https://$(hostname -I | awk '{print $1}'):8443/vnc.html"
二、Kasmvnc与Xrdp
尝试了kasmvnc与xrdp的方案,这个kasmvnc不知为什么找不到内网IP,只能kasmvncserver -publicIP 内网IP 才能运行在飞牛Nas上,同一用户不可以同时登陆,要注销了才能登另一个,除非新建另一个,确实难配置,一键安装脚本kasmvnc与xrdp:
bash
#!/bin/bash
CURRENT_USER=$(logname)
CURRENT_GROUP=$(id -gn "$CURRENT_USER")
VNC_PW="password"
sudo mkdir -p "/home/${CURRENT_USER}"
sudo chown -R $CURRENT_USER:$CURRENT_GROUP "/home/${CURRENT_USER}"
sudo chmod 755 "/home/${CURRENT_USER}"
echo "[INFO] 更新软件源..."
sudo apt update
echo "[INFO] 安装中文环境..."
sudo apt install -y locales fonts-noto-cjk fonts-wqy-zenhei
sudo sed -i '/^# zh_CN.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sudo locale-gen
sudo update-locale LANG=zh_CN.UTF-8
echo "[INFO] 安装xfce4桌面与dbus-x11..."
sudo apt install -y dbus-x11 xfce4 xfce4-goodies
echo "[INFO] 配置 XRDP..."
sudo apt install -y xrdp xorgxrdp
echo "/usr/bin/xfce4-session" > "$HOME/.xsession"
#下载 KasmVNC 安装包
KASMVNC_VERSION="1.4.0"
DEB_NAME="kasmvncserver_bookworm_${KASMVNC_VERSION}_amd64.deb"
DOWNLOAD_URL="https://github.com/kasmtech/KasmVNC/releases/download/v${KASMVNC_VERSION}/${DEB_NAME}"
echo "[INFO] 开始安装 KasmVNC ${KASMVNC_VERSION}"
# 进入临时目录
WORKDIR="/tmp/kasmvnc_install"
mkdir -p "$WORKDIR"
cd "$WORKDIR"
echo "[INFO] 下载 KasmVNC 安装包..."
if [[ -f "$DEB_NAME" && -s "$DEB_NAME" ]]; then
echo "[INFO] 安装包已存在且有效:$DEB_NAME,跳过下载"
else
echo "[INFO] 下载安装包..."
rm -f "$DEB_NAME"
if ! wget -c "$DOWNLOAD_URL" --show-progress; then
echo "[ERROR] 下载失败:$DOWNLOAD_URL,请重新下载!"
exit 1
fi
fi
echo "[INFO] 安装 KasmVNC..."
if ! sudo apt install -y "./$DEB_NAME"; then
echo "[ERROR] KasmVNC 安装失败"
exit 1
fi
echo "[INFO] 安装完成,检查版本信息..."
dpkg -s kasmvncserver | grep Version
echo "[INFO] 添加当前用户到ssl-cert组..."
sudo adduser xrdp ssl-cert
sudo adduser $USER ssl-cert
echo "[INFO] 配置KasmVNC的Systemd服务..."
sudo tee "/etc/systemd/system/kasmvnc.service" > /dev/null <<EOF
[Unit]
Description=KasmVNC
After=network.target
[Service]
Type=forking
User=${CURRENT_USER}
ExecStart=/usr/bin/kasmvncserver -publicIP $(hostname -I | awk '{print $1}')
ExecStop=/usr/bin/kasmvncserver -kill :1
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable xrdp
sudo systemctl restart xrdp
sudo systemctl enable kasmvnc
echo "[INFO] KasmVNC启动xfce桌面..."
sg ssl-cert -c "kasmvncserver -select-de xfce -publicIP $(hostname -I | awk '{print $1}')"
三、安装chrome浏览器
bash
#下载最新的 Google 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 --fix-broken install
#沙箱模式
google-chrome-stable --no-sandbox
参考教程:
1、使用 noVNC 通过浏览器访问 Ubuntu 22 桌面的构建方法