当前位置: 首页 > 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;…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...