在L站已水多天,现已是二级用户,我也来发个技术贴,再收点小心心应该不过分吧。
刚刚也看到有佬友在推荐这个,但没有详细教程,一些网上分享的步骤又太过杂乱。
简介
Apache Guacamole 是一个无客户端的远程桌面网关,它支持众多标准管理协议,例如 VNC(RFB),RDP,SSH 等等。
通过名字知道该项目是Apache基金会旗下的一个开源项目,也从侧面表明该项目是一个较高标准,并具有广泛应用前景的项目,值得了解一下。
Guacamole由三部分组成,guacamole、guacd 、postgres。
**guacd** : 作为后端服务,支持多种远程协议
**guacamole**: 作为前端服务,提供Web界面入口
**postgres** : 作为数据库,所有配置信息均保存至数据库
背景
一些公司以安全为由会把到外网的远程协议封禁了,为了能更好的摸鱼,才想要搭建web远程网关。
新建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,创建一个新的用户名sqldata,密码为234567,创建一个新的数据库guacamole_db,并把权限赋予新用户(注意分号)
新建的几个参数必须与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的映射文件夹,这将导致升级容器版本时容易丢失数据
-
添加环境参数:PGDATA: /var/lib/postgresql/data/pgdata
-
添加存储映射:/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远程桌面时记得勾选忽略服务器证书
,要不然连接不上
其他的则按照自己需求填写。