简介

Apache Guacamole 是一个无客户端的远程桌面网关,它支持众多标准管理协议,例如 VNC(RFB),RDP,SSH 等等。

通过名字知道该项目是Apache基金会旗下的一个开源项目,也从侧面表明该项目是一个较高标准,并具有广泛应用前景的项目,值得了解一下。

Guacamole由三部分组成,guacamole、guacd 、postgres。

    <mark>guacd</mark> : 作为后端服务,支持多种远程协议

    <mark>guacamole</mark> : 作为前端服务,提供Web界面入口

    <mark>postgres</mark> : 作为数据库,所有配置信息均保存至数据库

新建docker-compose.yml项目文件

version: "3"
services:
  guacamole-postgres:
    container_name: guacamole-postgres
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: 123456
      PGDATA: /var/lib/postgresql/data/pgdata  #需要做这一步才能数据持久化,具体说明查看官方文档
    volumes:
      - /your-path/data:/var/lib/postgresql/data  #左边更改为你自己的路径
    network_mode: "bridge"
    restart:
      always

  guacamole-guacd:
    container_name: guacamole-guacd
    image: guacamole/guacd:latest
    network_mode: "bridge"
    restart:
      always

  guacamole-client:
    container_name: guacamole-client
    image: guacamole/guacamole:latest
    environment:
      POSTGRES_DATABASE: guacamole_db
      POSTGRES_USER: sqldata
      POSTGRES_PASSWORD: 234567
    ports:
      - 8080:8080           #左边修改为自己的外网端口
    network_mode: "bridge"
    links:
      - guacamole-postgres:postgres
      - guacamole-guacd:guacd
    restart:
      always

启动项目

docker-compose up -d

数据库初始化

进入默认的postgres db,创建一个新的用户名<mark>sqldata</mark>,密码为<mark>234567</mark>,创建一个新的数据库<mark>guacamole_db</mark>,并把权限赋予新用户(注意分号)

新建的几个参数必须与guacamole-client中的环境参数一致。

docker exec -it guacamole-postgres psql -U postgres -d postgres
CREATE USER sqldata WITH PASSWORD '234567';
CREATE DATABASE guacamole_db OWNER sqldata;
GRANT ALL ON DATABASE guacamole_db TO sqldata;
exit

使用guacamole-client生成guacamole_db的初始化脚本

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgresql > initdb.sql

将生成的sql脚本复制到容器内并执行

docker cp initdb.sql guacamole-postgres:/
docker exec -it guacamole-postgres psql -U sqldata -d guacamole_db
\i /initdb.sql
exit
rm -f initdb.sql

其他注意项

postgres数据库的持久化处理

官方默认文档中没有配置docker的映射文件夹,这将导致升级容器版本时容易丢失数据

  1. 添加环境参数:PGDATA: /var/lib/postgresql/data/pgdata
  2. 添加存储映射:/your-path/data:/var/lib/postgresql/data

降低用户认证时的加密级别

在最新的postgresql版本中,需要更改postgresql pg_hba.conf的配置,降低用户认证时的加密级别,与guacamole-client匹配

docker cp guacamole-postgres:/var/lib/postgresql/data/pgdata/pg_hba.conf ./
vim pg_hba.conf

更改文件最后一行 host all all all scram-sha-256 为 host all all all trust

docker cp pg_hba.conf guacamole-postgres:/var/lib/postgresql/data/pgdata/
rm -f pg_hba.conf

必须注意:到这里不要重启容器,不然的话可能会因为pg_hba.conf文件没有权限而不能启动

docker exec -it guacamole-postgres chown postgres:postgres /var/lib/postgresql/data/pgdata/pg_hba.conf
docker restart guacamole-postgres

登录

登录地址:http://youip:8080/guacamole

默认密码:guacadmin/guacadmin【建议修改密码】

一些使用帮助

添加RDP远程桌面时记得勾选忽略服务器证书,要不然连接不上

其他的则按照自己需求填写。

最后修改:2024 年 05 月 13 日
如果觉得我的文章对你有用,请随意赞赏