Host-Automatismen & Watcher

Automatisierte Jobs auf dem Proxmox-Host (192.168.178.46), die selbsttaetig Dateirechte/DNS anpassen. Hier dokumentiert, damit im Stoerungsfall klar ist, was sie tun und wie man sie abschaltet.

Alle Befehle als root direkt auf dem Proxmox-Host ausfuehren (nicht im Container).


1. webspace-perms — systemd Path-Watcher (neu 2026-06-03)

Zweck: FileBrowser (CT 103) legt Uploads im Webspace mit Modus 640 ab → nginx (CT 111) darf sie nicht lesen → 403 Forbidden. Dieser Watcher zieht neue Dateien automatisch auf 644 (Ordner 755), ~1–2 s nach dem Upload.

Ueberwacht /mnt/storage/fileserver/webspace (nur Top-Ordner)
Units /etc/systemd/system/webspace-perms.path + webspace-perms.service
Wirkung chmod o+r auf Files, chmod o+rx auf Dirs

Status pruefen:

systemctl status webspace-perms.path

Voruebergehend deaktivieren:

systemctl disable --now webspace-perms.path

Komplett loeschen:

systemctl disable --now webspace-perms.path
rm /etc/systemd/system/webspace-perms.path /etc/systemd/system/webspace-perms.service
systemctl daemon-reload

⚠️ Nach Abschaltung sind neue Webspace-Uploads wieder 403, bis man manuell chmod 644 /mnt/storage/fileserver/webspace/<datei> auf dem Host ausfuehrt (im Container geht es nicht — unprivilegiertes LXC, Datei gehoert nobody).


2. cf-ddns — systemd Timer (Cloudflare DDNS)

Zweck: aktualisiert alle 5 Min die A-Records (ls-cloud.biz, sh0rt.biz, ls-x.cloud) auf die aktuelle Public-IP.

Units /etc/systemd/system/cf-ddns.timer + cf-ddns.service
Script /usr/local/bin/cf-ddns.sh

Deaktivieren:

systemctl disable --now cf-ddns.timer

⚠️ Bei Abschaltung zeigen nach einem IP-Wechsel alle Domains ins Leere → saemtliche externen Dienste nicht mehr erreichbar.


3. fix_media_acl — Cron (alle 5 Min)

Zweck: setzt ACL-Maske rwx auf neue Media-/Download-Ordner, sonst koennen Sonarr/Radarr Dateien nicht verschieben.

Eintrag root-crontab: */5 * * * * /usr/local/bin/fix_media_acl.sh

Deaktivieren: crontab -e → Zeile mit # auskommentieren oder loeschen.


4. fix_series_structure — Cron (alle 30 Min)

Zweck: korrigiert die Serien-Ordnerstruktur. Log: /var/log/fix_series_structure.log

Eintrag root-crontab: */30 * * * * python3 /usr/local/bin/fix_series_structure.py

Deaktivieren: crontab -e → Zeile auskommentieren/loeschen.


5. rom-chmod — Cron (alle 2 Min)

Zweck: chmod 644 auf EmulatorJS-ROMs (CT 114 Games), damit der Webserver sie ausliefern kann.

Datei /etc/cron.d/rom-chmod
Inhalt */2 * * * * root find /mnt/storage/fileserver/data/roms -type f ! -perm 644 -exec chmod 644 {} \;

Deaktivieren: rm /etc/cron.d/rom-chmod (oder Zeile auskommentieren).


Schnell-Uebersicht — alles auflisten

systemctl list-units --type=path   # Path-Watcher
systemctl list-timers              # Timer (cf-ddns ...)
crontab -l                         # root-Crons
ls /etc/cron.d/                    # System-Crons (rom-chmod ...)

Stand: 2026-06-03