NEWS
Schreibrechte auf grafana.ini in Docker
-
Und weiter geht's mit den Fehlern ..
Vorsichtig, wie ich bin, habe ich zunächst einmal nur das Verzeichnis /var/lib/grafana auf ein Verzeichnis der Synology gemappt. Das hat tadellos funktioniert; ich fand dort die erwartete Daten.
Beim zweiten Versuch (zuvor alles natürlich gelöscht) habe ich nun auch /etc/grafana versucht zu mappen. Und schon gehen die Probleme los. Hier das (Fehler)Protokoll ..
Wenn ich das richtig sehe, beschwert sich das System, dass grafana.ini nicht vorhanden ist.
-
-
Logausgaben bitte hier in Code-Tags </> packen und nicht als Datei. So groß ist die ja nicht.
-
Funktioniert bei mir einwandfrei, wenn ich jeweils ein leeres Verzeichnis mappe.
Was genau willst Du an dergrafana.ini
manuell ändern?
-
-
zu 1.
grafana2 date,stream,content 2025/08/25 12:04:37,stdout,logger=settings t=2025-08-25T10:04:37.744409512Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:04:37,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:04:37,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable. 2025/08/25 12:03:45,stdout,logger=settings t=2025-08-25T10:03:45.362410741Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:03:44,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:03:44,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable. 2025/08/25 12:03:18,stdout,logger=settings t=2025-08-25T10:03:18.736400594Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:03:18,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:03:18,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable. 2025/08/25 12:03:04,stdout,logger=settings t=2025-08-25T10:03:04.907764743Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:03:04,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:03:04,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable. 2025/08/25 12:02:57,stdout,logger=settings t=2025-08-25T10:02:57.473460634Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:02:56,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:02:56,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable. 2025/08/25 12:02:53,stdout,logger=settings t=2025-08-25T10:02:53.249727035Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:02:52,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:02:52,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable. 2025/08/25 12:02:50,stdout,logger=settings t=2025-08-25T10:02:50.729829727Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:02:50,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:02:50,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable. 2025/08/25 12:02:48,stdout,logger=settings t=2025-08-25T10:02:48.882208885Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:02:48,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:02:48,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable. 2025/08/25 12:02:47,stdout,logger=settings t=2025-08-25T10:02:47.327149288Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:02:46,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:02:46,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable. 2025/08/25 12:02:46,stdout,logger=settings t=2025-08-25T10:02:46.091829866Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:02:45,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:02:45,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable. 2025/08/25 12:02:44,stdout,logger=settings t=2025-08-25T10:02:44.735759481Z level=error msg="failed to parse \"/etc/grafana/grafana.ini\": open /etc/grafana/grafana.ini: no such file or directory" 2025/08/25 12:02:43,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2025/08/25 12:02:43,stdout,GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable.
zu 2.
Ich möchte die Eintragen vornehmen, die nötig sind, Panels und Dashboards in der VIS von ioBroker anzeigen zu lassen. Zudem habe ich doch geschrieben, dass ich alles gelöscht habe - mehr noch - ich habe alle Verzeichnis neu angelegt.
-
Also zunächst mal ein paar Worte zu Docker:
So ein Container ist als "Wegwerfartikel" konzeptioniert. Den zieht man hoch, macht was damit und wirft den anschließend wieder weg.
Das ist dazu gedacht, "mal eben" eine Umgebung hochzuziehen und damit etwas anzustellen.Was man wiederverwenden möchte, wird über gemappte Verzeichnisse geregelt. Also indem man wie hier das Verzeichnis
/var/lib/grafana
extern mappt. Darin liegen dann z.B. die Plugins etc.Um die Einstellungen für "Panels in Vis" vorzunehmen, passt man üblicherweise die
grafana.ini
an ... das stimmt schon.
Aber nicht in Docker-Containern!
Hier werden die Einstellungen über Umgebungsvariablen vorgenommen, die man über das Compose alsenvironment
mitgibt.services: grafana: image: grafana/grafana container_name: grafana restart: unless-stopped ports: - '3000:3000' environment: - GF_SECURITY_COOKIE_SAMESITE=disabled - GF_SECURITY_ALLOW_EMBEDDING=true volumes: - /volume1/docker/grafana:/var/lib/grafana
Damit kann man das Zeug immer wieder starten, verwerfen und komplett neu bauen, ohne dass man nach dem Start noch an Dateien im Container rumfummeln muss.
-
@oliverio sagte in Schreibrechte auf grafana.ini in Docker:
cp -r /etc/grafana/* /etc/grafana1/
Das habe ich erfolgreich hinbekommen. Jetzt finde ich auf der Synology in dem Verzeichnis die gewünschten Konfigurationsdaten.
die docker-compose datei geändert und neu gestartet.
Hier weiß ich nicht so recht, was ich dazu alles tun muss. Kannst du mir dies bitte Schritt für Schritt beschreiben?
-
Eigentlich hab ich dir das doch Schritt für Schritt oben beschrieben. Wenn die Dateien von grafana nach geafana1 kopiert worden sind liegen sie in deinem externen Ordner den du dann als normalen grafana einbindest, hier von oben kopiert:
—-
im anschluss änderst du im docker-compose das
/etc/grafana1
nach
/etc/grafanaund startest den container neu
dann müsste er normal starten.
dann kannst du die datei grafana.ini die sich in deinem lokalen verzeichnis auf der synology befindet bearbeiten.—-
Bitte genau auf die Formulierungen
IM Container
und
Lokaler Ordner/Verzeichnis
achten -
@codierknecht sagte in Schreibrechte auf grafana.ini in Docker:
Also zunächst mal ein paar Worte zu Docker:
Das ist mir bereits soweit alles klar.
Um die Einstellungen für "Panels in Vis" vorzunehmen, passt man üblicherweise die
grafana.ini
an ... das stimmt schon.
Aber nicht in Docker-Containern!
Hier werden die Einstellungen über Umgebungsvariablen vorgenommen, die man über das Compose alsenvironment
mitgibt.services: grafana: image: grafana/grafana container_name: grafana restart: unless-stopped ports: - '3000:3000' environment: - GF_SECURITY_COOKIE_SAMESITE=disabled - GF_SECURITY_ALLOW_EMBEDDING=true volumes: - /volume1/docker/grafana:/var/lib/grafana
Damit kann man das Zeug immer wieder starten, verwerfen und komplett neu bauen, ohne dass man nach dem Start noch an Dateien im Container rumfummeln muss.
In der Tat, das ist sehr praktisch und ich bin froh, dass ich das mit dem compose verstanden habe.
Nun zu den Einstellungen, die ich in der grafana.ini immer durchführe ..
[auth.anonymous] enabled = true org_name = org_galegro org_role = Viewer [security] allow_embedding = true
Wie sieht die compose.yaml für diesen Fall aus?
-
Lies dir das nochmal (sorgfältig) durch (inklusive link) und stelle dann die Frage nochmal
@oliverio sagte in Schreibrechte auf grafana.ini in Docker:
Ja leider ist an dem Punkt die Dokumentation nicht so gut.
Auch wissen wir nicht was er genau da ändern will.
Wenn man auf folgender Seite die Beschreibung zur grafana.ini liest, sollte man tatsächlich jede Einstellung auch nur über Environment variablen verändern können.
Das wäre dann noch einfacher wie die grafana.ini nach außen zu legen.
Am Anfang der Seite sind ein paar wenige Beispiele von denen sich das Schema ableiten lässt- alles Großbuchstaben
- beginnt immer mit GF
- an 2. Position dann der sektionsname aus der ini
- dann der eigentliche konfigurationsname
- Trennung immer mit underscore _
https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/#configure-with-environment-variables
Hier habe ich mal ein Beispiel einer docker-compose/stacks wo man sieht wie das aussehen kann.
Spätestens hier würde ich den Container nicht mehr über einen Shell Befehl konfigurieren und starten, sondern nur noch über docker compose, sonst wird das unübersichtlich
-
Embedding in Vis aus einem Grafana-Container:
services: grafana: image: grafana/grafana-oss container_name: grafana restart: unless-stopped ports: - '3000:3000' environment: - GF_SECURITY_COOKIE_SAMESITE=disabled - GF_SECURITY_ALLOW_EMBEDDING=true - GF_AUTH_ANONYMOUS_ENABLED=true - GF_AUTH_ANONYMOUS_ORG_NAME=Main Org. - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer volumes: - /volume1/docker/grafana/data:/var/lib/grafana
-
Tut mir leid, aber vermutlich habe ich das noch immer nicht so richtig verstanden.
Ich habe /etc/grafana1 zu /etc/grafana in compose.yaml geändert. Anschließend habe ich einen Neustart des Containers ausgelöst.
Schaue ichanschließend in die Eigenschaften des Containers ..
.. so ist das Mapping unverändert zu /etc/grafana1.
-
@legro sagte in Schreibrechte auf grafana.ini in Docker:
Ich habe /etc/grafana1 zu /etc/grafana in compose.yaml geändert. Anschließend habe ich einen Neustart des Containers ausgelöst.
Warum per externer Datei? Nimm doch den eingebauten Editor.
Das Projekt muss danach neu erstellt werden.
-
@codierknecht sagte in Schreibrechte auf grafana.ini in Docker:
Warum per externer Datei? Nimm doch den eingebauten Editor.
Das Projekt muss danach neu erstellt werden.
Wir müssen aufpassen, den Überblick nicht zu verlieren. Dein Vorschlag, alles über Umgebungsvariablen zu regeln, ist eine Lösung; der Vorschlag von @OliverIO beruht m.E. auf dem Versuch, /etc/grafana auf mein externes Verzeichnis ../grafana2/data zu mappen.
Wenn wir all das umgesetzt bekämen, hätten wir am Ende gar gleich zwei Lösungen für mein Problem.
-
@legro
Na das mit den umgebungsvariablen hatte codierknecht und ich ziemlich am Anfang schon vorgeschlagen. Darauf bist du aber nicht eingegangen, weil ich davon ausgegangen bin das es dir nicht gefallen hat, bin ich dann den anderen Weg mit dir gegangen.Ich gehe davon aus, das man den Text immer vollständig liest und bei Dingen die man da nicht versteht nachfragt.
-
@oliverio sagte in Schreibrechte auf grafana.ini in Docker:
.., weil ich davon ausgegangen bin das es dir nicht gefallen hat, bin ich dann den anderen Weg mit dir gegangen.
Ich wusste zu dem Zeitpunkt noch nichts damit anzufangen.
Ich gehe davon aus, das man den Text immer vollständig liest und bei Dingen die man da nicht versteht nachfragt.
Dann hoffe ich mal, dass du auch meine letzte Antwort gelesen hast.
Warum sollte ich die Datei compose.yaml ändern? Nach der von dir vorgeschlagenen Änderung und dem Neustart des Containers ist noch immer /etc/grafana1 gemappt.
Muss/soll ich den Container löschen und neu erstellen?
-
@legro sagte in Schreibrechte auf grafana.ini in Docker:
Muss/soll ich den Container löschen und neu erstellen?
Nimm dieses Docker-Compose:
services: grafana: image: grafana/grafana-oss container_name: grafana restart: unless-stopped ports: - '3000:3000' environment: - GF_SECURITY_COOKIE_SAMESITE=disabled - GF_SECURITY_ALLOW_EMBEDDING=true - GF_AUTH_ANONYMOUS_ENABLED=true - GF_AUTH_ANONYMOUS_ORG_NAME=Main Org. - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer volumes: - /volume1/docker/grafana/data:/var/lib/grafana
pack das in den Editor in der GUI, passe den Pfad an und beim Speichern wählst Du die Option "neu erstellen".
Man muss da gar nicht an Dateien rumeditieren. Geht alles über das UI.
-
@codierknecht sagte in Schreibrechte auf grafana.ini in Docker:
Nimm dieses Docker-Compose: ..
Nachdem ich nun um die Verwendung von Umgebungsvariablen weiß, will ich das Ganze auch verstehen. Was ich glaube verstanden zu haben ..
- Alle Variablen beginnen mit dem Präfix GF_.
- Danach folgt der Bereich oder Abschnitt aus der grafana.ini-Konfigurationsdatei, der verändert werden soll, in Großbuchstaben (z.B. SECURITY, SERVER, AUTH).
- Anschließend folgt der Name der Option aus der grafana.ini (ebenfalls in Großbuchstaben!) angefügt mit Unterstrichen.
- Alle Elemente werden stets mit Unterstrichen von einander getrennt notiert.
Beispiel: Somit sollte das Admin-Passwort in der Sektion [security] der grafana.ini heißen: GF_SECURITY_ADMIN_PASSWORD=<mein Passwort>
Ist das so richtig?
-
@legro sagte in Schreibrechte auf grafana.ini in Docker:
Ist das so richtig?
So verstehe ich das auch. Die Doku ist da ein bisschen unübersichtlich.
Gib mir ein paar Minuten ... ich probiere das aus.
Edit
Sieht so aus, als würde das funktionieren -
Nun möchte ich auch deinen Lösungsvorschlag verstehen. Könntest du mich bitte dabei unterstützen?
Wenn ich das Ganze richtig verstanden habe ..
- Es ist (warum auch immer) nicht möglich das Docker interne Verzeichnis /etc/grafana auf ein externes Verzeichnis auf der Synology (../grafana2/config) zu mappen.
- Daher wird das in Docker nicht existierende interne Verzeichnis /etc/grafana1 auf das externe ../grafana2/config gemappt.
- Nun kann man im Terminal mittels ..
sudo docker exec -it grafana2 /bin/bash
cp -r /etc/grafana/* /etc/grafana1/ den Inhalt in das externe Verzeichnis ../grafana2/config kopieren.
Im der Terminal der Synology kann ich nun grafana.ini nach Belieben anpassen.
So weit, so gut. Und nun?
Ich sehe nun nur die Möglichkeit erneut im Terminal intern den Inhalt des externen Verzeichnisses nun umgekehrt nach /etc/granfana zu kopieren, wobei es in meinem Fall ausreicht, grafana.ini zu überschreiben/kopieren.
Ich sehe keine Möglichkeit durch Änderungen von compose.yml das externe Verzeichnis auf das interne /etc/grafana zu mappen.
Was habe ich ggf. noch immer nicht verstanden?.
-
- in /etc/grafana liegen für grafana wichtige dateien ohne die das system nicht startet
- wenn du nun ein leeres verzeichnis auf deinem LOKALEN dateisystem mappst, dann ist das verzeichnis IM container ebenfalls leer, ergo system startet nicht
- der zwischenschritt mit /etc/grafana1 legt das zunächst leere verzeichnis unter diesem namen IN DEN container, du kopierst die dateien, änderst das mapping wieder auf /etc/grafana, so sind nun alle notwendigen dateien für grafana unter /etc/grafana verfügbar + sie liegen auch in deinem LOKALEN verzeichnis in dem du die bearbeiten kannst.
ein docker image besteht aus verschiedenen schichten/layers, die sich der reihe nach ergänzen aber auch überlagern können, so das am ende für das betriebssystem aber nur eine einzige sicht darauf besteht.
ich habe mal einen blogartikel gefunden, der das etwas visuell darstellt
https://iammathew.com/blog/understanding-docker-images/filesystemdas verzeichnis /etc/grafana mit seinen dateien ist nachdem du dein lokales verzeichnis da drauf gemountet hast immer noch da, da es aber von dem mount zu deinem lokalen leeren verzeichnis überlagert wird, halt für das betriebssystem leer und ohne die dateien mag grafana halt nicht starten.
um notwendige dateien vollautomatisch auch in einem leeren gemounteten Verzeichnis nach aussen bereitzustellen, müsste der imageersteller etwas machen (bei container start prüfen ob alle notwendigen dateien da sind und die fehlenden kopieren) das machen aber viele nicht.
wie schon gesagt, die grafana leute haben eher den environment weg eingeschlagen.
-
Vielen Dank für deine Rückmeldung.
Mittlerweile konnte ich anhand einiger Quellen ebenfalls eine Antwort finden - durch die hier geführte Diskussion wusste ich schließlich, nach was ich suchen muss. Demnach darf das externe Verzeichnis, das auf das interne /etc/grafana gemappt werden soll, nicht leer sein, sondern muss bereits die korrekte Struktur beinhalten.
Damit wird die oben ausgegebene Fehlermeldung (grafana.ini nicht gefunden) verständlich.
Dein Vorschlag ist also goldrichtig. Indem man /etc/grafana auf das externe Verzeichnis kopiert, kann bei einer Neuinstallation das externe Verzeichnis auf das interne /etc/grafana gemappt werden.