Apache Guacamole 安装及配置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
- 镜像:
注意: Podman 是 Docker 替代工具;操作命令兼容,示例中的 podman 命令可以直接替换为 docker;Podman 的安装与使用请阅读 文章。
- 启动 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/guacamole container_name: guacamole ports: - '8080:8080' environment: GUACD_HOSTNAME: guacd GUACD_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: postgres POSTGRESQL_PORT: 5432 POSTGRES_DATABASE: 'guacamole_db' POSTGRES_USER: 'root' POSTGRES_PASSWORD: '4NuMDwIzp05BdKp7Bdmf' depends_on: - guacd guacd: image: guacamole/guacd container_name: guacd ports: - '4822:4822' postgres: image: postgres:16 container_name: postgres # 容器设置为特权模式 privileged: true # restart: always ports: - '5432:5432' environment: # 创建具有超级用户权限的指定用户和同名的数据库 POSTGRES_USER: 'root' POSTGRES_PASSWORD: '4NuMDwIzp05BdKp7Bdmf' # 如果未指定,则将POSTGRES_USER使用的值。 POSTGRES_DB: 'guacamole_db' # 默认为/var/lib/postgresql/data PGDATA: /var/lib/postgresql/data volumes: - /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 基本用法
注: 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 服务


