Steuerkram/data
2026-07-31 16:22:09 +02:00
..
README.md Fix #150: Logo-Upload repariert, Nutzdaten nach data/ getrennt, Backups vollständig 2026-07-31 16:22:09 +02:00

data/ – persistente Nutzdaten

Alles in diesem Verzeichnis ist Nutzdatenbestand, nicht Code. Es überlebt Updates, git pull, git clean und Container-Neubauten und gehört in die Datensicherung. Der Inhalt ist per .gitignore (data/*) vom Repo ausgenommen – nur diese README ist eingecheckt.

Verzeichnis Inhalt Gemountet in
data/mariadb/ Datenbank (MariaDB-Datendateien) nur db-Container: /var/lib/mysql
data/belege/ Hochgeladene Belegdateien, nach Jahr/Belegnummer web: /var/www/html/data/belege
data/logo/ Firmenlogo (logo.png oder logo.jpg) web: /var/www/html/data/logo

Warum außerhalb des Web-Roots

data/belege und data/logo liegen bewusst nicht unter public/. Beide werden ausschließlich über die Anwendung ausgeliefert, die vorher Anmeldung und Dateityp prüft:

  • Belege über /belege/{id}/file (BelegController::serveFile)
  • Logo über /settings/logo/file (SettingsController::serveLogo)

Ein direkter Abruf per URL ist damit nicht möglich. In der Datenbank steht jeweils nur der Pfad relativ zum zugehörigen Verzeichnis (belege.storage_path, company_settings.logo_path) – kein Web-Pfad und kein absoluter Serverpfad.

Der web-Container sieht data/mariadb nicht; die Datenbankdateien sind ausschließlich in den db-Container gemountet.

Datensicherung

# Datenbank
docker compose exec -T db mariadb-dump -usteuerkram -psteuerkram steuerkram > backup.sql

# Dateien
tar czf backup-dateien.tar.gz data/belege data/logo

Ein Backup ist nur zusammen vollständig: Ohne data/belege verweisen die Beleg-Datensätze der Datenbank ins Leere.