Apache Guacamole 是一个客户端无插件的远程桌面网关。它支持标准协议,如 VNC、RDP 和 SSH。您可以使用任何现代 web 浏览器连接到您的桌面环境,而无需安装额外的软件。
使用 Docker Compose 部署 Guacamole,如果没有docker-compose请先执行sudo apt install docker-compose安装
1.创建目录:
首先为 Guacamole 创建一个工作目录。
mkdir guacamole-docker
cd guacamole-docker
2.创建 docker-compose.yml 文件:
在这个目录中,创建一个 docker-compose.yml 文件,用于定义 Guacamole 服务及其依赖项。
version: '3'
services:
db:
image: mariadb:10.6.18
container_name: guac-db
environment:
- MYSQL_ROOT_PASSWORD=your_password
- MYSQL_DATABASE=guacamole_db
- MYSQL_USER=guacamole
- MYSQL_PASSWORD=guacamole
volumes:
- guac-db-data:/var/lib/mysql
ports:
- "3306:3306"
restart: always
guacd:
image: guacamole/guacd:latest
container_name: guacd
ports:
- "4822:4822"
restart: always
guacamole:
image: guacamole/guacamole:latest
container_name: guacamole
depends_on:
- db
- guacd
environment:
- GUACD_HOSTNAME=宿主机IP
- GUACD_PORT=4822
- MYSQL_HOSTNAME=宿主机IP
- MYSQL_PORT=3306
- MYSQL_DATABASE=guacamole_db
- MYSQL_USER=guacamole
- MYSQL_PASSWORD=guacamole
ports:
- "8080:8080"
volumes:
- /opt/guacamole/guacamole.properties:/etc/guacamole/guacamole.properties
restart: always
volumes:
guac-db-data:
这个配置文件定义了三个服务:guacd (Guacamole 的代理服务),guacdb (用于存储 Guacamole 数据的 mariadb数据库),以及 guacserver (Guacamole 服务器)。
3.初始化数据库:
3.1在启动 Guacamole 之前,您需要初始化数据库。这通常涉及到创建数据库表结构。官方 Guacamole 文档提供了详细的说明,但您可以使用以下命令快速完成初始化:
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
这条命令会从 Guacamole 镜像中提取 SQL 脚本,并通过 Docker 执行这些脚本来初始化 guacdb 数据库。
root:/opt/guacamole# ls
docker-compose.yml initdb.sql
3.2使用 docker exec 命令将初始化脚本导入到 MySQL 数据库中。
docker exec -i guacdb mysql -uguacamole -pguacamole guacamole_db < initdb.sql
4.启动服务:
现在可以启动 Guacamole 服务了。
docker-compose down
docker-compose up -d
5.访问 Guacamole:启动后,Guacamole 应该可以通过浏览器访问了,通常是 http://localhost:8080/guacamole。默认的用户名是 guacadmin,密码也是 guacadmin。首次登录后,系统会提示您更改密码。
注意事项
安全性:请确保更改默认的管理员密码,并考虑使用 HTTPS 来保护您的连接。
持久化数据:上述配置将 PostgreSQL 数据库的数据存储在一个 Docker 卷中 (guacdb-data),这意味着即使容器被删除,数据仍然会被保留。
资源限制:根据您的需求调整 Docker 容器的资源限制(如 CPU 和内存),以确保良好的性能。