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

Apache Guacamole 安装及配置VNC远程桌面控制

文章目录

  • 官网
  • 简介
    • 支持多种协议
    • 无插件浏览器访问
    • 配置和管理
    • 应用场景
  • Podman 部署 Apache Guacamole
    • 拉取 docker 镜像
    • docker-compose.yml
    • 部署 PostgreSQL
    • 生成 initdb.sql 脚本
    • 部署 guacamole
  • Guacamole 基本用法
    • 配置 VNC 连接
  • Mac 电脑开启自带的 VNC 服务

官网

  • https://guacamole.apache.org/

简介

Apache Guacamole 是一个开源的远程桌面网关,可以通过浏览器访问各种远程桌面协议。它由 Apache 软件基金会维护,主要功能是提供一个无需客户端插件的 Web 访问解决方案。

支持多种协议

  • VNC(Virtual Network Computing): 用于远程控制计算机的协议。
  • RDP(Remote Desktop Protocol): 微软的远程桌面协议。
  • SSH(Secure Shell): 用于安全地远程登录和管理计算机的协议。

无插件浏览器访问

用户可以通过现代 Web 浏览器(如 Chrome、Firefox、Edge)访问远程计算机,无需安装额外的客户端插件或软件。

配置和管理

通过 Web 界面进行用户管理、配置远程连接和设置访问权限。
可以通过配置文件和数据库进行更细粒度的控制。

应用场景

  • 远程工作: 允许员工在不同的地点访问公司内部的计算机和系统。
  • 技术支持: 支持 IT 人员远程管理和排除故障。
  • 教育和培训: 提供远程访问实验环境或教学资源。

Podman 部署 Apache Guacamole

  • 镜像:https://hub.docker.com/r/guacamole/guacamole

注意: Podman 是 Docker 替代工具;操作命令兼容,示例中的 podman 命令可以直接替换为 docker;Podman 的安装与使用请阅读 《安装 podman 与 podman-compose》 文章。

  • 启动 podman 虚拟机(Mac环境需要启动虚拟才能正常使用 Podman)
podman machine start podman-vm

拉取 docker 镜像

podman pull guacamole/guacamole
podman pull guacamole/guacd
podman pull postgres:16
# 或
docker pull guacamole/guacamole
docker pull guacamole/guacd
docker pull postgres:16

docker-compose.yml

version: '3'
services:guacamole:image: guacamole/guacamolecontainer_name: guacamoleports:- '8080:8080'environment:GUACD_HOSTNAME: guacdGUACD_PORT: 4822# 配置 MySQL 数据库# MYSQL_HOSTNAME: 192.168.0.217# MYSQL_PORT: 3306# MYSQL_DATABASE: 'guacamole_db'# MYSQL_USER: 'zyuser'# MYSQL_PASSWORD: 'Lkm##2021'# 配置 PostgreSQL 数据库POSTGRESQL_HOSTNAME: postgresPOSTGRESQL_PORT: 5432POSTGRES_DATABASE: 'guacamole_db'POSTGRES_USER: 'root'POSTGRES_PASSWORD: '4NuMDwIzp05BdKp7Bdmf'depends_on:- guacdguacd:image: guacamole/guacdcontainer_name: guacdports:- '4822:4822'postgres:image: postgres:16container_name: postgres# 容器设置为特权模式privileged: true# restart: alwaysports:- '5432:5432'environment:# 创建具有超级用户权限的指定用户和同名的数据库POSTGRES_USER: 'root'POSTGRES_PASSWORD: '4NuMDwIzp05BdKp7Bdmf'# 如果未指定,则将POSTGRES_USER使用的值。POSTGRES_DB: 'guacamole_db'# 默认为/var/lib/postgresql/dataPGDATA: /var/lib/postgresql/datavolumes:- /etc/localtime:/etc/localtime- ./postgres/data:/var/lib/postgresql/data

部署 PostgreSQL

# 数据存在缩主机上
mkdir postgres/data
# 执行部署命令
podman-compose up -d postgres

生成 initdb.sql 脚本

注: 根据自己的需求生成对应的数据库初始化 SQL 脚本。本章示例采用 PostgreSQL

  • 生成 PostgreSQL 初始化 SQL 脚本
podman run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgresql > initdb.sql
  • 生成 MySQL 初始化 SQL 脚本
podman run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
  • 连接 PostgreSQL 数据库,选择 guacamole_db 库 执行 initdb.sql 脚本初始化数据库。

在这里插入图片描述

  • 或者进入容器内执行 guacamole_db 数据库初始化。
# 将 initdb.sql 复制到容器内
podman cp initdb.sql postgres:/
# 进入 postgres 容器内
podman exec -it postgres /bin/bash
# 执行 initdb.sql
psql -U root -d guacamole_db -f initdb.sql

部署 guacamole

podman-compose up -d guacamole

Guacamole 基本用法

  • http://127.0.0.1:8080/guacamole/#/

注: Guacamole 默认登录账号/密码 guacadmin/guacadmin

在这里插入图片描述

配置 VNC 连接

注意: VNC 只能连接与 Guacamole 服务同一个局域网 的电脑。外网访问需要为 Guacamole 配置域名进行访问。

  • Nginx 配置
location /guacamole/ {proxy_set_header X-Real_IP $remote_addr;proxy_set_header Host $host;proxy_set_header X_Forward_For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_pass http://127.0.0.1:8080/guacamole/;
}
  • 进入设置页面添加连接

在这里插入图片描述

  • 返回首页点击连接

在这里插入图片描述

  • 连接的是本人 MacBook 电脑

在这里插入图片描述

  • 手机上效果

在这里插入图片描述

Mac 电脑开启自带的 VNC 服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

Apache Guacamole 安装及配置VNC远程桌面控制

文章目录 官网简介支持多种协议无插件浏览器访问配置和管理应用场景 Podman 部署 Apache Guacamole拉取 docker 镜像docker-compose.yml部署 PostgreSQL生成 initdb.sql 脚本部署 guacamole Guacamole 基本用法配置 VNC 连接 Mac 电脑开启自带的 VNC 服务 官网 https://guacam…...

在Linux中从视频流截取图片帧(ffmpeg )

Linux依赖说明: 说明: 使用到的 依赖包 1. ffmpegsudo apt update sudo apt-get install ffmpeg2. imagemagick (选装) (检测图像边缘信息推断清晰度,如果是简单截取但个图像帧>用不到<)sudo apt-get install imagemagick备注: 指令及相关参数说明核心指令: (作用: 执…...

使用脚手架来创建 express 项目

使用脚手架&#xff08;scaffold&#xff09;可以快速搭建Express应用程序的基本结构。Express自身提供了一个官方脚手架工具叫做express-generator&#xff0c;它可以帮助你快速地生成一个包含基本文件结构的Express项目。 安装Express Generator 首先&#xff0c;你需要全局…...

单片机常用的软件架构

参考 9种单片机常用的软件架构...

服务器模型 Reactor 和 Proactor

Proactor 具体流程如下&#xff1a; 处理器发起异步操作&#xff0c;并关注 IO 完成事件&#xff1b;事件分离器等待操作完成事件&#xff1b;分离器等待过程中&#xff0c;内核并行执行实际的 IO 操作&#xff0c;并将结果存储入用户自定义的缓冲区&#xff0c;最后通知事件分…...

使用 Grype 检查 .jar 包中的漏洞

在开发和部署 Java 应用时&#xff0c;确保依赖库和项目文件中的安全性至关重要。Grype 是一款强大的开源工具&#xff0c;用于扫描项目文件&#xff08;如 .jar 包&#xff09;中的已知漏洞。本篇博客将介绍如何手动安装 Grype 并使用它检测 .jar 包中的安全漏洞。 一、手动安…...

IDEA 常用插件推荐,美观又实用!

1、 TONGYl Lingma - Your Al Coding Assistant. Type less, Code more. 通义灵码&#xff0c;是一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力&…...

浮点数精度问题

为什么会产生精度问题&#xff1f; 我们带着这个问题去探寻浮点数二进制的存储原理 浮点数是怎么存在计算机中的&#xff1f; 浮点数在计算机中的表示通常遵循IEEE 754标准。其基本概念如下&#xff1a; 结构&#xff1a;浮点数由三部分组成&#xff1a; 符号位&#xff08;…...

RK3576芯片在智能家居里中型智慧屏产品的应用方案分析

智能家居在近年来得到了快速发展&#xff0c;AI技术不断发展&#xff0c;人机交互十分成熟&#xff0c;各种家电也都迎来了智能化浪潮&#xff0c;智能家居为人们提供了优秀的产品体验&#xff0c;受到主流消费者的青睐&#xff0c;智能家居里的中型智慧屏产品也随之兴起。 瑞芯…...

什么是生成式 AI?

人工智能 (AI) 通过使用机器学习与环境交互并执行任务来模仿人类行为&#xff0c;而无需明确指示要输出的内容。 生成式 AI 描述 AI 中用于创建原创内容的一类功能。 人员通常与聊天应用程序中内置的生成式 AI 交互。 此类应用程序的一个常见示例是 Microsoft Copilot&#xf…...

计算机网络期末试题及答案

一、选择题(每空2分&#xff0c;共20分) 1、下列关于常用交换技术的描述不正确的是&#xff08; &#xff09;。 A、电路交换是面向连接可靠的&#xff0c;适合大量的、连续的数据传输。 B、分组交换采用存储转发方式&#xff0c;以较小的固定长度的分组作为数据传输单…...

MySQL中DML操作(一)

添加数据&#xff08;INSERT&#xff09; 1.选择插入 INSERT INTO 表名(列名1 , 列名2 , 列名3......) VALUES(值1 , 值2 , 值3......); 示例&#xff1a; 向departments表中添加一条数据&#xff0c;部门名称为market&#xff0c;工作地点ID为1。 insert into department…...

Django 模板继承

Django 模板继承的语法主要涉及两个关键标签&#xff1a;{% extends %} 和 {% block %}。 语法详解 {% extends %}&#xff1a; 用于指定当前模板继承自哪个父模板。语法&#xff1a;{% extends "父模板的路径" %} {% extends "base.html" %}{% block %}&…...

黑马点评17——多级缓存-Lua语法

文章目录 Lua语法初始Lua变量和循环条件控制、函数 变量和循环函数和条件控制 Lua语法 初始Lua https://www.lua.org/ 魔兽的一些插件就是用lua开发的。 centOs已经装好了lua&#xff0c;直接用~ 变量和循环 条件控制、函数 变量和循环 函数和条件控制...

如何在Linux 上运行 SciChart WPF图表控件?

SciChart – 一个跨平台图表库&#xff0c;可实现 Windows Presentation Foundation (WPF)、JavaScript 以及原生 iOS (Swift/Objective-C) 和 Android (Java/Kotlin)&#xff0c;基于代号为 Visual Xccelerator 的专有 C 渲染引擎。这提供了 SciChart 众所周知的速度和性能&am…...

C--字符串函数处理总结

文章目录 函数接口strchrstrtok 常见应用int 转化 字符串1 2 3 4 (int ) ---> 1&#xff0c;2&#xff0c;3&#xff0c;4 &#xff08;char []&#xff09; 字符串转化为 int1,2,3,4&#xff08;char []&#xff09; ---> 1 2 3 4 (int ) 函数接口 strchr char *strch…...

PLSQL-将一份excel数据导入到一张物理表(Oracle)

–>> 很简单~ 平时用惯了DBeaver&#xff0c;突然要用PLSQL Developer&#xff0c;确实很生疏。 –>> 我的场景&#xff0c;将一份.csv文件数据手动导入到Oracle下的一张物理表中去。 研究了半天&#xff0c;看网上说的可以用&#xff1a;Tools → ODBC Importer &…...

【系统架构设计师】状态模式

状态模式(State Pattern)是行为设计模式的一种,它允许一个对象在其内部状态改变时改变它的行为。对象看起来像是改变了它的类。这种模式可以用于实现一些复杂的有限状态机,在不同的条件下改变对象的行为而无需修改对象本身。下面是一个关于状态模式的详细介绍,包括其概念、…...

Linux网络编程1——socket通信

一.网络准备 1.套接字 在TCP/IP 协议中&#xff0c;“ip 地址TCP 或UDP 端口号”唯一标识网络通讯中的一个进程。“IP 地址端口号”就对应一个socket。欲建立连接的两个进程各自有一个 socket 来标识&#xff0c;那么这两个 socket 组成的 socket pair 就唯一标识一个连接。因…...

【每日一题】LeetCode 1052.爱生气的书店老板(数组、滑动窗口)

【每日一题】LeetCode 1052.爱生气的书店老板&#xff08;数组、滑动窗口&#xff09; 题目描述 书店老板的商店每天有不同数量的顾客进入。每分钟&#xff0c;老板可能或可能不会生气。如果老板生气&#xff0c;那一分钟的顾客就会不满意。老板知道一个秘密技巧&#xff0c;…...

IDEA中无法使用 Subversion 命令行客户端 svn Subversion 可执行文件的路径可能是错误的

IDEA中无法使用 Subversion 命令行客户端 svn 我在新电脑上安装好IDEA和SVN后使用IDEA拉取和提交项目时提示无法使用。 解决方案 我这边的问题是在安装TortoiseSVN的时候少启用了一个功能&#xff0c;需要重新安装并把这个功能启用。 在这一步需要把command line client to…...

ThreadLocal 在线程池中的内存泄漏问题

ThreadLocal 是一种非常方便的工具&#xff0c;它为每个线程创建独立的变量副本&#xff0c;避免了线程之间的共享数据问题。然而&#xff0c;在线程池环境中&#xff0c;ThreadLocal 的使用必须非常谨慎&#xff0c;否则可能会引发内存泄漏问题。 为什么 ThreadLocal 可能导致…...

如何编写Prompt,利用AI高效生成图表——图表狐(FoxChart)指南

在数据可视化领域&#xff0c;图表是数据的重要表达方式。为了让更多人能够轻松高校地生成美观、专业的图表&#xff0c;图表狐(FoxChart)应用而生。然而&#xff0c;要想充分发挥AI的潜力&#xff0c;编写合适的Prompt至关重要。本文介绍一些编写Prompt的原则&#xff0c;帮助…...

Redis主从数据同步过程:命令传播、部分重同步、复制偏移量等

请记住胡广一句话&#xff0c;所有的中间件所有的框架都是建立在基础之上&#xff0c;数据结构&#xff0c;计算机网络&#xff0c;计算机原理大伙一定得看透&#xff01;&#xff01;~ 1. Redis数据同步 1.1 数据同步过程 大家有没想过为什么Redis多机要进行数据同步&#…...

《JavaEE进阶》----13.<Spring Boot【配置文件】>

本篇博客讲解 1.SpringBoot配置文件的格式以及对应的语法 2.了解两个配置文件格式的差异、优缺点。 我们这里只做简单的介绍。看会&#xff0c;了解&#xff0c;学会读取就行了。 因为配置文件实在太多了&#xff0c;这里只做基础的介绍。 一、配置文件的作用 前言 计算机中有许…...

【练习8】

链接&#xff1a;https://www.nowcoder.com/questionTerminal/e671c6a913d448318a49be87850adbcc 分析&#xff1a; 创建一个二维数组来实现杨辉三角&#xff0c;因为当前元素的值是上一行的当前列与前一列的和&#xff0c;所以创建数组的时候要实现n1&#xff0c;相当于罩子一…...

vivado 时间汇总报告

步骤7&#xff1a;时间汇总报告 定时路径在时钟元素处开始和结束。输入和输出端口不是顺序的 元素&#xff0c;默认情况下&#xff0c;Vivado时序分析不会对进出I/O端口的路径进行计时 设计&#xff0c;除非指定了输入/输出延迟约束。 在此步骤中&#xff0c;您将在Vivado中生成…...

【软考】设计模式之代理模式

目录 1. 说明2. 应用场景3. 结构图4. 构成5. 适用性6. 优点7. 缺点8. java示例 1. 说明 1.代理模式&#xff08;Proxy Pattern&#xff09;。2.意图&#xff1a;为其他对象提供一种代理以控制对这个对象的访问。3.通过提供与对象相同的接口来控制对这个对象的访问。4.是设计模…...

3.创建型设计模式详解:生成器模式与原型模式的深度解析

设计模式&#xff08;Design Patterns&#xff09;是软件开发中常用的解决方案&#xff0c;帮助开发者处理常见的设计问题。创建型设计模式专注于对象的实例化&#xff0c;旨在提高系统的灵活性和可维护性。在这篇文章中&#xff0c;我们将深入探讨创建型设计模式中的生成器模式…...

goframe结构体标签和命令行标签

元数据gmeta 基础标签 更多了解&#xff1a;https://swagger.io/specification/ g.Meta path:"/profile" method:"get" summary:"展示个人资料页面" tags:"个人" g.Meta mime:"text/html" type:"string" example…...