14 / 14
Dec 2020

Hallo an alle,
ich kämpfe mit einem Problem bei der Nutzung von Guacamole.
Die Rahmenbedingungen:

  • Ubuntu Server 20.04
  • EGw Neuinstallation als Docker Variante
  • Lets Encrypt Zertifikat auf externen Hostnamen
  • Guacamole Installation wie hier in der Anleitung beschrieben.

Problem:

  • Nach der Konfiguration einer Verbindung erscheint per “docker logs -f guacamole” folgender Fehler:

17:27:15.687 [http-nio-8080-exec-5] INFO o.a.g.environment.LocalEnvironment - GUACAMOLE_HOME is “/root/.guacamole”.
17:27:15.824 [http-nio-8080-exec-6] ERROR o.a.g.w.GuacamoleWebSocketTunnelEndpoint - Creation of WebSocket tunnel to guacd failed: java.net.UnknownHostException: guacd: Temporary failure in name resolution
17:27:15.954 [http-nio-8080-exec-10] ERROR o.a.g.s.GuacamoleHTTPTunnelServlet - HTTP tunnel request failed: java.net.UnknownHostException: guacd


Wenn ich in den erweiterten Verbindungseigenschaften die IP des Docker Containers hinterlege bekomme ich einen Timeout - wobei ich bei weitem kein Docker Experte bin und nicht sicher, ob die Herangehensweise zielführend ist.
Was ich kann ich tun oder wo liegt das Problem. Vielleicht kann mir jemand einen Tipp geben.
Vielen Dank.
Stefan

Hallo Stefan.

Hmmm…
Du meinst du legst eine Verbindung an und hinterlegst als host die IP des Docker-Containers?(???)
Wenn ja: Warum?

Mach sonst mal Bildchen…

Und beschreibe mal, was eigentlich dein Problem ist. HAbe ich noch nicht verstanden.

Stefan

Hallo Stefan,
ich beschreibe das Problem noch mal anders:


12:00:28.237 [http-nio-8080-exec-6] ERROR o.a.g.w.GuacamoleWebSocketTunnelEndpoint - Creation of WebSocket tunnel to guacd failed: Connection timed out.


Ich weiß, das ich hier absolut an der Oberfläche kratze aber vielleicht hilft mir ein Schubs in die richtige Richtung weiter.
Vielen Dank und bis dann.
Stefan

Version?

Wie genau, welche Anleitung?


Wenn du im guacamole-Container stehst (Ich benutze gerne Dockly):
Was bringt ein
ping guacd
?


Ich auch nicht, wirklich nicht… :slight_smile:

Stefan

Problem könnte NLA sein. Ist das bei Deinem Windows eingeschaltet?

Kannst ja mal die Zugangsdaten eintragen, wenn es dann geht, ist es NLA.

Ralf

Hallo Stefan,
ich nutze Version 20.1 vom 17.12.2020. Ich habe über Portainer mal innerhalb des Guacamole Containers ein ping an guacd durchgeführt und wie nicht anders zu erwarten auch hier ein Namensauflösungsproblem.
Der Container von guacd befindet sich in einem anderen docker Netz als der Guacamole Container. Ist dies richtig so?
Wie war doch gleich die logische Struktur von dem Aufbau? guacd ist der Proxy für Guacamole, demzufolge würde ein anderes Netz Sinn machen. Oder wie war das?
Einen schönen 4. Advent.
Stefan

Nein. Liegt normalerweise in dem einen Dockernetz welches das EGw-Setup anlegt/konfiguriert. Nach Außen wird dieses dann durch den Reverse-Proxy terminiert/ zugänglich gemacht.

Schaust du:


Ich habe hier in der Darstellung natürlich nicht die beiden Container aufgelöst. Soll ja verständlich bleiben.

Da kann @RalfBecker sicher besser etwas zu sagen.
Ist aber bei einer Standard-Installation auch ohne Belang. Das sollte so out of the Box funktionieren. Tut es sonst auch. Soll ja auch der wesentlicher Vorteil sein Guacamole per EGroupware zu nutzen.

Was für einen IP-Bereich hast du im lokalen Netz?
Und du hast ganz sicher bei/nach der Installation nicht am System manuell geschraubt zu haben?
Hättest du die Möglichkeit das auf Basis eines Debian (IMMER meine Empfehlung) auszuprobieren?
Wie sieht denn bei dir ein docker ps -a aus?

Stefan

Hallo Stefan und vielen Dank für die Rückmeldung,
in meinem lokalen Netz nutze ich 192.168.1.0/24. Die Installation der EGw und der Guacamole Einrichtung habe ich mittlerweile drei mal wiederholt, allerdings immer auf einem Ubuntu 20.04… Das Ergebnis war immer das Gleiche. Manuelle Veränderungen gab es nicht. Standardinstallation - allerdings mounte ich in der VM eine zweite Platte, die ich nach /var mounte. Aber auch, wenn dies nicht so ist (alles auf einer Platte) macht dies keinen Unterschied (ich kann mir auch keinen Grund vorstellen, warum hier ein anderes Ergebnis raus kommen sollte).
Wenn ich die Tage Zeit finde versuche ich mal einen Ausflug zu Debian. Wäre für mich mal wieder ein anderer Blickpunkt auf die Geschichte - man lernt ja nie aus.
Docker ps -a schaut folgender maßen aus:

CONTAINER ID        IMAGE                                     COMMAND                  CREATED             STATUS              PORTS                      NAMES
168d0b0e8287        portainer/portainer                       "/portainer"             About an hour ago   Up About an hour    0.0.0.0:9000->9000/tcp     portainer
d6e03754d016        guacamole/guacamole:1.2.0                 "/opt/guacamole/bin/…"   19 hours ago        Up 19 hours         127.0.0.1:8888->8080/tcp   guacamole
f2d5f8ea1536        guacamole/guacd:1.2.0                     "/bin/sh -c '/usr/lo…"   19 hours ago        Up 19 hours         4822/tcp                   guacamole-guacd
64646248d538        nginx:stable-alpine                       "/docker-entrypoint.…"   23 hours ago        Up 19 hours         127.0.0.1:8080->80/tcp     egroupware-nginx
2280c2b7c9e5        phpswoole/swoole:latest                   "/entrypoint.sh"         23 hours ago        Up 19 hours                                    egroupware-push
b1a80872ba57        containrrr/watchtower:latest              "/watchtower --sched…"   23 hours ago        Up 19 hours         8080/tcp                   egroupware-watchtower
1a1d5c7c722b        egroupware/egroupware:20.1                "/entrypoint.sh php-…"   23 hours ago        Up 19 hours         9000/tcp                   egroupware
280d4bca5715        mariadb:10.4                              "docker-entrypoint.s…"   23 hours ago        Up 19 hours         3306/tcp                   egroupware-db
7be587b9fd6f        quay.io/egroupware/collabora-key:stable   "/bin/sh -c 'bash st…"   23 hours ago        Up 19 hours         127.0.0.1:9980->9980/tcp   collabora-key

Seit kurzem ist der Portainer Container (schönes Wortspiel :grin:) dazu gekommen.
Bis dann
Stefan

Beide befinden sich im gleichen Netzwerk “egroupware-guacamole_default”!

docker network ls
root@debian:~# docker network ls
NETWORK ID          NAME                               DRIVER              SCOPE
7d62b2ce8e70        bridge                             bridge              local
02a19687f472        egroupware-collabora-key_default   bridge              local
012d5f246b48        egroupware-docker_default          bridge              local
c94ff414666f        egroupware-guacamole_default       bridge              local
ccaae189b225        egroupware-rocketchat_default      bridge              local
4ddf4621b6f1        host                               host                local
c52468e50334        none                               null                local

Mach bei Dir mal ein

root@debian:~# docker inspect guacamole-guacd
[
    {
        "Id": "cc56c11081ab902dcfd2e21a488203fdce8ea8e0420eb2f7fdacde84038b1aa2",
        "Created": "2020-08-12T12:21:59.249492885Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "/usr/local/guacamole/sbin/guacd -b 0.0.0.0 -L $GUACD_LOG_LEVEL -f"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 1071,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-12-04T18:59:00.968999016Z",
            "FinishedAt": "2020-12-04T18:58:28.153633122Z"
        },
        "Image": "sha256:9713c60080341c781124c6b507ccaa69b4cc23aba4e4aa69fc55678e65aa4e7c",
        "ResolvConfPath": "/var/lib/docker/containers/cc56c11081ab902dcfd2e21a488203fdce8ea8e0420eb2f7fdacde84038b1aa2/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/cc56c11081ab902dcfd2e21a488203fdce8ea8e0420eb2f7fdacde84038b1aa2/hostname",
        "HostsPath": "/var/lib/docker/containers/cc56c11081ab902dcfd2e21a488203fdce8ea8e0420eb2f7fdacde84038b1aa2/hosts",
        "LogPath": "/var/lib/docker/containers/cc56c11081ab902dcfd2e21a488203fdce8ea8e0420eb2f7fdacde84038b1aa2/cc56c11081ab902dcfd2e21a488203fdce8ea8e0420eb2f7fdacde84038b1aa2-json.log",
        "Name": "/guacamole-guacd",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/var/lib/egroupware/default/guacamole/drive:/drive:rw",
                "/var/lib/egroupware/default/guacamole/record:/record:rw"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "egroupware-guacamole_default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "always",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": [],
            "CapAdd": null,
            "CapDrop": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/c5ae6adefdb2cfac537c41b90a8d7040f674e1ba01520207d0bb6852b4536a40-init/diff:/var/lib/docker/overlay2/db69da420d5b5aabaed68df9c3cf82eaaf64c04b4e1f2a539828c62fce445419/diff:/var/lib/docker/overlay2/5f2febef6f583001957741153c3e7e571cd2ad421d6a06267f429e623180178d/diff:/var/lib/docker/overlay2/b160fc41b4f1d5f35e2fda8862605bce8758ed9b9f327d47e64bcb517dd183bf/diff:/var/lib/docker/overlay2/4876b1d42d78045806cdf62a2a02663cdeaa51dc35d17312e5c27128aafe6cad/diff",
                "MergedDir": "/var/lib/docker/overlay2/c5ae6adefdb2cfac537c41b90a8d7040f674e1ba01520207d0bb6852b4536a40/merged",
                "UpperDir": "/var/lib/docker/overlay2/c5ae6adefdb2cfac537c41b90a8d7040f674e1ba01520207d0bb6852b4536a40/diff",
                "WorkDir": "/var/lib/docker/overlay2/c5ae6adefdb2cfac537c41b90a8d7040f674e1ba01520207d0bb6852b4536a40/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/var/lib/egroupware/default/guacamole/drive",
                "Destination": "/drive",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/var/lib/egroupware/default/guacamole/record",
                "Destination": "/record",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "cc56c11081ab",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "4822/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LC_ALL=C.UTF-8",
                "LD_LIBRARY_PATH=/usr/local/guacamole/lib",
                "GUACD_LOG_LEVEL=info"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "/usr/local/guacamole/sbin/guacd -b 0.0.0.0 -L $GUACD_LOG_LEVEL -f"
            ],
            "ArgsEscaped": true,
            "Image": "guacamole/guacd:1.2.0",
            "Volumes": {
                "/drive": {},
                "/record": {}
            },
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "e3f7756734a07f52bd1a2d055dfae099cce7c21c23f19bdde6f905b38eeae191",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "egroupware-guacamole",
                "com.docker.compose.service": "guacd",
                "com.docker.compose.version": "1.21.0"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "7558e4b17fbda13bdf16131b514840514f0dbccc11e178106ecbf3a97f21cf8b",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "4822/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/7558e4b17fbd",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "egroupware-guacamole_default": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "cc56c11081ab",
                        "guacd"
                    ],
                    "NetworkID": "c94ff414666f6c64887deff319d22eaaaf770c256809b8b179bf6d2285d1d79f",
                    "EndpointID": "05c685021ef82dc564ba116abf252aef51653e6f8b1d45250d2ba422087d2f5d",
                    "Gateway": "172.21.0.1",
                    "IPAddress": "172.21.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:15:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

Dann siehst Du in welchem Netzwerk der guacd und der Guacamole Container sind.

Hast Du ein /etc/egroupware-guacamole/docker-compose.overwrite.yml File, wenn ja poste mal den Inhalt (OHNE PASSWORTE!!!).

Ralf

Hallo Ralf,
folgendes ist das Ergebnis von
docker inspect guacamole-guacd (gekürzt)


“NetworkSettings”: {
“Bridge”: “”,
“SandboxID”: “ccbdc1e6093a33112b3efdad975d5cd4e9f33d2ac15c710717695cd8be7e606f”,
“HairpinMode”: false,
“LinkLocalIPv6Address”: “”,
“LinkLocalIPv6PrefixLen”: 0,
“Ports”: {
“4822/tcp”: null
},
“SandboxKey”: “/var/run/docker/netns/ccbdc1e6093a”,
“SecondaryIPAddresses”: null,
“SecondaryIPv6Addresses”: null,
“EndpointID”: “”,
“Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“IPAddress”: “”,
“IPPrefixLen”: 0,
“IPv6Gateway”: “”,
“MacAddress”: “”,
“Networks”: {
egroupware-guacamole_default”: {
“IPAMConfig”: null,
“Links”: null,
“Aliases”: [
“guacd”,
“f2d5f8ea1536”
],
“NetworkID”: “df82f8814ad4b2ebd4e458e9473eb2cd8e2729511ed8c61fc60a0c60a75f7872”,
“EndpointID”: “9324d429cfa2373bc2805e6f88d9e3cac0ff0ad9ab82c87817fdd7a06187dd56”,
“Gateway”: “172.20.0.1”,
“IPAddress”: “172.20.0.2”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“MacAddress”: “02:42:ac:14:00:02”,
“DriverOpts”: null


Das Ergebnis von
docker inspect guacamole:


“Networks”: {
egroupware-docker_default”: {
“IPAMConfig”: null,
“Links”: [
“guacamole-guacd:guacamole-guacd”,
“guacamole-guacd:guacd”
],
“Aliases”: [
“d6e03754d016”,
“guacamole”
],
“NetworkID”: “1747fdf4526a832773a310133d99ccf637b5c9f5aab7cb44514e05a3793ceba9”,
“EndpointID”: “ee17dc2a9c7bee1295d2fe66495232e41f575fcc808eeeacd780f1fcb416871f”,
“Gateway”: “172.19.0.1”,
“IPAddress”: “172.19.0.5”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“MacAddress”: “02:42:ac:13:00:05”,
“DriverOpts”: null


Hier der Inhalt von docker-compose-overwrite.yml:


#########################################################################################

'### docker-compose.override.yml file for egroupware-guacamole package

'### Place all your modifications in this file, instead of /etc/egroupware-guacamole/docker-compose.yaml.

‘### If you want to make some modification / uncomment eg. some enviroment variables, you also have to:
’### - uncomment the service eg. “guacamole:”, if not already uncommented
’### - uncomment the “environment:” section of the service

‘### services:
’### guacamole:
’### environment:
’### - MYSQL_PASSWORD: guacamole-user-password

'### Please note: indention with space (NOT tabs!) matter in .yml files!

##########################################################################################
version: ‘3’
’# we need access to networks of egroupware to be able to access the db, if running in a container
’# some distros / docker-versions remove the dash from egroupware-docker_default
networks:
egroupware-docker_default:
external: true
services:
guacamole:
networks:
- egroupware-docker_default
environment:
# MariaDB running as container
MYSQL_HOSTNAME: db
MYSQL_DATABASE: egroupware
MYSQL_USER: guacamole
# guacamole-user-password must NOT contain special chars, eg. use the following to generate a save one: openssl rand --hex 16
MYSQL_PASSWORD:
# see https://github.com/apache/guacamole-client/blob/master/guacamole-docker/bin/start.sh#L5521
OPENID_AUTHORIZATION_ENDPOINT: https://XXX.de/egroupware/openid/endpoint.php/authorize
OPENID_JWKS_ENDPOINT: https://XXX.de/egroupware/openid/endpoint.php/jwks
OPENID_ISSUER: https://XXX.de
OPENID_CLIENT_ID: guacamole
OPENID_REDIRECT_URI: https://XXX.de/guacamole/
image: guacamole/guacamole:1.2.0
# set the ip-address of docker0 interface or your docker host AND your official DNS name so Guacamole
# can access EGroupware without the need to go over your firewall
’# extra_hosts:
’# - "XXX.de:172.17.0.1"
guacd:
image: guacamole/guacd:1.2.0


Die Netzwerke heißen gleich, haben aber unterschiedliche ID und IPs!

Deswegen funktioniert bei Dir garnichts.

Ich würde versuchen alles zu löschen und neu zu starten. Du kannst die Guacamole Container stoppen und dann: docker system prune -a
Das löscht alles was nicht am laufen ist.

Ralf

Hallo Ralf und sorry für die späte Reaktion,
Frage: wie erzeuge ich die Container am besten neu? Komplett von vorn mit

HTTP_HOST=example.org apt install egroupware-guacamole

oder irgendwie eleganter?
Vielen Dank und bis dann.
Stefan

Nein!

Einfach
cd /etc/egroupware-guacamole
docker-compose up -d

Natürlich erst nachdem Du wie beschrieben die Container und Netzwerke gelöscht hast.

Ralf

Hallo Ralf,
das neu erstellen der Container hatte das gleiche Ergebnis zur Folge. Ich hin einen anderen Weg gegangen: “klicke-bunti-Admin” der ich nunmal bin habe ich über Portainer die Netzwerkzuweisung vom guacd Container verändert. Dieser ist nun an das egroupware-docker_default Netz attached - funktionierte danach sofort.
Ich stelle mir nun allerdings die Frage: was passiert bei einem Update? Resettet sich dann die Zuweisung wieder? Und warum ist nach der Neuinstallation die Zuweisung falsch?
Wie dem auch sei: vielen Dank für euren (Deinen) Support, gesegnete Weihnachten und im kommenden Jahr viel Erfolg und bleibt gesund! Dieses Jahr nerve ich euch nicht mehr :wink:
Stefan