Commit Graph
86 Commits
Author SHA1 Message Date
Kalina a40836a592 fix(rawlogs): auf /data/tmp ausweichen, /tmp ist tmpfs (15 GB RAM)
Am Ziel gemessen: /tmp ist ein tmpfs mit 15 GB. Eine 10-GB-Rohdatei plus
Sortier-Temp liegt damit im Arbeitsspeicher und bringt Loki/den Rechner
in Bedraengnis. Der Importer prueft jetzt vorher den freien Platz und
bricht frueh ab; die Uebergabe geht nach /data/tmp (863 GB frei).
2026-09-14 17:49:05 +02:00
Kalina b8246472f5 fix(rawlogs): Uebergabedateien lesbar in /tmp/rawlog-upload legen
Der Collector laeuft als root (Logs unter /home/users mit 0700), seine
Ausgabe ist damit 0600 fuer root. scp als normaler Nutzer kam nicht an
die Datei: 'stat ... Keine Berechtigung'. Jetzt werden Kopien mit 644
in /tmp/rawlog-upload/ abgelegt — von beiden Seiten erreichbar.
2026-09-14 17:32:08 +02:00
Kalina f8c5f2eb3c feat(rawlogs): Rohlogs fuer den Loki-Import sammeln
Der Prometheus-Archiv-Import verdichtet auf Stunde/Domain/Status und
verwirft Referrer, User-Agent und Client-IP. Fragen nach der Herkunft
liessen sich damit nicht rueckwirkend beantworten.

- raw-log-collect.py: liest access+error (inkl. .gz, rotierte Dateien),
  schreibt ts_ns/labels/rohzeile und meldet Zeilen ohne Zeitstempel
  statt sie still zu verwerfen. Error-Logs ohne Zeitzone (Apache-
  Standard) werden korrekt nach UTC verschoben.
- raw-log-backfill.sh: Wrapper mit Messmodus; sammelt auf dem Host,
  importiert selbst NICHTS.
2026-09-14 17:31:14 +02:00
mm 33534811cb fix(backfill): Abdeckung pruefen — "Zeitraum min..max" war irrefuehrend
Der x22-Backfill meldete "Zeitraum: 03.12.2024 .. 14.09.2026" und liest sich
damit wie zwei Jahre Historie. Tatsaechlich enthielt die Quelle EINEN einzelnen
Punkt vom 03.12.2024 (eine alte Logzeile) und sonst 30 Tage:

  belegte Stunden: 721 von 15.601 im Zeitraum  (4.6 % Abdeckung)
  groesste Luecke: 620 Tage  03.12.2024 21:00 -> 15.08.2026 22:00

min..max allein sagt nichts ueber die Substanz. Die Selbstpruefung nennt jetzt
zusaetzlich die Zahl der belegten Stunden gegen die Spanne, die prozentuale
Abdeckung und — bei unter 50 % — die drei groessten Luecken mit Datum, plus den
Hinweis auf fehlende/rotierte Logs als typische Ursache.

Verifiziert gegen drei Faelle: (A) 1 alter Punkt + 30 Tage -> 4.6 %, Luecke
benannt; (B) 15 Tage durchgehend -> 100 %, kein Alarm; (C) 29 Tage mit 20-h-
Luecke -> 97.3 %, kein Alarm (echte kleine Luecken sind normal).
2026-09-14 15:53:44 +02:00
mm 39e86adfba feat(backfill): Skript fuer alle KeyHelp-Hosts generalisiert
x22-log-backfill.sh heisst jetzt keyhelp-log-backfill.sh und leitet NODE aus
hostname -f ab, wenn es nicht gesetzt ist. Damit ist derselbe Ablauf fuer x14
nutzbar, ohne x22 im instance-Label zu tragen.

Der alte Name bleibt als Alias erhalten (laedt das generische Skript, NODE
vorbelegt auf x22) — bereits verteilte Aufrufe laufen weiter.

Verifiziert im Container mit x14-Nachbau: instance="x14.idx.wf-keyhelp",
Messmodus read-only, Selbstpruefung (Einheit/Zukunft/Domains) greift.
2026-09-14 15:29:11 +02:00
mm c18263e4ed fix(backfill): Survey-Aufruf ohne --node, Hinweis auf Zeilenpufferung
Der Survey kennt kein argparse — '--node' wurde still ignoriert (harmlos, aber
irrefuehrend). Argument entfernt und die Puffer-Falle im Aufruf dokumentiert.
2026-09-14 12:10:03 +02:00
mm df2ee94613 fix(survey): Fortschritt sichtbar — der leere bestand.txt war kein Fehler, sondern ein laufender Scan
BEFUND (x22, gemessen und reproduziert):
Der Aufruf war 'python3 apache-log-survey.py 2>&1 | tee bestand.txt'. Das Skript
gab ALLES erst nach der Scan-Schleife aus (alle print() standen dahinter), und
Python puffert stdout in eine PIPE blockweise (4-8 KB). Die Gesamtausgabe ist
aber nur ~1 KB -> sie landete erst beim Prozessende in der Datei.

Messung mit 2 Mio Zeilen (140 MB):
  mit tee:     nach 5 s = 0 Bytes, fertig nach 41 s -> dann 1028 Bytes
  ohne Pipe:   nach 1 s = 0 Bytes
  python3 -u:  nach 1 s = 0 Bytes
=> Die Datei war leer, weil der Scan LIEF. Auf einem KeyHelp-Host mit tausenden
   Logdateien dauert das Minuten und liest sich wie ein Haenger oder Absturz.

FIX (drei Massnahmen, damit das nie wieder passiert):
1. sys.stdout.reconfigure(line_buffering=True) — jede Zeile geht sofort raus,
   auch durch eine Pipe.
2. Startbanner VOR dem Scan: Anzahl und Gesamtgroesse der Dateien.
3. Fortschrittszeile pro Datei (Nummer/Gesamtzahl, Zeilen, Groesse, Pfad) plus
   eine Zeile fuer nicht lesbare Dateien.

Verifiziert mit 1,4 Mio Zeilen durch eine Pipe: nach 2 s steht das Banner, drei
Fortschrittszeilen erscheinen waehrend des Scans. Gegenprobe mit dem alten Code:
nach 3 s 16 Bytes, alles erst am Ende.
2026-09-14 12:08:48 +02:00
mm 194fa98f97 fix(archive): Error-Logs ohne Zeitzone wurden STILL verworfen + Backfill-Skript
BEFUND (echter Datenverlust, gemessen gegen KeyHelp-Formate):
KeyHelp/Debian schreiben error.log im Access-Format, aber OHNE Zeitzone:
    [01/Sep/2026:10:00:05] [core:error] [pid 9] AH00124: ...
TS_FORMATS kannte nur "%d/%b/%Y:%H:%M:%S %z" (MIT Zone). parse_ts() gab None,
hour wurde "unknown", und der Schreiber ueberspringt unknown-Zeilen:
apache_archive_errors_total fehlte KOMPLETT — kein Fehler, kein Log, Panel leer.
Genau die stille Fehlerklasse, die nicht passieren darf.

FIX:
- Format "%d/%b/%Y:%H:%M:%S" (ohne Zone) ergaenzt.
- Unparsbare Zeitstempel werden GEZAEHLT und laut gemeldet (Domain + Beispiel +
  Hinweis auf TS_FORMATS) statt still zu verschwinden.
- Neu: scripts/x22-log-backfill.sh — messen (read-only) und parsen in einem
  Aufruf, mit Selbstpruefung (Einheiten, Zukunft, Domain-Anzahl) VOR der
  Uebergabe und dem sicheren Import-Befehl am Ende.

Verifiziert im Container gegen echte KeyHelp-Formate inkl. rotierter .1 und
.gz-Datei: Messmodus aendert nichts (MD5-Vergleich), Backfill erzeugt alle
fuenf Metriken inkl. errors_total{level=error} und {level=warn}.
2026-09-14 11:49:05 +02:00
mm 7d3ce17c53 fix(archive): Anleitung zeigt auf das Archiv, nie auf die Produktions-TSDB; x22-Wrapper mit --file 2026-09-14 11:43:19 +02:00
mm 72752e523e chore(installer): Update-Only meldet gesetzte ACLs ehrlich + VERSION 1.9.1 2026-09-14 11:29:19 +02:00
mm e2c75a88df fix(acl): _touched initialisieren — unter set -u brach die Rechtevergabe kommentarlos ab 2026-09-14 11:22:06 +02:00
mm 6f82bad6f9 fix(acl): Glob-Wurzeln brauchen r-x — Ursache der stummen Datenluecke auf x14
x14 sendete 105 Metriken, aber KEINE apache-Metriken und keine Logs. Der
Installer meldete Erfolg. Telegraf selbst nannte den Grund:

  W! [inputs.tail] Directory "/home/users" is not readable but is followed
     by wildcards, make sure you set read permissions or globbing will not work!

Drei Ursachen, alle behoben:

1. `setfacl -m u:telegraf:x` auf der Glob-Wurzel ist FALSCH. Eine Wildcard wird
   per readdir expandiert — dafuer braucht das Verzeichnis `r-x`, nicht nur `x`.
   Neue Logik: Muster werden mit `set -f` gelesen, dann je Treffer die Datei mit
   `r` und JEDE Ebene zwischen Wurzel und Datei mit `r-x` belegt.
   Gemessen: alte ACL -> 1 Warnung, 1 Punkt (nur /var/log/apache2);
   neue ACL -> 0 Warnungen, 4 Punkte (alle 3 Dateien inkl. User-Homes).

2. Der Gegentest war blind: er las jede gefundene Datei per `head -c 1` als
   telegraf. Das konnte nicht fehlschlagen, weil die Datei vom ROOT-Shell
   expandiert wurde — die Glob-Wurzel blieb unlesbar, Telegraf bekam 0 Treffer,
   die Meldung sagte trotzdem "alle N Logdateien lesen". Jetzt wird die
   GLOB-AUFLOESUNG gemessen: dasselbe Muster im Dienstkontext expandieren und die
   Trefferzahl vergleichen. 0 von 0 zaehlt als Fehler, nicht als Erfolg.

3. `for p in $_pfadquelle` ohne `set -f` expandiert die Muster im Root-Shell.
   _pattern war danach ein konkreter Dateiname, der Wildcard-Zweig lief nie, und
   die ACL landete nur auf den Dateien. Real passiert: "ACL auf 3 Datei(en)",
   "kein Glob-Muster gefunden", 0 Treffer im Dienst.

Verifiziert mit echtem Telegraf 1.40.0 und REALEN KeyHelp-Rechten
(/home/users/<user> 0700, logs 0750, Dateien 0640).
2026-09-14 11:21:00 +02:00
mm 3f9ac51c45 chore: VERSION 1.8.0 (envsubst-Fix) 2026-09-14 10:44:06 +02:00
mm ea5b796012 fix(installer): envsubst-Redirection wiederhergestellt — DAS war der x14-Haenger
Der Trace auf x14 endete exakt hier:
  + envsubst ${NODE_NAME} ... ${APACHE_ERROR_FILES}
  root@x14:/home/mm#

Ohne "< \$2.tmp" liest envsubst STDIN. Bei sh install.sh vom Terminal ist stdin
die Konsole -> der Installer wartet auf Eingabe, nach der letzten Meldung
"Schreibe Konfiguration ...". Genau das Bild: Stillstand, ^C, kein Fehler.
Bei curl | sh waere es schlimmer: envsubst wuerde den Rest des Skripts fressen.

Ein frueherer Patch von mir hat die Redirection verschluckt; alle Laeufe mit
vorhandener telegraf.conf (x22) liefen trotzdem, weil dort nur der Fallback
subst_vars() aktiv war. Erst der Erstinstall (x14) traf envsubst.

Verifiziert: vorher Haenger bei envsubst, jetzt vollstaendiger Durchlauf mit
CONFIG_VERSION-Marker und allen Confs.
2026-09-14 10:42:21 +02:00
mm 78f5b9ab5e chore: VERSION 1.7.0 2026-09-14 10:36:40 +02:00
mm 6a881ce674 fix(acl): Durchgangsrecht auf Elternverzeichnisse + Gegentest prueft ALLE Pfade
Zwei reale Fehler, beide still:

1. setfacl -R lief nur ab dem logs/-Verzeichnis. /home/users/<user> ist auf
   Panel-Hostern chmod 700 — ohne Durchgangsrecht (x) auf den ELTERNTEIL kommt
   telegraf nicht bis zur Datei. Die Meldung sagte trotzdem "ACL gesetzt".
   Fix: x auf allen Elternverzeichnissen bis zur Wurzel + Default-ACL, damit
   neu angelegte Domain-Ordner erben.

2. Der Gegentest brach beim ERSTEN Treffer ab. Das war
   /var/log/apache2/keyhelp/access.log (root:adm, immer lesbar) -> Meldung
   "Gegentest OK", waehrend ALLE Domain-Logs in den User-Homes unlesbar
   blieben. Fix: jeden Logpfad pruefen und die Anzahl der Fehlschlaege melden.

Verifiziert in Debian-12 mit KeyHelp-aehnlichen Rechten (Home 700, Logs 640).
2026-09-14 10:36:04 +02:00
mm 360f91f8a1 chore: VERSION 1.6.0 2026-09-14 10:33:44 +02:00
mm 60727fe666 fix(installer): Fortschritt vor der Konfigurations-Phase melden (VERSION 1.6.0) 2026-09-14 10:33:43 +02:00
mm c7ab78e9dd fix(acl): nur Log-Verzeichnisse, Timeout pro Wurzel
setfacl -R lief ueber die GANZE Panel-Wurzel (/home/users) — dort liegen auch
Mails, Webinhalte und Backups. Das Recht auf die Logs waere damit teuer und
wirkungslos zugleich. Jetzt werden die logs/-Verzeichnisse eingesammelt
(find -maxdepth 3), und jeder setfacl-Lauf hat ein Timeout von 120 s, damit
ein langsamer Lauf nicht wie ein Haenger aussieht.
2026-09-14 10:33:32 +02:00
mm 7ec5d44517 docs: Timeout-Tabelle + ACL-Phase dauert bis 3 Minuten 2026-09-14 10:29:49 +02:00
mm f5b98d2807 fix(installer): Haenger nach "bereits installiert" behoben (VERSION 1.5.0)
x14 blieb nach der letzten Erfolgsmeldung stehen (Abbruch per ^C, kein Fehler).
Ursache: grant_apache_log_access() ruft apt-get install acl auf — OHNE
apt-get update davor und OHNE Timeout. Bei veralteten Paketlisten kann apt in
eine Rueckfrage laufen und unbegrenzt warten. Direkt danach haette der naechste
fetch gehangen: fetch() hatte ueberhaupt kein curl-Timeout.

Fix:
- apt-get update vor dem acl-Install, timeout 180 auf allen Paketmanager-Aufrufen
- fetch() mit -m 30 + 3 Versuchen statt unbegrenztem Warten
- alle weiteren curl-Aufrufe (keyring, Binary, Re-Exec) mit -m/--connect-timeout
- Fortschrittsmeldung vor der ACL-Phase: ein Haenger sah wie ein Absturz aus
2026-09-14 10:29:12 +02:00
mm d11849b6d9 docs: sicheren Installationsweg nach vorne (erst laden, dann ausfuehren) 2026-09-14 10:23:01 +02:00
mm 906da69481 fix(installer): Re-Exec nur bei echter Pipe ([ -p /dev/stdin ])
Bei `sh install.sh` oder `< eingabe` ist stdin eine Datei — dort kann kein
Unterbefehl das Skript wegfressen. Der Re-Exec war dort unnoetig und kostete
einen Download. Nur `curl … | sh` (echte Pipe) braucht den Neustart.
2026-09-14 10:21:57 +02:00
mm 06ad67f8f5 fix(installer): Re-Exec auch ohne curl (wget/busybox/lokale Quelle)
Auf einem frischen System fehlt curl haeufig — genau dort, wo apt laeuft und
der Schutz am noetigsten ist. Der Re-Exec scheiterte deshalb still und der
Installer lief ohne Schutz weiter.

Jetzt: curl -> wget -> busybox wget -> lokale Quelle (NETBIRD_TG_SOURCE).
Ist keiner verfuegbar, wird das ausdruecklich gemeldet statt still uebergangen.
2026-09-14 10:19:44 +02:00
mm 9e6593a6f6 fix(installer): Re-Exec sichtbar melden (Selbstschutz-Diagnose) 2026-09-14 10:17:36 +02:00
mm 1eb7976ec8 fix(installer): Selbstschutz gegen stdin-Frass bei curl|sh (VERSION 1.4.0)
x14 brach mitten in der Installation ab: der Installer gab seinen eigenen
Quelltext aus ("; then", Kommentarzeilen) und blieb stehen.

Ursache: Bei `curl ... | sh` liest die Shell das Skript aus STDIN. apt startet
auf Ubuntu `needrestart` (Meldung "Scanning processes... / Scanning linux
images..."), und das liest stdin — damit war der Rest des Skripts weg. Die
Shell setzte mitten im Quelltext fort. Bei x22 trat es nicht auf, weil Telegraf
dort schon installiert war (kein apt-Lauf).

Fix, drei Schutzschichten:
1. Re-Exec: laeuft das Skript ueber eine Pipe, laedt es sich frisch von der
   Quelle und startet sich neu — mit stdin auf /dev/null. NICHT per cat von
   stdin kopieren: die Shell puffert bereits, die Kopie waere unvollstaendig.
2. NEEDRESTART_MODE=a + DEBIAN_FRONTEND=noninteractive fuer alle apt-Aufrufe.
3. </dev/null an jedem Paketmanager (apt, dnf, yum, apk).
2026-09-14 10:14:10 +02:00
mm 0e94bf4d91 docs: Error-Log-Erfassung dokumentiert (LogQL-Beispiele, drei stille Fallen) 2026-09-14 10:03:21 +02:00
mm 3236d9cede feat(apache): Error-Logs erfassen + drei stille Fallen behoben (VERSION 1.3.0)
Bisher wurden NUR access.log gesammelt — real nachgemessen: 31 logfile-Labels,
0 davon error.log. Bei einem KeyHelp-Host mit PHP/CMS fehlten damit genau die
Fehler, fuer die man ins Monitoring schaut.

Error-Logs jetzt in einem EIGENEN Input (name_override=apache_error), roh nach
Loki, mit Tags logtype=error und logfile=<pfad>. Getrennt vom Access-Grok, weil
das Format nicht passt:
  [Mon Sep 14 00:10:01.123456 2026] [core:error] [pid 9] AH00124: ...
Liefen sie durch den Access-Parser, entstuenden keine Metriken, aber der
Aggregator wuerde sie in leere Gruppen einordnen.

DREI STILLE FALLEN dabei gefunden und behoben:
1. processors.rename hatte namepass=["journal"] — apache_error behielt das
   Feld value, jede Panel-Query mit {.message} haette es nicht gefunden.
2. outputs.loki namepass enthielt apache_error nicht — Input sammelt ein,
   Output verwirft, keine Fehlermeldung, Panels leer (wie bei journal damals).
3. outputs.prometheus namedrop ebenso — sonst wandern Textzeilen in die TSDB.

Verifiziert gegen echte KeyHelp-Formate: access=2 Metriken, error=4 Rohzeilen,
Feld heisst message, 0 Error-Zeilen als Metrik.
2026-09-14 10:03:13 +02:00
mm 6d0d0bd900 fix(apache): Aggregator gegen Zeitstempel-Kollisionen + README korrigiert
Die vorige Massnahme (log_time statt ts) war NICHT ausreichend. Ursache ist
tiefer: Telegraf schreibt pro Sammelzyklus EINEN Zeitstempel fuer den ganzen
Batch, und Remote Write kann nur Millisekunden. Zwei Requests derselben Serie
in derselben Millisekunde -> Prometheus lehnt den ganzen Batch ab -> FIFO-Kopf
sitzt fest -> Node liefert gar nichts mehr (derselbe eingefrorene Timestamp
alle ~15s im Log).

Ein Zeitstempel-Trick kann das nicht loesen. Aggregation schon: basicstats
fasst alle Metriken einer Serie pro 60s zu einem Punkt zusammen. Gemessen an
2000 echten x22-Zeilen: 2000 Punkte -> 4 Punkte, 0 Kollisionen, Requests
vollstaendig gezaehlt (1997).

VERSION 1.2.0, damit der Auto-Updater den Fix ausrollt.
2026-09-14 02:01:13 +02:00
mm a9d9b92499 fix(apache): Aggregator gegen Zeitstempel-Kollisionen (Wurzel, nicht Symptom) 2026-09-14 01:59:44 +02:00
mm d684ce860d fix(installer): --update-only ohne --token/--name auf bestehender Node
Zwei Fehler, gleiche Wurzel — die Werte aus /etc/default/telegraf wurden nur
vom Auto-Updater gelesen, nicht von einem manuellen --update-only:

1. Abbruch "Kein Token", obwohl der Token auf der Maschine liegt. Der Weg
   fuer eine Reparatur auf einer laufenden Node war damit verschlossen.
2. Stiller: ohne --name fiel NODE_NAME auf den Hostnamen zurueck. Auf einem
   KeyHelp-Host (x22 vs x22.idx.wf-keyhelp) waere die Node unter falschem
   Label registriert worden; ein PVE-Knoten haette seine Rolle verloren
   (kein pvesh-Drop-in mehr).

Fix: Token, NODE_NAME, ROLE, COLLECTOR, PVE_* aus der Datei nachladen, aber
nur wenn die Kommandozeile nichts anderes sagt (NAME_GIVEN/ROLE_GIVEN).

Zusaetzlich ein zweiter, ernster Fund aus dem Test:
APACHE_FILES blieb leer, wenn ROLE=apache gesetzt war, Apache aber nicht
erkannt wurde. Die Conf rendert dann zu "files = " -> ungueltiges TOML ->
Telegraf startet nicht -> ALLE Metriken der Node aus. Berechnung jetzt
unabhaengig vom Guard, plus Sicherheitsnetz vor dem Rendern.
2026-09-14 01:34:15 +02:00
mm 24c04f8eff docs: Backfill-Weg fuer alte Logs (messen -> archivieren -> nur ins Archiv einspielen) 2026-09-14 01:29:01 +02:00
mm 4da9a59527 feat(archive): x22-Log-Archiv-Skript (messen + Backfill, mit Selbstpruefung) 2026-09-14 01:27:31 +02:00
mm 49f5dbc335 chore: __pycache__ nicht committen 2026-09-14 01:25:55 +02:00
mm 5483a4fea8 fix(apache): Sekunden-Kollision behoben (log_time + converter) — Node lieferte gar nichts mehr
Echte x22-Logs: 2000 Zeilen -> 286 Kollisionen (duplicate sample).
Telegraf uebernimmt den Log-Zeitstempel; bei mehreren Treffern pro Sekunde
kollidiert der +1ms-Aufschlag mit echten Zeilen. Prometheus weist den Batch
ab, Telegraf retryt endlos -> FIFO steht -> Node liefert GAR NICHTS mehr.

Fix: eigenes Grok-Muster mit log_time als Feld (Telegraf nutzt eigene ns-Uhr)
+ processors.converter, damit resp_code/verb Tags bleiben.
Gemessen: 2000/2000 Samples, 0 Kollisionen.

Ausserdem: Einheiten-Waechter im Archiver (ms statt s -> Abbruch statt
nutzloser Block).
2026-09-14 01:25:51 +02:00
mm 5a213eb580 docs: ACL-Loesung fuer User-Home-Logs + Glob-Muster dokumentiert 2026-09-14 00:45:01 +02:00
mm 3c0c800f90 fix(apache): Glob-Muster in der Conf behalten (set -f statt Expansion) + ACL fuer User-Home-Logs (KeyHelp) + Diagnose entdoppelt 2026-09-14 00:43:39 +02:00
mm 911823514d docs: --diagnose dokumentiert 2026-09-14 00:36:46 +02:00
mm 963546641b fix(diagnose): Quoting des Pfads im Lesbarkeitstest 2026-09-14 00:35:59 +02:00
mm 711d8bdc1d feat(diagnose): --diagnose prueft Leserechte, leere Dateien, Parser und Offset in einem Aufruf 2026-09-14 00:35:11 +02:00
mm ce52d2c26b docs: Apache-Logpfad-Sammlung (KeyHelp zweistufig) + Quoting-Pflicht in /etc/default/telegraf 2026-09-14 00:32:24 +02:00
mm cba503e174 fix(installer): /etc/default/telegraf quoten + robustes Sourcing (load_defaults); apache-Logpfade sammeln statt ersten nehmen 2026-09-14 00:32:07 +02:00
mm d614ffa56a fix(apache): KeyHelp-Pfadmuster /home/users/*/logs/*/access.log (zweistufig) + Plesk/cPanel 2026-09-14 00:26:49 +02:00
mm 2b853529f9 fix(apache): Logpfade als TOML-Liste + CustomLog-Erkennung zuerst (KeyHelp-VHost-Logs) 2026-09-14 00:24:31 +02:00
mm 33eb5f2308 fix(installer): Konfig-Test ohne --input-filter — validierte nur gefilterte Plugins, Dienststart scheiterte danach 2026-09-14 00:21:05 +02:00
mm 02af5b428f feat(apache): Glob ueber VHost-Logs fuer Panel-Hoster (KeyHelp/Plesk/cPanel) 2026-09-14 00:16:42 +02:00
mm da3f221c8d fix(apache): from_beginning existiert bei inputs.tail nicht (Dienststart scheiterte) + COMMON/COMBINED_LOG_FORMAT; Logpfad-Autoerkennung 2026-09-14 00:14:45 +02:00
mm feb77e2fc7 fix: TELEGRAF_OPTS leer setzen — beseitigt systemd-Warnung "Referenced but unset" 2026-09-13 23:56:39 +02:00
mm b0f8cb860d docs: sudo-Regel verallgemeinert — PVE, x17/Root-Server, LXC brauchen kein sudo 2026-09-13 23:52:56 +02:00
mm cc5dc6b9ad fix(updater): nur eigene Confs entfernen — fremde/manuelle Confs ueberleben Update 2026-09-13 23:51:16 +02:00