【安装教程】apache guacamole docker-compose

Apache Guacamole 是一个可以通过web浏览器的方式控制 VNC、Telnet、SSH、RDP、Kubernetes 的服务。只要你的电脑有浏览器即可访问并控制哪些服务。

这个服务分三个部分:

  • guacamole:负责web前端页面
  • guacd:负责后端,将各种协议转化为web兼容的格式
  • mysql:数据库负责存储数据

一、安装

1.部署guacamole的docker-compose文件:

version: '3'
services:
  guacamole-mysql:
    image: mysql:8.0.33-debian
    container_name: guacamole-mysql
    hostname: guacamole-mysql
    restart: always
    networks:
      - internal
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - LANG=en_US.UTF-8
      - MYSQL_ROOT_PASSWORD=Admin@000
      - MYSQL_DATABASE=guacamole 
      - MYSQL_USER=guacamole
      - MYSQL_PASSWORD=guacamole@000
    volumes:
      - /home/docker/guacamole/mysql/data:/var/lib/mysql
      - /home/docker/guacamole/mysql/conf.d:/etc/mysql/conf.d
      - /home/docker/guacamole/mysql/logs:/var/log/mysql
    command: 
      - mysqld
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
      
  guacamole-phpmyadmin:
    image: lscr.io/linuxserver/phpmyadmin:latest
    container_name: guacamole-phpmyadmin
    hostname: guacamole-phpmyadmin
    restart: always
    depends_on:
      - guacamole-mysql
    networks:
      - internal
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - PMA_ARBITRARY=0
      - PMA_HOST=guacamole-mysql
    volumes:
      - /home/docker/guacamole/phpmyadmin/config:/config
  
  guacd:
    image: guacamole/guacd
    container_name: guacd
    hostname: guacd
    restart: always
    ports:
      - "4822:4822"
    networks:
      - internal
    environment:
      - TZ=Asia/Shanghai

  guacamole:
    image: guacamole/guacamole
    container_name: guacamole
    hostname: guacamole
    restart: always
    depends_on:
      - guacamole-mysql
      - guacd
    ports:
      - "8080:8080"
    networks:
      - internal
    environment:
      TZ: Asia/Shanghai
      GUACD_HOSTNAME: guacd
      GUACD_PORT: 4822
      MYSQL_HOSTNAME: guacamole-mysql
      MYSQL_PORT: 3306
      MYSQL_DATABASE: guacamole
      MYSQL_USER: guacamole
      MYSQL_PASSWORD: guacamole@000

networks:
  internal:
    external: true

其他说明:

  • 上面yaml文件是要创建一个桥接的docker网络的
  • 记得添加一个NGINX反向代理
  • 页面访问端口:8080/tcp
  • 由于是JAVA程序,启动会比较慢可能需要等待10min

2.下载数据库:

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
  • 它会创建一个容器,然后从容器导出数据库后自动删除容器。
  • 数据库默认会被保存在当前工作目录

3.导入数据库

登录phpmyadmin,然后导入刚刚下载的数据库文件即可完成。

  • 导入guacamole数据库即可。
  • 默认容器部署好后会自动创建数据库用户和权限的

4.打开网址查看服务是否部署成功

  • 网址:http://ip:8080/guacamole
  • 默认账户:guacadmin  默认密码:guacadmin
  • 如果是解析了域名替换为域名,加了证书改https即可
  • 服务启动较慢可能需要等待10min以上。

二、中文乱码修复

1.中文字体导入

  • 由于这个软件开发的时候压根没考虑中国用户,所以没中文,得自己想办法加个中文字体包上去。
  • 中文字体包下载:点击下载
  • 只需要导入这个容器即可:guacd

2.将工作目录下的字体文件导入到guacd容器的 /usr/share/fonts/ 目录下面

docker cp SIMHEI.TTF guacd:/usr/share/fonts/

3.进入guacd容器命令行:

docker exec -it guacd sh

4.检查是否存在这个文件:SIMHEI.TTF

cd /usr/share/fonts/
ls

5.如果存在,输入 exit退出即可。

6.登录服务网页端,再每次添加新连接时选择 显示–>字体名:SIMHEI

  • 这个名字要和你上传的文件名字一直即可
  • 只能适配Kubernetes、SSH、Telnet的中文字体乱码问题。

end…