【问题标题】:Docker apache guacamole - GUACAMOLE_HOME wont changeDocker apache guacamole - GUACAMOLE_HOME 不会改变
【发布时间】:2021-03-31 07:24:00
【问题描述】:

我在docker-compose上使用apache guacamole,似乎无法编辑tomcat HTML文件。 我真的需要从控制面板中删除用户“主页”按钮(ctrl + alt+ shift)

我已经尝试添加新的扩展,但我不能,因为当我设置 GUACAMOLE_HOME 到“/guacamole-home”,在那里我创建了一个新扩展的 .jar,它总是将其设置为默认的“/root/.guacamole”。

我怎样才能做到这一点?即使有另一种方法可以在鳄梨酱中以另一种方式编辑client.html

guacamole:
                image: guacamole/guacamole:latest
                depends_on:
                      - guacd
                      - postgres_gqm
                volumes:
                        - /root/api/program.jar:/opt/guacamole/program.jar
                        - /root/api/guacamole-home:/guacamole-home
                environment:
                        - "enable-environment-properties=true"
                        - "GUACD_HOSTNAME=guacd"
                        - "POSTGRES_DATABASE=guacamole_db"
                        - "POSTGRES_HOSTNAME=postgres_gqm"
                        - "POSTGRES_PASSWORD=pass"
                        - "POSTGRES_USER=guacamole_user"
                        - "GUACD_LOG_LEVEL=debug"
                        - "GUACAMOLE_HOME=/guacamole-home"
                links:
                     - guacd
                ports:
                     - 8080/tcp
                restart: always

【问题讨论】:

  • 能否从tomcat日志中验证是否加载了扩展?每个加载的扩展都应该有一行,例如'INFO o.a.g.extension.ExtensionModule - Extension "blah blah" loaded'。
  • @mnikolic 如果我不能将扩展名放在GUACAMOLE_HOME/extensions 下,我将无法加载它,并且由于我无法安装GUACAMOLE_HOME 我无法添加新扩展名..

标签: docker tomcat docker-compose guacamole


【解决方案1】:

我设法使用扩展名更改了 guacamole 上的 tomcat HTML 文件,但不是按照文档建议的方式。

首先,我将这些文件从容器 guacamole 复制到主机:

docker cp <containerid>:/usr/local/tomcat /root/myhome
docker cp <containerid>:/opt/guacamole/bin/start.sh /root/myhome

然后,当我拥有文件时,我可以编辑下面的 client.html tomcat/webapps/guacamole/app/client/templates/client.html 在我的本地主机上。

所以我做扩展的方法是首先你去 start.sh 脚本 我在 localhost 上复制并将此行添加到此行号:

238:    ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT"
389:    ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT" 

应该在 start.sh 上:

# Add required .jar files to GUACAMOLE_LIB and GUACAMOLE_EXT
ln -s /opt/guacamole/postgresql/postgresql-*.jar "$GUACAMOLE_LIB"
ln -s /opt/guacamole/postgresql/guacamole-auth-*.jar "$GUACAMOLE_EXT"
ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT" #ADDED

这里:

# Add required .jar files to GUACAMOLE_LIB and GUACAMOLE_EXT
ln -s /opt/guacamole/mysql/mysql-connector-*.jar "$GUACAMOLE_LIB"
ln -s /opt/guacamole/mysql/guacamole-auth-*.jar "$GUACAMOLE_EXT"
ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT" #ADDED

现在,我们需要对 HTML 和 JS 进行扩展和更改: 在本地主机中:

mkdir myExt
cd myExt

vi guac-manifest.json#创建guac-manifest.json

{   "guacamoleVersion" : "*",

    "name"      : "B-Override",
    "namespace" : "b-override",

    "html" : [ "client.html" ],
    "js": ["clientController.js"]
}

我想更改client.html和clientController.js(替换原文件名没关系,我选择不替换guac-manifest.json中的原名。

我想从用户面板菜单(ctrl+alt+shift) 中删除连接下拉菜单 + 注销或回家的选项,所以我从我们复制到本地主机的 tomcat 文件中复制了原始 client.html:

cp ../tomcat/webapps/guacamole/app/client/templates/client.html .

还有:

cp ../tomcat//webapps/guacamole/app/client/controllers/clientController.js .

因为我还想从 guacamole 在 vm 关闭时提供的弹出窗口中删除主页和注销按钮。(重新连接 - 主页 - 注销)

现在,

我编辑了刚刚复制到 myExt 的文件:

vi client.html

我在文件顶部添加了这个:

<meta name="replace-children" content=".menu .menu-content .header">

它替换了我想要的 HTML 中的部分,我可以从文件中删除我不编辑的部分,它只会在原始文件中替换我在内容中添加的类

小例子:

<meta name="replace-children" content=".menu .menu-content .header">
    <div class="menu" ng-class="{open: menu.shown}" id="guac-menu">
        <div class="menu-content" ng-if="menu.shown">

            <!-- Stationary header -->
            <div class="header">
                <h2 class="connection-select-menu" ng-show="rootConnectionGroups">
                    <guac-menu menu-title="client.name" interactive="true">

您可以将要替换的代码上的类添加到内容中,并带有“。”在它前面(这就是我对如何更换零件的理解,我知道它与 css 文件有关,但这样让我更容易理解)

在我想要修改的 js 中,我没有删除我不需要更改的部分,因为它不一样,我去了“action =”并删除了HOME 和 @ 987654338@ 选项并像这样保存它,不需要像 HTML 这样的文件头上的任何东西。

现在扩展已经准备好了,我们需要将它作为一个 jar 文件 + 卷 start.sh 到 guacamole 容器:

首先我们需要安装它来获得 jar 选项:(ubuntu)

apt install default-jdk openjdk-11-jdk-headless fastjar openjdk-8-jdk-headless

然后我们走出 myExt 目录:

cd ..

jar cvf program.jar -C myExt .

现在我们转到docker-compose.yml 并添加卷:

guacamole:
        image: guacamole/guacamole:latest
        depends_on:
              - guacd
              - postgres_gqm
        volumes:
                - /root/myhome/start.sh:/opt/guacamole/bin/start.sh #ADDED
                - /root/myhome/program.jar:/opt/guacamole/program.jar #ADDED
        environment:
                - "GUACD_HOSTNAME=guacd"
                - "POSTGRES_DATABASE=guacamole_db"
                - "POSTGRES_HOSTNAME=postgres_gqm"
                - "POSTGRES_PASSWORD=PassWrdGQM"
                - "POSTGRES_USER=guacamole_user"
                - "GUACD_LOG_LEVEL=debug"
        links:
             - guacd
        ports:
             - 8080/tcp
        restart: always

现在:

docker-compose down
docker-compose up -d ; docker-compose logs -f --tail=10 guacamole 

并寻找扩展负载:

guacamole_1       | 09:50:10.683 [localhost-startStop-1] INFO  o.a.g.extension.ExtensionModule - Extension "B-Override" loaded.

如果您发现自己犯了错误,您可以随时返回并通过删除 /root/myhome/program.jar 来自本地主机,返回 myEXT 重新复制 client.html 文件或编辑它,再次将其作为 jar 和 docker-compose down + up 关闭。

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 2020-12-03
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2020-07-20
    • 2017-04-29
    • 2022-08-19
    • 2020-06-13
    相关资源
    最近更新 更多