当前位置: 首页 > news >正文

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) 是一种远程桌面协议&#xff0c;可以让你通过网络访问服务器的图形界面。 TurboVNC&#xff1a;专为图形密集型应用设计&#xff0c;尤其适合 3D 可视化和高分辨率图像的远程传输…...

【网络安全】身份认证

1. 身份认证 1.1 定义 身份认证&#xff08;Authentication&#xff09;是确认用户身份的过程&#xff0c;确保只有授权的用户才能访问系统或资源。它通常涉及验证用户提供的凭证&#xff0c;如密码、生物特征或其他识别标志。 1.2 重要性 身份认证是信息安全的第一道防线&…...

LeetCode - #124 二叉树中的最大路径和(Top 100)

文章目录 前言1. 描述2. 示例3. 答案关于我们前言 本题为 LeetCode 前 100 高频题 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新到 123 期…...

Java:插入排序

目录 排序的概念 插入排序 直接插入排序 哈希排序 排序的概念 排序&#xff1a;所谓的排序&#xff0c;就是使一串记录&#xff0c;按照某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个…...

How FAR ARE WE FROM AGI?(ICLR AGI Workshop 2024)概览

关注B站可以观看更多实战教学视频&#xff1a;hallo128的个人空间 How FAR ARE WE FROM AGI?官网 How FAR ARE WE FROM AGI?&#xff08;ICLR AGI Workshop 2024&#xff09; 该研讨会将于2024年5月11日在奥地利维也纳以混合模式举行&#xff0c;作为 ICLR 2024年会议的一部…...

leetcode刷题day33|动态规划Part02(62.不同路径、63. 不同路径 II、 343.整数拆分、96.不同的二叉搜索树)

62.不同路径 机器人从(0 , 0) 位置出发&#xff0c;到(m - 1, n - 1)终点。 动规五部曲 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#xff0c;到(i, j) 有dp[i][j]条不同的路…...

基于Python大数据的B站热门视频的数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…...

matlab-批处理图像质量变化并形成折线图 (PSNR)

%修改路径就能用&#xff0c;图片分辨率要一致 %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&#xff1a;最早的Java日志框架之一&#xff0c;由Apache基金会发起&#xff0c;提供灵活而强大的日志记录机制JDK自带的日志框架&#xff1a;java.util.logging.Logg&#xff0c;是JDK1.4之后提供的日志API&#xff0c;已淘汰logback&#xff1a; logback一个开源的日志…...

Google BigTable架构详解

文章目录 什么是BigTable?架构图一、整体架构二、数据存储与索引存储模型 三、数据拆分与存储四、元数据管理五、读写流程 其他内容概览负载平衡其他存储和数据库选项 什么是BigTable? Bigtable是Google开发的一个高性能、可扩展的分布式存储系统&#xff0c;用于管理大规模…...

【python】如何切换ipynb的kernel至指定conda环境

需求介绍 打开(若无新建环境) 环境 conda env list conda activate cvml conda install ipykernel python -m ipykernel install --name cvml 以上完成后&#xff0c;打开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 # 应用程序的名称&#xff0c;…...

配置Scrapy项目

配置Scrapy项目是一个涉及多个步骤的过程&#xff0c;在上一篇博客中已经写了安装Scrapy、创建Scrapy项目的步骤。 接下来应该定义Item类、编写爬虫程序以及配置settings.py文件等。以下是一个详细的配置Scrapy项目的步骤&#xff1a; 一、定义Item类 在项目目录下…...

航顺芯片HK32MCU受邀出席汽车芯片国产化与技术创新闭门研讨会

[中国&#xff0c;北京&#xff0c;2024年9月21日]近日&#xff0c;深圳市航顺芯片技术研发有限公司&#xff08;以下简称“航顺芯片”&#xff09;产品总监郑增忠受邀出席由中国设备管理协会新能源汽车产业发展促进中心主办的“汽车芯片国产化与技术创新闭门研讨会”。 会上航…...

【深度学习】(6)--图像数据增强

文章目录 图像数据增强一、作用二、增强方法三、代码体现四、增强体现 总结 图像数据增强 数据增强&#xff08;Data Augmentation&#xff09;&#xff0c;也称为数据增广&#xff0c;是一种在机器学习和深度学习中常用的技术&#xff0c;它通过对现有数据进行各种变换和处理…...

Vscode 远程切换Python虚拟环境

在VSCode中远程切换Python虚拟环境是一个涉及多个步骤的过程&#xff0c;包括安装必要的扩展、连接到远程服务器、创建或激活虚拟环境&#xff0c;并在VSCode中选择相应的Python解释器。以下是一个详细的步骤指南&#xff0c;包括代码示例&#xff0c;旨在帮助我们完成这一过程…...

Sqoop面试整理

Sqoop(SQL-to-Hadoop)是一个用于在Hadoop和关系型数据库之间传输数据的工具。以下是一些可能在Sqoop面试中会被问到的问题及其答案: 1. 什么是Sqoop?为什么使用它? 回答: Sqoop是一个用来在Hadoop和关系型数据库(如MySQL、Oracle、PostgreSQL等)之间高效传输大数据的工具…...

PyCharm 的安装和配置

环境要求&#xff1a; OS&#xff1a;Windows / macOS / Linux (此处使用 Windows 10 进行演示)Python&#xff1a;包括但不限于 Anaconda&#xff0c;miniconda&#xff0c;Python。在 Windows 下只要能找到 python.exe 即可 Download 进入 PyCharm 官网&#xff0c;选择对…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...