1 / 17
Apr 2020

Hallo,
nach anfänglichen Verständnisproblemen läuft EGW 19.1 auf einem neuen CentOS 8 Server. Auch letsencrypt hat sich dank der Hilfe von Stefan und Ralf überreden lassen, auch auf meinem Server für ein Mindestmaß an Sicherheit zu sorgen. Aber leider kommt jetzt das nächste Problem und ich schätze auch hier habe ich irgendwas nicht verstanden.
ich kämpfe mit rocketchat. blödes Ding. Auch unter Berücksichtigung dieser Anmerkungen komme ich nicht weiter:

  1. läuft ja mittlerweile
  2. nicht mit “404 Not Found, The requested URL /rocketchat/ was not found on this Server”
[root@webserver egroupware-rocketchat]# sudo docker logs rocketchat
LocalStore: store created at
LocalStore: store created at
LocalStore: store created at
Setting default file store to GridFS
LocalStore: store created at
LocalStore: store created at
LocalStore: store created at
Setting default file store to GridFS
{"line":"120","file":"migrations.js","message":"Migrations: Not migrating, already at version 184","time":{"$date":1587581709699},"level":"info"}
ufs: temp directory created at "/tmp/ufs"
Loaded the Apps Framework and loaded a total of 0 Apps!
Updating process.env.MAIL_URL
Using GridFS for custom sounds storage
Using GridFS for custom emoji storage
Browserslist: caniuse-lite is outdated. Please run next command `npm update`
➔ System ➔ startup
➔ +-----------------------------------------------------+
➔ |                    SERVER RUNNING                   |
➔ +-----------------------------------------------------+
➔ |                                                     |
➔ |  Rocket.Chat Version: 3.1.1                         |
➔ |       NodeJS Version: 12.16.1 - x64                 |
➔ |      MongoDB Version: 4.0.17                        |
➔ |       MongoDB Engine: mmapv1                        |
➔ |             Platform: linux                         |
➔ |         Process Port: 3000                          |
➔ |             Site URL: http://172.16.1.4/rocketchat  |
➔ |     ReplicaSet OpLog: Enabled                       |
➔ |          Commit Hash: 0a16a86bee                    |
➔ |        Commit Branch: HEAD                          |
➔ |                                                     |
➔ +-----------------------------------------------------+

[root@webserver egroupware-rocketchat]# sudo docker ps -a
CONTAINER ID        IMAGE                                     COMMAND                  CREATED             STATUS                      PORTS                      NAMES
3f899703f2a1        rocketchat/rocket.chat:latest             "bash -c 'for i in `…"   30 minutes ago      Up 30 minutes               127.0.0.1:3000->3000/tcp   rocketchat
1e9f4af2b6ec        nginx:stable-alpine                       "nginx -g 'daemon of…"   6 days ago          Up 58 minutes               127.0.0.1:8080->80/tcp     egroupware-nginx
d98b02674deb        egroupware/egroupware:latest              "/entrypoint.sh php-…"   6 days ago          Up 58 minutes               9000/tcp                   egroupware
119f00baec41        mongo:4.0                                 "docker-entrypoint.s…"   6 days ago          Exited (0) 30 minutes ago                              egroupware-rocketchat_mongo-init-replica_1
2b5377f6c846        mongo:4.0                                 "docker-entrypoint.s…"   6 days ago          Up 58 minutes               27017/tcp                  rocketchat-mongo
7fba04ff8a53        containrrr/watchtower                     "/watchtower --sched…"   6 days ago          Up 58 minutes                                          egroupware-watchtower
815e61293de7        quay.io/egroupware/collabora-key:stable   "/bin/sh -c 'bash st…"   6 days ago          Up 58 minutes               127.0.0.1:9980->9980/tcp   collabora-key

meine docker-compose:

version: '2'
volumes:
  # store MongoDB on an (internal) Volume
  mongo:

services:
  rocketchat:
    image: rocketchat/rocket.chat:latest
    command: bash -c 'for i in `seq 1 30`; do node main.js && s=$$? && break || s=$$?; echo "Tried $$i times. Waiting 5 secs..."; sleep 5; done; (exit $$s)'
    restart: unless-stopped
    volumes:
      - /var/lib/egroupware/default/rocketchat/uploads:/app/uploads
    # if EGroupware uses a certificate from a private CA, OAuth authentication will fail, you need to:
    # - have the CA certificate stored at /etc/egroupware-docker/private-ca.crt
    # - uncomment the next 2 lines about the private CA:
    # - /etc/egroupware-docker/private-ca.crt:/usr/local/share/ca-certificates/private-ca.crt:ro
    environment:
    # - NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/private-ca.crt
    # IMPORTANT: change ROOT_URL to your actual url eg. https://domain.com/rocketchat
      - ROOT_URL=https://XXXXXXXX/rocketchat
      - PORT=3000
      - MONGO_URL=mongodb://mongo:27017/rocketchat
      - MONGO_OPLOG_URL=mongodb://mongo:27017/local
#     - HTTP_PROXY=http://proxy.domain.com
#     - HTTPS_PROXY=http://proxy.domain.com
    depends_on:
      - mongo
    ports:
      - 127.0.0.1:3000:3000
    container_name: rocketchat
    # set the ip-address of your docker host AND your official DNS name so Rocket.Chat
    # can access EGroupware without the need to go over your firewall
    #extra_hosts:
    #- "my.host.name:ip-address"

  mongo:
    image: mongo:4.0
    restart: unless-stopped
    volumes:
     - mongo:/data/db
     - /var/lib/egroupware/default/rocketchat/dump:/dump
    command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
    container_name: rocketchat-mongo

  # this container's job is just run the command to initialize the replica set.
  # it will run the command and remove himself (it will not stay running)
  mongo-init-replica:
    image: mongo:4.0
    command: 'bash -c "for i in `seq 1 30`; do mongo mongo/rocketchat --eval \"rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})\" && s=$$? && break || s=$$?; echo \"Tried $$i times. Waiting 5 secs...\"; sleep 5; done; (exit $$s)"'
    depends_on:
      - mongo

…ich komme wieder nicht weiter. oder ich bin einfach zu blöd :disappointed:

  • created

    Apr '20
  • last reply

    Apr '20
  • 16

    replies

  • 2.7k

    views

  • 2

    users

  • 7

    links

Ich habe Deinen Beitrag ein bisschen formatiert: ``` sonst is er so schwer zu lesen

Zur Diagnose würde ich folgende Kommandos ausführen:

curl -i http://127.0.0.1:3000/rocketchat/api/info
curl -i https://deine.domain.de/rocketchat/api/info
docker exec -it egroupware bash -c 'apt update && apt install -y curl'
docker exec -it egroupware curl -i https://deine.domain.de/rocketchat/api/info
docker exec -it rocketchat curl -i https://deine.domain.de/egroupware/

Natürlich deine.domain.de mit der ersetzen die du verwendest / auf die das Zertifikat passt.

Ralf

“Ich habe Deinen Beitrag ein bisschen formatiert: ``` sonst is er so schwer zu lesen” ….war schon irritiert:joy:

hier die Diagnose (darfst gerne formatieren):

[root@webserver egroupware-rocketchat]# curl -i http://127.0.0.1:3000/rocketchat/api/info
HTTP/1.1 200 OK
X-XSS-Protection: 1
X-Instance-ID: NBehtLocmjaCYrnEJ
Cache-Control: no-store
Pragma: no-cache
content-type: application/json
Vary: Accept-Encoding
Date: Wed, 22 Apr 2020 20:25:07 GMT
Connection: keep-alive
Transfer-Encoding: chunked

{“version”:“3.1.1”,“success”:true}[root@webserver egroupware-rocketchat]# curl -i https://XXXXXX/rocketchat/api/info
HTTP/1.1 404 Not Found
Date: Wed, 22 Apr 2020 20:26:38 GMT
Server: Apache/2.4.37 (centos) OpenSSL/1.1.1c
Content-Length: 217
Content-Type: text/html; charset=iso-8859-1

404 Not Found

Not Found

The requested URL /rocketchat/api/info was not found on this server.

[root@webserver egroupware-rocketchat]# docker exec -it egroupware bash -c 'apt update && apt install -y curl' Hit:1 http://ppa.launchpad.net/ondrej/php/ubuntu bionic InRelease Hit:2 http://archive.ubuntu.com/ubuntu bionic InRelease Get:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB] Get:4 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB] Get:5 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] Get:6 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [1185 kB] Get:7 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [1372 kB] Fetched 2809 kB in 2s (1339 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done 40 packages can be upgraded. Run 'apt list --upgradable' to see them. Reading package lists... Done Building dependency tree Reading state information... Done curl is already the newest version (7.58.0-2ubuntu3.8). 0 upgraded, 0 newly installed, 0 to remove and 40 not upgraded. [root@webserver egroupware-rocketchat]# docker exec -it egroupware curl -i https://XXXXXX/rocketchat/api/info curl: (7) Failed to connect to XXXXXX port 443: Connection timed out [root@webserver egroupware-rocketchat]# docker exec -it rocketchat curl -i https://XXXXXX/egroupware/ curl: (7) Failed to connect to XXXXXX port 443: Connection timed out [root@webserver egroupware-rocketchat]# ping XXXXXX PING XXXXXX (172.16.1.4) 56(84) bytes of data. 64 bytes from XXXXXX (172.16.1.4): icmp_seq=1 ttl=64 time=0.144 ms

— XXXXXX ping statistics —
8 packets transmitted, 8 received, 0% packet loss, time 198ms
rtt min/avg/max/mdev = 0.117/0.122/0.144/0.008 ms

sieht bei mir genau so aus:

/etc/httpd/conf.d/egroupware-rocketchat.conf

#################################
# Reverse proxy for Rocket.Chat #
#################################

# Please note:
#
# This proxy configuration is currently included at global level in
# /etc/apache2/conf.d/egroupware-rocketchat.conf and used for all vhosts.
#
# You can comment it out there and include it only in a certain vhost:
#
# <VirtualHost *:80>
# include /etc/egroupware-rocketchat/apache.conf
# </VirtualHost>

RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule ^/rocketchat/(.*) ws://127.0.0.1:3000/rocketchat/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule ^/rocketchat/(.*) http://127.0.0.1:3000/rocketchat/$1 [P,L]

Das kann nicht funktionieren!

Du muss, wie im Kommentar des Konfigfiles steht, das in Deinen VirtualHost includieren.

Das richtet das Paket normal bei der Installation ein. Hat bei Dir, aus welchen Gründen auch immer, anscheinend nicht funktioniert.

Ralf

meines Erachtens ist es ja inkludiert. Die Datei, bzw eine Verküpfung dazu liegt ja im Ordner /etc/httpd/conf.d/

Für egroupware ist es ja auch nicht anders und funktioniert.

scheinbar verwendet der VirtualHost die:

/etc/httpd/conf.d/egroupware-docker.conf

aber nicht die:
/etc/httpd/conf.d/egroupware-rocketchat.conf

Stimmt leider nicht, das muss im VirtualHost includiert werden, damit es funktioniert, und nicht im conf.d Verzeichnis stehen!

Das Installations Script ist hier:

Für Nginx gibt es da eine schönere Struktur mit einem Verzeichnis das innerhalb des vHosts includiert wird, leider nicht für Apache :frowning:

Ralf

wohin genau würde das Script schreiben? da müsste ja auch der Reverse Proxy für egroupware definiert sein oder?

ich glaube ich habe den Fehler gefunden: in der /etc/httpd/conf.d/egroupware-docker.conf ist für egroupware der ReverseProxy definiert:
ProxyPass /egroupware/ http://127.0.0.1:8080/egroupware/1 timeout=4000 connectiontimeout=600 acquire=3000 retry=6
ProxyPassReverse /egroupware/ http://127.0.0.1:8080/egroupware/1

und in der /etc/httpd/conf.d/egroupware-rocketchat.conf steht für rocketchat nichts drin

Philipp

Das Problem ist das Rocket.Chat Websockets benutzt, deswegen kann der Include nicht global / außerhalb des VirtualHost erfolgen, wie bei EGroupware!

Ich schreibe das nicht weil ich es vermute, sondern weil ich es weiß.

Ralf

ok, glaube ich dir.

Also rocketchat antwortet jetzt von außen!

aber der Container von egroupware auf rocketchat noch nicht…

Dann mach noch mal die Diagnose Kommandos die ich Dir am Anfang geschrieben habe, speziell:

docker exec -it rocketchat curl -i 'https://deine.domain.de/egroupware/'

Kann z.B. NAT Traversal sein, sprich das der RC Container nicht mit der externen Adresse sprechen kann oder darf.

Dazu kann man in der docker-compose vom RC die docker0 Adresse als extra-host setzen, dann läuft die Verbindung intern.

Ralf

nach wie vor: curl: (7) Failed to connect to deine.domain.de port 443: Connection timed out

was muss ich da in die docker-compose schreiben?

der webserver befindet sich übrigens in der DMZ von ipfire, also in orange. Von hier aus kommt er nicht an seine eigene externe Adresse. Frage mich nicht warum, konnte mir bisher noch keiner sagen. Nur soviel, dass ich es mit der manuellen Definition über hosts umgehen kann. Also in der hosts meines webserver steht:

“172.16.1.4 deine.domain.de

Ich würde immer die docker0 Adresse, per Default ist das 172.17.0.1, verwenden. Die Container Adressen ändern sich! Du kannst auch die von eth0 verwenden …

Musst Du bei EGroupware, Rocket.Chat und Collabora eintragen:
Suche in /etc/egroupware-/docker.compose.yml einfach mal nach extra_host, dort steht auch eine Beschreibung was zu machen ist. Danach müssen die Container neu gebildet werden, sprich:

cd /etc/egroupware-*
vi docker-compose.y*ml
docker-compose up -d

Ralf

vielen Dank!!

gibt es eine einfache Möglichkeit RC nach den ersten Tests wieder zurückzusetzen? also irgendwie die Datenbank zu löschen?

Philipp

Ja einfach alles stopen und das Volume der MongoDB löschen:

cd /etc/egroupware-rocketchat
docker-compose stop
docker-compose rm -f
docker volume ls
docker volume rm $name
docker-compose up -d

Ralf