Use file secret for Grafana InfluxDB token

Use file secret for Grafana InfluxDB token
This commit is contained in:
2026-04-30 11:27:06 +02:00
parent 209aceca0d
commit c736aadf1e
6 changed files with 18 additions and 6 deletions
+1 -1
View File
@@ -74,7 +74,7 @@ Dieses Dokument ist nur noch ein historischer Verlauf. Der aktuelle operative Ab
- `ops/grafana-influxdb` als neuer Monitoring-Stack vorbereitet, aber noch nicht deployed.
- Grafana wird hinter Traefik + Authelia unter `grafana.kaleschke.info` geplant.
- InfluxDB 3 Core bleibt intern im Compose-Netz und wird ueber eine provisionierte Grafana-Datenquelle angebunden.
- Secrets fuer Grafana-Admin-Passwort, InfluxDB-Admin-Token und Grafana-Datasource-Token sind dokumentiert, aber muessen vor dem ersten Deploy auf dem Host bzw. in Komodo angelegt werden.
- Secrets fuer Grafana-Admin-Passwort, InfluxDB-Admin-Token und Grafana-Datasource-Token sind als Host-Dateien unter `/mnt/user/appdata/secrets/` dokumentiert und muessen vor dem ersten Deploy angelegt werden.
---
+1 -1
View File
@@ -65,7 +65,7 @@ Sie ist die fachliche Ergaenzung zu `docs/DISASTER_RECOVERY.md`.
| Scrutiny | Teilweise rebuildbar | `/mnt/user/appdata/scrutiny` falls gewuenscht | InfluxDB bewusst nicht Teil des Critical-Scope | keine | Traefik, Authelia | UI startet, Laufwerke sichtbar |
| Speedtest Tracker | Share | `/mnt/user/appdata/speedtest-tracker/config` | SQLite im App-Pfad | `APP_KEY`, `ADMIN_PASSWORD` | Traefik, Authelia | UI startet |
| BentoPDF | Rebuildbar | keine kritische Persistenz; alte Stirling-PDF-Daten unter `/mnt/user/appdata/stirling-pdf` bis zur Abnahme behalten | keine | keine separaten Secret-Dateien dokumentiert | Traefik, Authelia | UI startet, PDF-Tools verfuegbar, Office-Konvertierung ueber HTTPS funktioniert |
| Grafana | Share | `/mnt/user/appdata/grafana` | SQLite im App-Pfad | `grafana_admin_password.txt`, `GRAFANA_INFLUXDB_TOKEN` | Traefik, Authelia, InfluxDB 3 Core | UI startet, InfluxDB-Datenquelle testet erfolgreich |
| Grafana | Share | `/mnt/user/appdata/grafana` | SQLite im App-Pfad | `grafana_admin_password.txt`, `grafana_influxdb_token.txt` | Traefik, Authelia, InfluxDB 3 Core | UI startet, InfluxDB-Datenquelle testet erfolgreich |
| InfluxDB 3 Core | Share | `/mnt/user/appdata/influxdb3/data`, `/mnt/user/appdata/influxdb3/plugins` | dateibasierter Object Store | `influxdb3_admin_token.json` | internes `grafana_influx_internal` Netz | `homelab`-Datenbank vorhanden, Grafana kann SQL-Abfrage ausfuehren |
| ddns-updater | Rebuildbar | geringe Persistenzrelevanz | keine | Provider-Zugang ueber Stack ENV | Internetzugang | Update-Job laeuft |
+1 -1
View File
@@ -91,7 +91,7 @@ Nach einem Deploy:
1. `ops/grafana-influxdb` in Komodo stoppen oder den letzten Git-Stand ohne diesen Stack deployen
2. Persistenz unter `/mnt/user/appdata/grafana` und `/mnt/user/appdata/influxdb3` unangetastet lassen
3. Secrets unter `/mnt/user/appdata/secrets/grafana_admin_password.txt` und `/mnt/user/appdata/secrets/influxdb3_admin_token.json` nur nach bewusstem Entscheid entfernen
3. Secrets unter `/mnt/user/appdata/secrets/grafana_admin_password.txt`, `/mnt/user/appdata/secrets/grafana_influxdb_token.txt` und `/mnt/user/appdata/secrets/influxdb3_admin_token.json` nur nach bewusstem Entscheid entfernen
4. Grafana-Domain und InfluxDB-Zugriff testen, bis klar ist, dass keine produktiven Dashboards oder Writer mehr davon abhaengen
---
+2 -1
View File
@@ -45,7 +45,7 @@ Dieses Dokument listet sensible Daten, deren Ablageorte und die vorgesehene Einb
| Hermes Agent | SSH-Runner Private Key | `/mnt/user/appdata/secrets/hermes_runner_id_ed25519` -> `/root/.ssh/id_ed25519` | neu |
| Grafana | Admin Password | `/mnt/user/appdata/secrets/grafana_admin_password.txt` -> `GF_SECURITY_ADMIN_PASSWORD__FILE` | vorbereitet |
| InfluxDB 3 Core | Admin Token JSON | `/mnt/user/appdata/secrets/influxdb3_admin_token.json` -> Docker Secret `/run/secrets/influxdb3_admin_token` | vorbereitet |
| Grafana -> InfluxDB | Datasource Token | Stack ENV `${GRAFANA_INFLUXDB_TOKEN}` | vorbereitet |
| Grafana -> InfluxDB | Datasource Token | `/mnt/user/appdata/secrets/grafana_influxdb_token.txt` -> Docker Secret `/run/secrets/grafana_influxdb_token` | vorbereitet |
---
@@ -75,6 +75,7 @@ Dieses Dokument listet sensible Daten, deren Ablageorte und die vorgesehene Einb
|-- postgres_password.txt
|-- redis_password.txt
|-- grafana_admin_password.txt
|-- grafana_influxdb_token.txt
|-- influxdb3_admin_token.json
`-- vaultwarden_admin_token.txt
```
+6 -1
View File
@@ -9,6 +9,7 @@ Vorbereiteter Monitoring-Stack. Noch nicht deployen, bis die Secrets und der ers
- Grafana wird ueber Traefik + `authelia@file,secure-headers@file` unter `grafana.kaleschke.info` veroeffentlicht.
- InfluxDB bleibt ohne direkten Host-Port und ohne Traefik-Route im internen Compose-Netz `grafana_influx_internal`.
- Grafana provisioning legt eine SQL-Datenquelle fuer InfluxDB 3 Core mit der Datenbank `homelab` an.
- Der Grafana-Datasource-Token liegt als Secret-Datei auf dem Host und wird beim Containerstart nur containerintern in die fuer Grafana-Provisioning noetige Environment-Variable geladen.
## Vor dem ersten Deploy
@@ -30,7 +31,11 @@ Vorbereiteter Monitoring-Stack. Noch nicht deployen, bis die Secrets und der ers
Pfad: `/mnt/user/appdata/secrets/influxdb3_admin_token.json`, Rechte `600`.
3. In Komodo fuer den Stack `GRAFANA_INFLUXDB_TOKEN` setzen. Fuer den Start kann das derselbe Token aus `influxdb3_admin_token.json` sein; sauberer ist spaeter ein eigener Read-Token fuer Grafana.
3. Grafana-Datasource-Token anlegen. Fuer den ersten Start kann der Token aus `influxdb3_admin_token.json` verwendet werden; sobald ein eingeschraenkter Read-Token existiert, diesen hier eintragen:
```bash
install -m 600 /dev/null /mnt/user/appdata/secrets/grafana_influxdb_token.txt
```
4. Nach dem ersten Start die Datenbank anlegen:
+7 -1
View File
@@ -9,12 +9,16 @@ services:
GF_SECURITY_ADMIN_PASSWORD__FILE: /run/secrets/grafana_admin_password
GF_USERS_ALLOW_SIGN_UP: "false"
GF_AUTH_ANONYMOUS_ENABLED: "false"
GRAFANA_INFLUXDB_TOKEN: ${GRAFANA_INFLUXDB_TOKEN}
entrypoint: ["/bin/sh", "-ec"]
command: >
export GRAFANA_INFLUXDB_TOKEN="$$(cat /run/secrets/grafana_influxdb_token)"
&& exec /run.sh
volumes:
- /mnt/user/appdata/grafana:/var/lib/grafana
- ./provisioning:/etc/grafana/provisioning:ro
secrets:
- grafana_admin_password
- grafana_influxdb_token
networks:
- frontend_net
- grafana_influx_internal
@@ -63,6 +67,8 @@ secrets:
file: /mnt/user/appdata/secrets/grafana_admin_password.txt
influxdb3_admin_token:
file: /mnt/user/appdata/secrets/influxdb3_admin_token.json
grafana_influxdb_token:
file: /mnt/user/appdata/secrets/grafana_influxdb_token.txt
networks:
frontend_net: