Benutzer-Werkzeuge

Webseiten-Werkzeuge


nextcloud:notify_push

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
nextcloud:notify_push [2026/07/27 09:13] – [1. Platzhalter festlegen] franznextcloud:notify_push [2026/07/27 10:18] (aktuell) – [11. Client prüfen] franz
Zeile 28: Zeile 28:
 |<APACHEE_BACKEND_PORT>|8095|Host-Port des Push Daemons| |<APACHEE_BACKEND_PORT>|8095|Host-Port des Push Daemons|
 |<PUSH_PORT>|7867|Port des Push Daemons| |<PUSH_PORT>|7867|Port des Push Daemons|
 +
 +Vor jeder Änderung:
 +<code>
 +
 +cd <PROJEKTVERZEICHNIS>
 +cp docker-compose.yml docker-compose.yml.bak-$(date +%Y%m%d-%H%M%S)
 +
 +</code>
 +===== 2. Voraussetzungen prüfen =====
 +
 +==== 2.1 Redis prüfen ====
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ config:system:get redis
 +
 +</code>
 +
 +zusätzlich
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ status
 +
 +</code>
 +
 +''notify_push'' setzt einen funktionierenden Redis-Server voraus.
 +==== 2.2. App installieren und aktivieren ====
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ app:install notify_push
 +
 +</code>
 +
 +Falls die App bereits installiertist
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ app:enable notify_push
 +
 +</code>
 +
 +Status prüfen
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ app:list | grep -A3 -B3 notify_push
 +
 +</code>
 +==== 2.3. Prozessorarchitektur und Binary prüfen ====
 +<code>
 +
 +docker compose exec <APP_SERVICE> uname -m
 +
 +</code>
 +
 +Ausgabe bei einem AMD64/Intel Server
 +
 +x86_64
 +
 +Binary suchen
 +
 +<code>
 +docker compose exec <APP_SERVICE> sh -c \
 +  'find /var/www/html/custom_apps/notify_push/bin \
 +  -type f -name notify_push -ls 2>/dev/null'
 +
 +</code>
 +
 +Für ''x86_64'' muss diese Datei ausführbar sein:
 +<code>
 +/var/www/html/custom_apps/notify_push/bin/x86_64/notify_push
 +
 +</code>
 +
 +Falls erforderlich
 +
 +<code>
 +chmod 755 custom_apps/notify_push/bin/x86_64/notify_push
 +
 +</code>
 +===== 3. Compose Service ergänzen =====
 +
 +Der Push-Daemon wird als eigener Service im bestehenden Nextcloud-Projekt betrieben.
 +
 +<blockquote>
 +
 +Wichtig: Port ''7867'' darf nicht gleichzeitig beim Nextcloud-Service ''app'' und beim Dienst ''notify_push'' veröffentlicht werden.
 +
 + </blockquote>==== 3.1. bei Bedarf Falsche Portfreigabe beim App-Service entfernen ====
 +
 +Unter dem Nextcloud-Service darf nur der Web-Port stehen, zum Beispiel:
 +
 +<code>
 +services:
 +  app:
 +    ports:
 +      - "127.0.0.1:<APACHE_BACKEND_PORT>:80"
 +
 +</code>
 +==== 3.2. Dienst mit notify_push ====
 +
 +Den folgenden Service auf derselben Ebene wie ''app'', ''db'' und ''redis'' ergänzen:
 +<code>
 +services:
 +  notify_push:
 +    image: <NEXTCLOUD_IMAGE>
 +    container_name: <PUSH_CONTAINER>
 +    restart: unless-stopped
 +    user: www-data
 +
 +    entrypoint:
 +      - /var/www/html/custom_apps/notify_push/bin/x86_64/notify_push
 +
 +    command:
 +      - /var/www/html/config/config.php
 +
 +    environment:
 +      PORT: "7867"
 +      NEXTCLOUD_URL: "http://<APP_SERVICE>"
 +      TZ: "Europe/Vienna"
 +
 +    depends_on:
 +      - <APP_SERVICE>
 +      - db
 +      - redis
 +
 +    networks:
 +      - <NETWORK>
 +
 +    ports:
 +      - "127.0.0.1:7867:7867"
 +
 +    volumes:
 +      - nextcloud:/var/www/html:ro
 +      - ./config:/var/www/html/config:ro
 +      - ./custom_apps:/var/www/html/custom_apps:ro
 +      - /etc/localtime:/etc/localtime:ro
 +
 +    secrets:
 +      - db_user_password
 +      - smtp_password
 +
 +</code>
 +==== 3.3. Volume Section anpassen ====
 +
 +Die Volume-Namen und Bind-Mounts müssen zum vorhandenen ''app''-Service passen.
 +
 +Den App-Service anzeigen:
 +
 +<code>
 +docker compose config | sed -n \
 +  '/ <APP_SERVICE>:/,/ [a-zA-Z0-9_-]*:/p'
 +
 +</code>
 +
 +Mindestens erforderlich sind normalerweise:
 +
 +  * Zugriff auf ''/var/www/html/config''
 +  * Zugriff auf ''/var/www/html/custom_apps''
 +  * Zugriff auf das Nextcloud-Volume, sofern der Binary-Pfad oder weitere Dateien daraus stammen
 +  * dieselben Secrets, sofern ''config.php''  daraus Werte liest
 +  * dasselbe Docker-Netzwerk wie Nextcloud, Datenbank und Redis
 +
 +Die Mounts im Push-Service können schreibgeschützt ('':ro'') eingebunden werden.
 +
 +
 +===== 4. Compose Konfiguration prüfen und starten =====
 +
 +Syntax prüfen
 +
 +<code>
 +cd <PROJEKTVERZEICHNIS>
 +docker compose config --quiet
 +
 +</code>
 +
 +Dienste anzeigen
 +
 +<code>
 +docker compose config --services
 +
 +</code>
 +
 +''notify_push'' muss in der Liste enthalten sein.
 +
 +Container erstellen
 +
 +<code>
 +docker compose up -d --force-recreate notify_push
 +
 +</code>
 +
 +Status prüfen
 +
 +<code>
 +docker compose ps notify_push
 +
 +</code>
 +
 +erwartet wird
 +
 +STATUS: Up\\
 +PORTS: 127.0.0.1:7867->7867/tcp
 +
 +eventuell logs prüfen
 +
 +<code>
 +docker compose logs --tail=100 notify_push
 +
 +</code>
 +
 +Bei ''Restarting'' oder ''Exited'':
 +<code>
 +docker compose ps -a notify_push
 +docker compose logs --tail=200 notify_push
 +
 +</code>
 +===== 5. Apache Reverse-Proxy konfigurieren =====
 +
 +Im HTTPS-VirtualHost der betreffenden Nextcloud-Domain müssen die Push-Regeln **vor** einer allgemeinen ''ProxyPass / ...''-Regel stehen.
 +
 +Beispiel:\\
 +<code>
 +<VirtualHost *:443>
 +    ServerName <DOMAIN>
 +
 +    ProxyPreserveHost On
 +
 +    # Nextcloud Client Push
 +    ProxyPass        /push/ws  ws://127.0.0.1:7867/ws
 +    ProxyPass        /push/    http://127.0.0.1:7867/
 +    ProxyPassReverse /push/    http://127.0.0.1:7867/
 +
 +    # Nextcloud
 +    ProxyPass        /  http://127.0.0.1:<APACHE_BACKEND_PORT>/
 +    ProxyPassReverse /  http://127.0.0.1:<APACHE_BACKEND_PORT>/
 +
 +    # Bestehende TLS-, Header- und Zertifikatskonfiguration
 +    # bleibt unverändert.
 +</VirtualHost>
 +
 +</code>
 +
 +Die Reihenfolge ist wichtig!!
 +
 +<code>
 +ProxyPass /push/ ...
 +ProxyPass / ...
 +
 +</code>
 +==== 5.1. Apache Module prüfen ====
 +
 +<code>
 +sudo a2enmod proxy proxy_http proxy_wstunnel headers
 +
 +</code>
 +
 +Konfiguration prüfen
 +
 +<code>
 +sudo apachectl configtest
 +
 +</code>
 +
 +bei erfolgreichem Test
 +
 +<code>
 +sudo systemctl reload apache2
 +
 +</code>
 +
 +aktiven virtual-host prüfen
 +
 +<code>
 +sudo systemctl reload apache2
 +
 +</code>
 +
 +Push Regeln suchen
 +
 +<code>
 +sudo grep -RniE \
 +  'ServerName|ProxyPass.*push|ProxyPass[[:space:|]]+/' \
 +  /etc/apache2/sites-enabled /etc/apache2/conf-enabled
 +
 +</code>
 +===== 6. Docker-Netz als vertrauenswürdigen Proxy eintragen =====
 +
 +Der Push-Container ruft Nextcloud intern über den Service-Namen auf:
 +
 +<code>
 +NEXTCLOUD_URL: "http://<APP_SERVICE>"
 +
 +</code>
 +
 +Nextcloud muss daher:
 +
 +  - das interne Docker-Netz als Proxy vertrauen und
 +  - den internen Service-Namen als Domain akzeptieren.
 +
 +==== 6.1 Docker-Netzwerk und Subnetz ermitteln ====
 +
 +<code>
 +NETWORK=$(docker inspect <APP_CONTAINER> \
 +  --format '{{range $name, $conf := .NetworkSettings.Networks}}{{$name}}{{end}}')
 +
 +SUBNET=$(docker network inspect "$NETWORK" \
 +  --format '{{range .IPAM.Config}}{{.Subnet}}{{end}}')
 +
 +echo "Netzwerk: $NETWORK"
 +echo "Subnetz:  $SUBNET"
 +
 +</code>
 +
 +Beispiel:
 +
 +Netzwerk: privat_privat-network \\ Subnetz:  172.29.0.0/16
 +
 +==== 6.2 Bestehende Proxy-Einträge prüfen ====
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ \
 +  config:system:get trusted_proxies
 +
 +</code>
 +
 +Beispiel:
 +
 +127.0.0.1
 +
 +==== 6.3 Docker-Subnetz ergänzen ====
 +
 +Den nächsten freien Index verwenden:
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ \
 +  config:system:set trusted_proxies 1 --value="$SUBNET"
 +
 +</code>
 +
 +Kontrolle
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ \
 +  config:system:get trusted_proxies
 +
 +</code>
 +
 +erwartet wird beispielsweise
 +
 +127.0.0.1 \\ 172.29.0.0/16
 +
 +**Nur kontrollierte Proxy-Adressen oder interne Docker-Netze eintragen. Vertrauenswürdige Proxys dürfen die von Nextcloud erkannte Client-IP beeinflussen.**
 +
 +===== 7. Internen Service-Namen als Trusted Domain eintragen =====
 +
 +Vorhandene Einträge prüfen
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ \
 +  config:system:get trusted_domains
 +
 +</code>
 +
 +Den Service-Namen mit dem nächsten freien Index ergänzen:
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ \
 +  config:system:set trusted_domains 1 --value="<APP_SERVICE>"
 +
 +</code>
 +
 +Kontrolle
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ \
 +  config:system:get trusted_domains
 +
 +</code>
 +===== 8. Verbindung testen =====
 +
 +==== 8.1 Containerstatus ====
 +
 +<code>
 +docker compose ps notify_push
 +docker compose logs --tail=100 notify_push
 +
 +</code>
 +==== 8.2 Lokaler Port ====
 +
 +<code>
 +curl -i http://127.0.0.1:7867/test/cookie
 +
 +</code>
 +
 +eine Antwort wie
 +
 +HTTP/1.1 400 Bad Request
 +
 +ist bei einem direkten Aufruf über ''127.0.0.1'' möglich und zeigt bereits, dass der Push-Daemon antwortet.
 +
 +''Connection refused'' bedeutet dagegen:
 +
 +   * Container läuft nicht,
 +  * Container startet ständig neu,
 +  * Port ist nicht veröffentlicht oder
 +  * kein Prozess lauscht im Container auf Port ''7867''.
 +
 +==== 8.3 Öffentlicher Pfad ====
 +
 +<code>
 +curl -i https://<DOMAIN>/push/test/cookie
 +
 +</code>
 +===== 9.   notify_push  konfigurieren =====
 +
 +Setup über den öffentlichen Push-Endpunkt ausführen:
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ \
 +  notify_push:setup https://<DOMAIN>/push
 +
 +</code>
 +
 +erwartetes Ergebnis
 +
 +✓ redis is configured \\ ✓ push server is receiving redis messages \\ ✓ push server can load mount info from database \\ ✓ push server can connect to the Nextcloud server \\ ✓ push server is a trusted proxy \\ ✓ push server is running the same version as the app \\ configuration saved
 +
 +Gespeicherten Endpunkt prüfen:
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ \
 +  config:app:get notify_push base_endpoint
 +
 +</code>
 +
 +erwartet wird
 +
 +https://<DOMAIN>/push
 +
 +===== 10. Firewall =====
 +
 +Port ''7867''  wird nur an Loopback gebunden:
 +
 +<code>
 +ports:
 +  - "127.0.0.1:7867:7867"
 +
 +</code>
 +
 +Daher ist keine öffentliche UFW-Freigabe nötig.
 +
 +===== 11. Client prüfen =====
 +
 +Nach erfolgreichem Setup:
 +
 +  - Nextcloud Desktop oder Nextcloud Talk Desktop vollständig abmelden.
 +  - Client auch im Infobereich beziehungsweise Tray beenden.
 +  - Client neu starten.
 +  - Konto erneut anmelden.
 +  - Diagnose prüfen.
 +
 +Die Diagnose sollte nicht mehr melden:
 +
 +<code>
 +notify_push app enabled = no
 +
 +</code>
 +
 +Metriken des Push-Dienstes prüfen:
 +
 +<code>
 +docker compose exec -u www-data <APP_SERVICE> php occ \
 +  notify_push:metrics
 +
 +</code>
  
  
nextcloud/notify_push.1785136427.txt.gz · Zuletzt geändert: von franz

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki