Apache Guacamole是一款HTML5应用程序,可通过RDP,VNC和其他协议访问远程桌面。您可以创建一个虚拟云桌面,用户通过Web浏览器即可访问。
1.安装DOCKER
{% link 安装Docker方法, /post/docker-install.html, https://assets.insilen.com/media/docker-install/docker.webp %}
配置Docker国内加速
{% link Docker 镜像加速, /post/docker-chinaimage.html, https://assets.insilen.com/media/docker-aliyun/3682944458.jpeg %}
使用加速器可以提升获取Docker官方镜像的速度
2.拉取必要镜像
拉取Guacamole服务器、Guacamole客户端和MySQL的Docker镜像
docker pull guacamole/guacamole
docker pull guacamole/guacd
docker pull mariadb
3.开始部署
都拉取成功后,需要直接运行以下命令创建数据库初始化脚本以创建用于验证身份的数据表:
cd /root
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
这时候在root目录下 就创建了用于验证身份的数据initdb.sql
将initdb.sql移动到MySQL容器中,登录数据库设置新的数据库密码:
docker cp initdb.sql mysql:/initdb.sql
sudo docker exec -it mysql mysql -uroot -p123456
创建 guacamole和创建 guacamole用户并授权 guacamole用户使用 guacamole密码访问
CREATE DATABASE guacamole;
CREATE USER 'guacamole'@'%' IDENTIFIED BY 'guacamole';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole.* TO 'guacamole'@'%';
FLUSH PRIVILEGES;
在bash终端中,使用初始化脚本为新数据库创建数据表
docker exec -it mysql bash
mysql –uroot –p123456 -Dguacamole<initdb.sql
启动guacd和guacamole实例:
docker run --name guacd \
--restart=always \
-d guacamole/guacd
docker run --name guacamole -d \
--restart=always \
--link guacd:guacd \
--link mysql:mysql \
-e MYSQL_DATABASE='guacamole' \
-e MYSQL_USER='guacamole' \
-e MYSQL_PASSWORD='guacamole'\
-p 8080:8080 \
guacamole/guacamole
查看docker容器都已运行
浏览器访问 :http://192.168.100.17:8080/guacamole
默认用户名和密码 都是guacadmin
来源参考 https://www.cnblogs.com/majiang/p/11465978.html
启动命令示例
MairaDB
docker run -d \
--name guacamole-mariadb \
--restart=always \
-v /docker/guacamole-mariadb/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mariadb:latest
phpmyadmin
如果需要phpmyadmin
该命令配置了config.user.inc.php 等同直接部署的config.inc.php
其中 PMA_ABSOLUTE_URI 为反代之后的最终目录需要配合nginx
docker run -d \
--name phpmyadmin \
--restart=always \
--link guacamole-mariadb:guacamole-mariadb \
-e UPLOAD_LIMIT=64M \
-e PMA_ABSOLUTE_URI=https://YOURDOMAIN.com/phpmyadmin_123 \
-v /docker/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php \
phpmyadmin/phpmyadmin
Guacamole
docker run --name guacd \
--restart=always \
-d guacamole/guacd
docker run -d \
--name guacamole-mariadb \
--restart=always \
-v /docker/guacamole-mariadb/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mariadb:latest
nginx
docker run -d \
--name nginx \
--restart=always \
--link phpmyadmin:phpmyadmin \
--link guacamole:docker-guacamole \
-v /docker/nginx/conf.d:/etc/nginx/conf.d \
-v /docker/nginx/cert:/etc/nginx/cert \
-p 80:80 \
-p 443:443 \
nginx
nginx配置示例
#设置http重定向到https
server
{
listen 80;
server_name YOURDOMAIN.com;
rewrite ^/(.*)$ https://YOURDOMAIN.com/$1 permanent;
}
#主要https设置
server
{
listen 443 ssl http2;
server_name YOURDOMAIN.com;
ssl_certificate /etc/nginx/cert/YOURDOMAIN.com.pem;
ssl_certificate_key /etc/nginx/cert/YOURDOMAIN.com.key;
#guacamole
location /guacamole_1234/ {
proxy_pass http://docker-guacamole:8080/guacamole/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_cookie_path /guacamole/ /guacamole_1234/;
access_log off;
}
#phpmyadmin
location /phpmyadmin_123/ {
proxy_redirect off;
proxy_pass http://phpmyadmin/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#需要上传文件操作下面这三段代码是需要添加的。
proxy_buffer_size 64k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
}
}