Synapse/Matrix-Server-Container-Konfigurationsberechtigung/Datei verweigert

Synapse/Matrix-Server-Container-Konfigurationsberechtigung/Datei verweigert

Von mir unten gepostete Antwort, kann meine eigene Antwort noch nicht akzeptieren

Ich arbeite an einem Chat-Client. Für die Entwicklung verwende ich ein Docker-Setup, das mit einem „Generate“-Befehl eine Konfigurationsdatei erstellt, die Sie anpassen und zum Starten des eigentlichen Dienstes verwenden können. Auf meinem Desktop funktioniert es einwandfrei, aber wenn ich versuche, es auf einem Raspberry oder einer separaten Festplatte auf meinem Laptop auszuführen, wird im Build-Prozess ein Dateihandlerfehler ausgegeben, der besagt, dass die Berechtigung verweigert wurde.

Ich bin hier vielleicht ein absoluter Neuling, aber ich habe die Berechtigung für den Einhängepunkt des Ordners auf meinem Laptop geändert und auf dem Raspberry sind die Berechtigungen für den Ordner festgelegt.

Docker ist außerdem so eingerichtet, dass es ausgeführt wird, ohne dass bei jedem Befehl „sudo“ eingegeben werden muss.

Hier sind die Berechtigungscodes für funktionierende und nicht funktionierende Konfigurationsdateien

# Auto generated, working local
-rwxrwxrwx 1 root root 103443 <date> <filename>
# Auto generated not working pi and laptop
-rw-r--r-- 1 991 991 106030 <date> <filename>

Richte ich meine Festplatten einfach nicht richtig ein? Ich erhalte diesen Fehler auf meinem Pi, unabhängig davon, ob er sich auf der Standardpartition des Betriebssystems befindet oder nicht. Ich kann Django problemlos mit Reverse-Proxy starten und ausführen.

Der Chat-Dienst, auf dem ich aufbaue, ist Matrix/Synapse. Hier ist der Docker-Ordner im Synapse-Server-Repo mit dem Basis-Setup. Die Datei, die Probleme verursacht, ist homeserver.yml, die generiert wird aus:

docker-compose run --rm synapse generate

Antwort1

Eigentlich kein Linux-Berechtigungs-Spielerei an der Wurzel

Dies könnte ein Nebeneffekt des letzten Synapse Docker Repo Push gewesen sein, da dies bei mir auf mehreren Geräten passierte. Ich habe es gelöst, indem ich einen Teil des manuellen Setups für Docker selbst angegeben habe. Die Lösung könnte sich für andere Konfigurationsprobleme als nützlich erweisen.

Gelöst, genaue Lösung könnte in einer besseren Weise wahrscheinlich angewendet werden

Szenario:

Generieren Sie eine Konfiguration fürSynapseServer, der zum Erstellen eines Docker-Containers für Synapse verwendet wird. Ziel ist die Verwendung für die Entwicklung eines MatrixKlient.

Ausgabe:

Nach der erfolgreichen Erstellung der Konfiguration ('homeserver.yaml') würde der Build von Synapse unter Verwendung dieser Konfiguration einen Berechtigungsfehler mit einem Python-Stacktrace auslösen, der angibt, dass die Datei (im Container) nicht gelesen werden kann, service exit 1und kein Ergebnis docker logs service.

Lösung:

Einige dieser Einstellungen können mithilfe von Umgebungsvariablen festgelegt werden. Siehe Synapse-Readme. Nach der ÜberprüfungMatrix/SynapseDocker-Repository: Mir ist ein aktueller und häufiger Updateverlauf aufgefallen. Entweder hat mein System es vermasselt oder es gibt ein Problem mit der aktuellen Konfiguration des Containers. Also habe ich einige der normalerweise automatisierten Dinge selbst erledigt.

  • hat die Ordner erstellt, die Synapse mit der Conf verwendet („homeserver.yml“). Bei Verwendung von Bind Mount (wie auf der Repo-Seite) befindet sich das Docker-Volume /var/lib/docker/volumes/<name of bind mount>/_data hier: Hier möchten Sie Media_Store, Uploads und Protokolle erstellen.

  • Suchen Sie in „homeserver.yml“ nach den erstellten Ordnernamen und stellen Sie sicher, dass die Pfade darauf verweisen.

  • Der Standardgruppe zugewiesen und die Synapse-Repo-Richtlinien direkt befolgt.

    # UID & GID default to 991
    chown 991:991 media_store/ uploads/ logs/
    
    
  • Richten Sie Ihren Protokolleinstellungshandler auf den Protokollordner. Die Protokolldatei existiert zum Zeitpunkt der Festlegung dieser Konfiguration nicht. Die Protokollhandlerdatei finden Sie in .log.config.

    handlers:
     file:
         filename: /data/logs/homeserver.log
    

verwandte Informationen