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

news/2024/9/16 22:28:54/ 标签: apache, 容器, 运维, ssh, docker, macos

文章目录

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

官网

简介

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__33">拉取 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

dockercomposeyml_43">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 服务

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


http://www.ppmy.cn/news/1523520.html

相关文章

【数据结构-二维前缀和】力扣1277. 统计全为 1 的正方形子矩阵

给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。 示例 1: 输入:matrix [ [0,1,1,1], [1,1,1,1], [0,1,1,1] ] 输出:15 解释: 边长为 1 的正方…

2024年职业院校人工智能实训室方案解读(融入AIGC技术)

随着人工智能技术的飞速发展,职业院校作为技能型人才培养的重要基地,亟需加强人工智能实训室的建设,以应对市场需求和行业变革。该方案不仅涵盖了全面的人工智能教学内容,还融入了AIGC(Artificial Intelligence Genera…

framework-android启动

1:BootRom->BootLoader->Linux Kernel->Init->Zygote- >SystemServer->Launcher BootLoader 层:主要包括 Boot Rom 和 Boot Loader Kernel 层:主要是 Android 内核层 Native 层:主要是包括 init 进程以及其…

SQL漏洞自动注入和数据库接管开源工具——sqlmap的介绍和保姆级使用教程

说明:本文仅是用于学习测试自己搭建的SQL注入漏洞和网络安全维护,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办…

计算机视觉中,什么是上下文信息(contextual information)?

在计算机视觉中,上下文信息(contextual information)是指一个像素或一个小区域周围的环境或背景信息,它帮助模型理解图像中对象的相对位置、大小、形状,以及与其他对象的关系。上下文信息在图像中提供了全局的语义和结…

vue----一维数组根据同一id改成二维数组

vue----一维数组根据同一id改成二维数组 初始数据(多个dimension_id值一样): 转换后的数据(类似于): [{dimension_id: xxxxxxxxx,desc: 111,res: [{ id: 4444444, self_score: 90 },{ id: 5555555, sel…

WebGL系列教程四(绘制彩色三角形)

目录 1 前言2 varying变量介绍3 开始绘制3.1 声明顶点着色器3.2 声明片元着色器3.3 创建顶点和颜色的缓冲区3.4 指定变量从缓冲区获取值3.5 效果3.6 varying的内涵3.7 完整代码 4 总结 1 前言 上一篇中我们介绍了如何使用缓冲区来绘制三角形,这一篇我们来讲讲如何给…

HarmonyOS开发之生命周期

文章目录 一、应用生命周期二、页面生命周期二、组件生命周期 提示:以下是本篇文章正文内容,下面案例可供参考 一、应用生命周期 可以在项目目录 entryability/EntryAbility.tes 看到整个应用的生命周期 import hilog from ohos.hilog; import UIAbil…

linux~~监控子进程创建新的线程

目录 1.wait函数介绍 2.wait函数演示 3.pthread_create函数介绍 3.1总体介绍 3.2参数介绍 3.3返回值说明 3.4进程线程关系演示 4.pthread_join函数 5.pthread_create函数第四个参数 6.创建两个线程 6.1创建方法 6.2线程进程对比 1.wait函数介绍 wststus参数&#xf…

久久派搭建风电系统网站(基于mariadb数据库)

久久派搭建风电系统网站 1、安装mariadb2、设置root账号密码3、设置MariaDB开机自启4、允许远程登录5、还原数据库6、扩容swap7、拷贝数据8、运行系统方法1:通过sh脚本运行方法2:直接运行jar包 文中所需网盘资料及讲解视频在文章末尾哦1。 本文中参考资料…

关于生成式 AI 创业公司出海,谷歌和 VC 们这么说

2024 Google Cloud 中国创投峰会将在 9 月 25 日于北京、上海、深圳三地同步举行。我们诚挚邀请初创公司创业者,参加这场为 AI 企业量身打造的科技盛宴!无论你关注的是生成式 AI、机器学习,还是数据分析,这里都将为你带来最前沿的…

OpenAI gym: Trouble installing Atari dependency (Mac OS X)

题意: 使用OpenAI Gym库时,安装Atari环境可能会遇到一些依赖问题,尤其是在Mac OS X系统上 问题背景: Im new to OpenAI gym. Ive successfully installed OpenAI gym on my Mac OS X (High Sierra 10.13.3) laptop and made a D…

第 4 章:跨域

第 4 章&#xff1a;跨域 1. 同源策略 同源策略(Same-Origin Policy)最早由 Netscape 公司提出&#xff0c;是浏览器的一种安全策略。同源&#xff1a; 协议、域名、端口号 必须完全相同。违背同源策略就是跨域。满足同略策略url可以简写 1.1 同略策略案例 index.html <…

【Hot100】LeetCode—279. 完全平方数

目录 1- 思路动态规划 完全背包 2- 实现⭐279. 完全平方数——题解思路 3- ACM 实现 原题链接&#xff1a;279. 完全平方数 1- 思路 动态规划 完全背包 完全平方数就是物品&#xff08;可以无限件使用&#xff09;&#xff0c;凑个正整数n就是背包&#xff0c;问凑满这个背…

【QT Creator】基本使用

一、常见问题 解答可见以下链接&#xff1a; https://www.cnblogs.com/xia-weiwen/p/10074882.html#title3.1 ** 有关控制台选择构建套件缺失的解决方法可见以下链接 https://blog.csdn.net/xuxu_123_/article/details/131257928 二、如何创建第一个QT项目 第一步&#xf…

13. stats查看threejs渲染帧率

three.js每执行WebGL渲染器.render()方法一次&#xff0c;就在canvas画布上得到一帧图像&#xff0c;不停地周期性执行.render()方法就可以更新canvas画布内容&#xff0c;一般场景越复杂往往渲染性能越低&#xff0c;也就是每秒钟执行.render()的次数越低。 通过stats.js库可…

Web大学生网页作业成品——动漫蜡笔小新网页设计与实现(HTML+CSS)(4个页面)

&#x1f389;&#x1f389;&#x1f389; 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…

docker 安装NextERP

有很多方式&#xff1a; 一 docker sudo docker run -itd -p 8016:80 -v ERPNext_db:/var/lib/mysql -v ERPNext_sites:/home/frappe/frappe-bench/sites --name ERPNext lvxj11/erpnext:latest二 git clone https://e.coding.net/yuanerp/yuanerp/frappe_docker.gitcp exa…

[linux] 报错 ModuleNotFoundError: No module named ‘llama‘

from llama import Llama ModuleNotFoundError: No module named llama 解决&#xff1a; llama/requirements.txt at main meta-llama/llama GitHub pip install fairscale pip install fire pip install sentencepiece

C++复习day08

一、C11 1.列表初始化 在C98中&#xff0c;标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。比如&#xff1a; struct Point {int _x;int _y; }; int main() {int array1[] { 1, 2, 3, 4, 5 };int array2[5] { 0 };Point p { 1, 2 };return 0; }C11扩…