Linux noVNC远程桌面(xfce)部署
一、安装 VNC 服务器和桌面环境
Notebook实验
常用vnc服务
VNC (Virtual Network Computing) 是一种远程桌面协议,可以让你通过网络访问服务器的图形界面。
- TurboVNC:专为图形密集型应用设计,尤其适合 3D 可视化和高分辨率图像的远程传输。与 VirtualGL 集成后,可以有效利用服务器端 GPU 进行加速,适合科学计算、CAD 和其他图形密集型的场景。
- TigerVNC:在性能和图像质量之间提供良好平衡,支持 3D 应用。适合用户希望在一般的远程桌面应用和图形应用中获得较好体验的场景。
- RealVNC:为企业和专业用户设计,提供了较为完整的远程桌面解决方案,支持多设备远程连接,并且在付费版本中提供了更多的性能优化和安全特性。
- TightVNC:其压缩算法适合低带宽连接,虽然在图形密集型应用中表现不如 TurboVNC,但对于普通办公场景,它仍然是一个简单可靠的解决方案。
- X2Go:基于 NX 协议,支持低带宽环境下的高效远程连接,尤其适合多媒体和多显示器场景,并且在低延迟和高性能的图像传输上表现优异。
常用桌面环境:
-
Xfce Desktop 是一款轻量级的桌面环境,专为资源受限的系统设计。它具有简洁、快速、可定制的特点,用户界面清爽、现代,运行时占用系统资源极少。尽管轻量化,Xfce 仍然提供了常见的工具和应用程序,如文件管理器、终端模拟器、文本编辑器、图像查看器和音频播放器等。
-
KDE,全称 K Desktop Environment,是一个开源的桌面环境。它功能丰富、可高度定制,并提供用户友好的图形界面,旨在为 Linux 和类 UNIX 操作系统用户提供先进的用户体验。
-
MATE 是一个基于传统 GNOME 2 的轻量级桌面环境,旨在保留经典的桌面体验,提供简洁易用的界面,适合喜欢传统桌面风格的用户。
-
Cinnamon 是由 Linux Mint 开发的现代化桌面环境,设计目标是提供直观、易用且吸引人的用户体验。它为用户提供了一个熟悉、高效的桌面环境,结合了强大的功能和简洁的界面。
我选择xfce桌面和TurboVNC做下面的测试。
1. 选择镜像并开机
远程服务器,使用ubuntu开机,我是在bohrium平台开机,开机界面选择镜像ubuntu:22.04-py3.10开机,当然其他镜像也可以。
2. 安装所需的依赖包
在终端中运行以下命令,确保系统包管理器是最新的,并安装图形桌面环境和 VNC 服务器所需的包:
安装TurboVNC
wget -q -O- https://packagecloud.io/dcommander/turbovnc/gpgkey | gpg --dearmor >/etc/apt/trusted.gpg.d/TurboVNC.gpg
wget https://raw.githubusercontent.com/TurboVNC/repo/main/TurboVNC.list
mv TurboVNC.list /etc/apt/sources.list.d/
apt update && apt install turbovnc -y
安装完之后加一下软链(测试安装TightVNC和TigerVNC的时候是自动加上的)
ln -s /opt/TurboVNC/bin/vncserver /usr/bin/vncserver
ln -s /opt/TurboVNC/bin/Xvnc /usr/bin/Xvnc
ln -s /opt/TurboVNC/bin/vncconnect /usr/bin/vncconnect
ln -s /opt/TurboVNC/bin/vncpasswd /usr/bin/vncpasswd
ln -s /opt/TurboVNC/bin/vncviewer /usr/bin/vncviewer
ln -s /opt/TurboVNC/bin/webserver /usr/bin/webserver
cp /opt/TurboVNC/bin/xstartup.turbovnc /usr/bin/
apt install xfce4 xfce4-goodies -y
- xfce4: 轻量级桌面环境,适合远程使用。
- xfce4-goodies: 提供一些附加工具,提升桌面体验。
3.设置环境变量并启动 VNC
由于我们以 root 用户身份操作,需要确保 USER 环境变量正确设置。执行以下命令:
export USER=root
启动 VNC 服务器,并通过交互式命令设置访问密码:
vncserver
系统会提示你输入密码,确保选择一个安全的密码。之后,还会询问是否创建只读访问用户,根据需要选择。
关闭 VNC 服务
完成密码设置后,我们可以暂时关闭 VNC 服务:
vncserver -kill :1
其中 :1 是第一个 VNC 显示编号。如果你有多个 VNC 会话,请确保指定正确的编号。
4. 修改 VNC 配置,使用 XFCE 启动桌面环境
为了让 VNC 使用我们刚安装的 XFCE 桌面环境,需要修改启动配置文件。
编辑配置文件:
使用文本编辑器(如 vi 或 vim)打开配置文件:
vim ~/.vnc/xstartup
将文件内容替换为以下内容:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
- xrdb $HOME/.Xresources:加载用户的 X 资源配置文件。
- startxfce4 &:启动 XFCE4 桌面环境。
5. 给vnc脚本添加执行权限
修改完配置文件后,赋予它执行权限:
chmod +x ~/.vnc/xstartup
6. 启动 VNC 服务器
现在可以重新启动 VNC 服务器了:
vncserver :1
如果配置正确,VNC 服务器将启动 XFCE 桌面环境。
二、安装noVnc
noVNC 是一个基于 HTML5 的 VNC 客户端,它允许你直接通过浏览器访问 VNC 会话,无需额外的客户端软件。
参考文档:https://github.com/novnc/noVNC
1. 下载 noVNC 源文件
我们将下载 noVNC 的最新稳定版本 (1.5.0),运行以下命令:
wget https://codeload.github.com/novnc/noVNC/tar.gz/refs/tags/v1.5.0 -O noVNC-1.5.0.tar.gz
2. 解压缩下载的文件
tar -zxvf noVNC-1.5.0.tar.gz -C /root/
3. 进入 noVNC 目录
切换到 noVNC 文件夹:
cd /root/noVNC-1.5.0
生成密钥
openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
4. 启动 noVNC 代理
通过 noVNC 代理将 VNC 服务器的内容转发到网页上。运行以下命令:
./utils/novnc_proxy --vnc localhost:5901 --listen 0.0.0.0:50001 --cert self.pem --key self.pem --ssl-only --file-only
- –vnc localhost:5901:指定 VNC 服务地址,启动时通过 :n来指定 vncserver :1就是5901,:2就是5902,当然也可以通过-rfbport来指定具体的端口号。
- –listen 0.0.0.0:50001:指定 noVNC 监听的地址和端口,50001 是访问 noVNC 的端口。
- –cert和–key可以用刚才自己生成的证书
- –ssl-only 只允许ssl连接
- –file-only 禁止文件目录展示
其他参数参考文档:https://github.com/novnc/noVNC/blob/master/utils/novnc_proxy
5. 访问 noVNC
打开浏览器,访问服务器的 50001 端口,密码为上面vnc安装时设置的密码。请求地址格式如下:
https://<服务器IP地址>:50001/vnc.html?password=123456&autoconnect=true&reconnect=true&resize=remote
将 <服务器IP地址> 替换为你服务器的实际 IP 地址,即可在浏览器中看到远程桌面登录界面。输入你之前在 vncserver 步骤中设置的密码,即可连接到桌面环境。

三、安装常用软件
1. 支持中文
在终端中安装中文语言包
打开终端,执行以下命令安装中文语言包:
apt install language-pack-zh-hans language-pack-gnome-zh-hans
安装字体
为了正确显示中文字符,通常需要安装中文字体。可以执行以下命令来安装常见的中文字体包:
apt install fonts-wqy-zenhei
apt install fonts-wqy-microhei
2. 安装 Google Chrome浏览器
首先,下载 Google Chrome 安装包:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
然后,使用 dpkg 安装下载的包:
dpkg -i google-chrome-stable_current_amd64.deb
如果有依赖问题,运行以下命令来解决依赖关系后再重新安装:
apt --fix-broken install
在桌面环境下,通过命令行运行
google-chrome --no-sandbox
3. 安装OVITO
apt update
安装Qt所需的依赖库,包括libxcb相关的库。
apt install -y libxcb1 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render0 libxcb-render-util0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb-xinerama0 libxcb-xkb1 libxkbcommon-x11-0 libxcb-cursor0
确保安装了其他必要的库,如libxkbcommon和libxkbcommon-x11。
apt install -y libxkbcommon0 libxkbcommon-x11-0
下载ovito并解压,双击安装目录下/bin/ovito,也可以创建桌面快捷方式
wget https://www.ovito.org/download/master/ovito-basic-3.10.6-x86_64.tar.xz
测试

4. 安装VESTA
wget https://jp-minerals.org/vesta/archives/testing/VESTA-gtk3-x86_64.tar.bz2
解压运行

相关文章:
Linux noVNC远程桌面(xfce)部署
一、安装 VNC 服务器和桌面环境 Notebook实验 常用vnc服务 VNC (Virtual Network Computing) 是一种远程桌面协议,可以让你通过网络访问服务器的图形界面。 TurboVNC:专为图形密集型应用设计,尤其适合 3D 可视化和高分辨率图像的远程传输…...
【网络安全】身份认证
1. 身份认证 1.1 定义 身份认证(Authentication)是确认用户身份的过程,确保只有授权的用户才能访问系统或资源。它通常涉及验证用户提供的凭证,如密码、生物特征或其他识别标志。 1.2 重要性 身份认证是信息安全的第一道防线&…...
LeetCode - #124 二叉树中的最大路径和(Top 100)
文章目录 前言1. 描述2. 示例3. 答案关于我们前言 本题为 LeetCode 前 100 高频题 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新到 123 期…...
Java:插入排序
目录 排序的概念 插入排序 直接插入排序 哈希排序 排序的概念 排序:所谓的排序,就是使一串记录,按照某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个…...
How FAR ARE WE FROM AGI?(ICLR AGI Workshop 2024)概览
关注B站可以观看更多实战教学视频:hallo128的个人空间 How FAR ARE WE FROM AGI?官网 How FAR ARE WE FROM AGI?(ICLR AGI Workshop 2024) 该研讨会将于2024年5月11日在奥地利维也纳以混合模式举行,作为 ICLR 2024年会议的一部…...
leetcode刷题day33|动态规划Part02(62.不同路径、63. 不同路径 II、 343.整数拆分、96.不同的二叉搜索树)
62.不同路径 机器人从(0 , 0) 位置出发,到(m - 1, n - 1)终点。 动规五部曲 1、确定dp数组(dp table)以及下标的含义 dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路…...
基于Python大数据的B站热门视频的数据分析及可视化系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…...
matlab-批处理图像质量变化并形成折线图 (PSNR)
%修改路径就能用,图片分辨率要一致 %clc;clear all;close all;tic;%清理内存 file_pathE:\test\resources\image\;% 批量图像所在的文件夹下 file_save_pathE:\test\resources\SaveImage\;% 要存储的地址 img_path_listdir(strcat(file_path,*.jpg));% 获取批量bm…...
[Doc][Ros2]ros2中Qos(Quality of Service,服务质量)介绍
在 ROS 2 中,QoS(Quality of Service,服务质量)是用于控制节点之间消息传递的可靠性、历史存储和数据持久性等方面的机制。通过 QoS 设置,用户可以更细粒度地控制消息传递的行为,确保在不同网络环境或应用场景中满足特定的通信需求。 几个常用的包: QoSProfile: 含义…...
SpringBoot日志集成-LogBack
Log4J:最早的Java日志框架之一,由Apache基金会发起,提供灵活而强大的日志记录机制JDK自带的日志框架:java.util.logging.Logg,是JDK1.4之后提供的日志API,已淘汰logback: logback一个开源的日志…...
Google BigTable架构详解
文章目录 什么是BigTable?架构图一、整体架构二、数据存储与索引存储模型 三、数据拆分与存储四、元数据管理五、读写流程 其他内容概览负载平衡其他存储和数据库选项 什么是BigTable? Bigtable是Google开发的一个高性能、可扩展的分布式存储系统,用于管理大规模…...
【python】如何切换ipynb的kernel至指定conda环境
需求介绍 打开(若无新建环境) 环境 conda env list conda activate cvml conda install ipykernel python -m ipykernel install --name cvml 以上完成后,打开jupyter 创建一个python文件 在kernel——>change kernel——>python[conda env:cvml] 参考资料…...
Linux【基础指令汇总】
目录 Linux命令的特点 1、文件管理 ls命令 cp命令 mkdir命令 mv命令 pwd命令 2、文档编辑 cat命令 echo命令 rm命令 tail命令 rmdir命令 3、系统管理 rpm命令 find命令 startx命令 uname命令 vmstat命令 4、磁盘管理 df命令 fdisk命令 lsblk命令 hdpar…...
SpringCloud-EurekaClient
创建Module pom.xml <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency> spring:application:name: provider # 应用程序的名称,…...
配置Scrapy项目
配置Scrapy项目是一个涉及多个步骤的过程,在上一篇博客中已经写了安装Scrapy、创建Scrapy项目的步骤。 接下来应该定义Item类、编写爬虫程序以及配置settings.py文件等。以下是一个详细的配置Scrapy项目的步骤: 一、定义Item类 在项目目录下…...
航顺芯片HK32MCU受邀出席汽车芯片国产化与技术创新闭门研讨会
[中国,北京,2024年9月21日]近日,深圳市航顺芯片技术研发有限公司(以下简称“航顺芯片”)产品总监郑增忠受邀出席由中国设备管理协会新能源汽车产业发展促进中心主办的“汽车芯片国产化与技术创新闭门研讨会”。 会上航…...
【深度学习】(6)--图像数据增强
文章目录 图像数据增强一、作用二、增强方法三、代码体现四、增强体现 总结 图像数据增强 数据增强(Data Augmentation),也称为数据增广,是一种在机器学习和深度学习中常用的技术,它通过对现有数据进行各种变换和处理…...
Vscode 远程切换Python虚拟环境
在VSCode中远程切换Python虚拟环境是一个涉及多个步骤的过程,包括安装必要的扩展、连接到远程服务器、创建或激活虚拟环境,并在VSCode中选择相应的Python解释器。以下是一个详细的步骤指南,包括代码示例,旨在帮助我们完成这一过程…...
Sqoop面试整理
Sqoop(SQL-to-Hadoop)是一个用于在Hadoop和关系型数据库之间传输数据的工具。以下是一些可能在Sqoop面试中会被问到的问题及其答案: 1. 什么是Sqoop?为什么使用它? 回答: Sqoop是一个用来在Hadoop和关系型数据库(如MySQL、Oracle、PostgreSQL等)之间高效传输大数据的工具…...
PyCharm 的安装和配置
环境要求: OS:Windows / macOS / Linux (此处使用 Windows 10 进行演示)Python:包括但不限于 Anaconda,miniconda,Python。在 Windows 下只要能找到 python.exe 即可 Download 进入 PyCharm 官网,选择对…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
