Apache Guacamole 部署教程(Docker + MariaDB)
适用环境:
- OpenWrt(Docker)
- Debian / Ubuntu(Docker)
- 群晖 NAS(MariaDB)
- Windows RDP / VNC
一、架构
Guacamole 由三个部分组成:
- guacamole(Web)
- guacd(协议代理)
- MariaDB(数据库)
数据库有两种部署方式:
方案一:Docker 内建 MariaDB(推荐新手)
Internet
│
▼
Apache Guacamole
│
┌──────────┴──────────┐
│ │
guacd MariaDB(Docker)
│
▼
Windows / Linux
优点:
- 部署简单
- 无需额外数据库
缺点:
- 数据与 Guacamole 在同一 Docker 环境
- 不方便统一管理
方案二:使用外部 MariaDB(推荐)
Internet
│
▼
Apache Guacamole
│
┌──────────┴──────────┐
│ │
guacd MariaDB(NAS)
│
▼
Windows / Linux
优点:
- 数据统一管理
- 方便备份
- 容器重建不会影响数据库
二、方案一:Docker 内建 MariaDB
创建 docker-compose.yml
注意端口是否冲突!
services:
guacd:
image: guacamole/guacd:latest
container_name: guacd
restart: unless-stopped
mysql:
image: mariadb:11
container_name: guacamole-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: guacamole_db
MYSQL_USER: guacamole
MYSQL_PASSWORD: 你的对应数据库密码
volumes:
- mysql-data:/var/lib/mysql
guacamole:
image: guacamole/guacamole:latest
container_name: guacamole
restart: unless-stopped
depends_on:
- guacd
- mysql
environment:
GUACD_HOSTNAME: guacd
MYSQL_ENABLED: "true"
MYSQL_HOSTNAME: mysql
MYSQL_DATABASE: guacamole_db
MYSQL_USER: guacamole
MYSQL_PASSWORD: JDunix786!
ports:
- "8080:8080"
volumes:
mysql-data:启动:
docker compose pull
docker compose up -d初始化数据库
生成 SQL:
docker run --rm guacamole/guacamole \
/opt/guacamole/bin/initdb.sh --mysql > initdb.sql导入:
docker cp initdb.sql guacamole-mysql:/tmp/
docker exec -it guacamole-mysql \
bash
mysql -u root -p guacamole_db < /tmp/initdb.sql退出:
exit
然后:
docker compose restart guacamole三、方案二:使用外部 MariaDB
创建数据库
CREATE DATABASE guacamole_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE USER 'guacamole'@'%'
IDENTIFIED BY '你的对应数据库密码';
GRANT ALL PRIVILEGES
ON guacamole_db.*
TO 'guacamole'@'%';
FLUSH PRIVILEGES;docker-compose.yml
注意端口是否冲突!
services:
guacd:
image: guacamole/guacd:latest
container_name: guacd
restart: unless-stopped
networks:
- guac-net
guacamole:
image: guacamole/guacamole:latest
container_name: guacamole
restart: unless-stopped
depends_on:
- guacd
environment:
GUACD_HOSTNAME: guacd
GUACD_PORT: 4822
MYSQL_ENABLED: "true"
MYSQL_HOSTNAME: 192.168.1.3
MYSQL_PORT: 3306
MYSQL_DATABASE: guacamole_db
MYSQL_USER: guacamole
MYSQL_PASSWORD: 你的对应数据库密码
TZ: Asia/Shanghai
ports:
- "8080:8080"
networks:
- guac-net
networks:
guac-net:
driver: bridge启动:
docker compose pull
docker compose up -d初始化数据库
生成 SQL:
docker run --rm guacamole/guacamole \
/opt/guacamole/bin/initdb.sh --mysql > initdb.sql复制到 NAS 后导入:
mysql -u guacamole -p guacamole_db < initdb.sql然后:
docker compose restart guacamole四、首次登录
浏览器:
http://服务器IP:8080/guacamole
默认账号:
用户名:
guacadmin
密码:
guacadmin
首次登录建议立即修改密码。
五、新建 RDP 连接
Settings → Connections → New Connection
填写:
Basic
Name:Windows10
Protocol:RDP
Hostname:192.168.1.100
Port:3389
Authentication
Username:Administrator
Password:********
Domain:留空
Display
Width:留空
Height:留空
Resize Method:Display Update
DPI:96
Clipboard
Enable Clipboard
Security
Ignore server certificate
六、RDP 显示优化
推荐:
Windows:
显示缩放:100%
Guacamole:
DPI:96
浏览器:
缩放:100%
七、VNC 连接
新建:
Protocol:VNC
Hostname:192.168.1.100
Port:5900
Password:VNC Password
Username:留空
八、RealVNC 注意事项
新版 RealVNC Connect 默认使用新的认证机制,与 Guacamole 的兼容性较差。
现象:
输入密码后立即断开
因此推荐:
- UltraVNC(推荐)
- TigerVNC(旧版本)
不建议使用新版 RealVNC。
九、Guacamole 与 PVE Console 对比
Guacamole(RDP)
浏览器
│
Guacamole
│
RDP
│
Windows
优点:
- 剪贴板
- 文件传输
- 性能优秀
缺点:
- 无法进入 BIOS
PVE Console(noVNC)
浏览器
│
noVNC
│
QEMU VNC
│
Guest VM
优点:
- 可进入 BIOS
- 安装系统
- 蓝屏恢复
十、推荐使用方式
| 场景 | 推荐方式 |
|---|---|
| Windows 日常办公 | RDP |
| Linux 图形桌面 | VNC |
| BIOS / PE / 安装系统 | PVE Console |
| 浏览器远程访问 | Guacamole |