No description
Find a file
2026-03-25 00:31:57 +01:00
.claude Initial commit 2026-03-25 00:19:33 +01:00
apache Initial commit 2026-03-25 00:19:33 +01:00
migrations Initial commit 2026-03-25 00:19:33 +01:00
public Initial commit 2026-03-25 00:19:33 +01:00
scripts Initial commit 2026-03-25 00:19:33 +01:00
src Initial commit 2026-03-25 00:19:33 +01:00
.env.example Initial commit 2026-03-25 00:19:33 +01:00
.gitignore Initial commit 2026-03-25 00:19:33 +01:00
composer.json Initial commit 2026-03-25 00:19:33 +01:00
docker-compose.yml Initial commit 2026-03-25 00:19:33 +01:00
Dockerfile Initial commit 2026-03-25 00:19:33 +01:00
README.md added README.md 2026-03-25 00:31:57 +01:00

Steuerkram

Self-hosted Buchhaltungs- und Steueranwendung für deutsche Freiberufler und Kleinunternehmer. Entwickelt als datensouveräne Alternative zu SaaS-Diensten wie papierkram.de.

Funktionsumfang

  • Kontenrahmen SKR03 – vollständiger Kontenrahmen mit ~80 vorbesetzten Konten (CRUD)
  • Belegverwaltung – Upload von PDF, PNG, TIFF und ZUGFeRD-XML; SHA-256 Integritätsprüfung
  • Buchungen – doppelte Buchführung; GoBD-konforme Trigger verhindern nachträgliche Manipulation
  • Kundenverwaltung – CRUD
  • Ausgangsrechnungen – DIN 5008 Layout, PDF-Export via mPDF
  • UStVA – Kennzahlen-Berechnung aus Buchungen, ELSTER XML-Export
  • EÜR – Jahresauswertung mit PDF-Export
  • Einstellungen – Firmendaten, Logo, ELSTER-Steuernummer

Tech Stack

Schicht Technologie
Webserver Apache 2.4
Backend PHP 8.3 (MVC, kein Framework)
Datenbank MariaDB 11
PDF-Generierung mPDF 8.x
Frontend HTML, CSS, JavaScript (keine Bibliotheken)
Deployment Docker / Docker Compose

Voraussetzungen

Installation

1. Repository klonen

git clone <repository-url> steuerkram
cd steuerkram

2. Zugangsdaten anpassen

Öffne docker-compose.yml und ändere die folgenden Umgebungsvariablen im web-Service:

environment:
  AUTH_USER: admin          # Login-Benutzername
  AUTH_PASS: changeme       # Login-Passwort – UNBEDINGT ändern!
  APP_SECRET: change-this-in-production  # Zufälligen langen String eintragen

Außerdem die Datenbankpasswörter in beiden Services (web und db) aufeinander abstimmen, falls gewünscht.

3. Container starten

docker compose up -d

Beim ersten Start werden automatisch:

  • die Datenbank initialisiert (migrations/001_initial_schema.sql)
  • der SKR03-Kontenrahmen eingespielt (migrations/002_seed_skr03.sql)
  • das Docker-Image mit PHP-Abhängigkeiten (mPDF) gebaut

4. Anwendung aufrufen

http://localhost:8080

Login mit den in Schritt 2 gesetzten Zugangsdaten.

5. Firmendaten hinterlegen

Nach dem ersten Login unter Einstellungen Firmendaten, Logo und ELSTER-Steuernummer eintragen. Diese Angaben erscheinen auf Ausgangsrechnungen und im EÜR-Export.

Port ändern

Der Standard-Port ist 8080. Um ihn zu ändern, passe in docker-compose.yml die ports-Zeile an:

ports:
  - "9090:80"   # Beispiel: Port 9090 auf dem Host

Datenpersistenz

Pfad Inhalt
./data/mariadb/ MariaDB-Datenbankdateien
Docker Volume uploads Hochgeladene Belege

Beide Pfade liegen außerhalb des Containers und bleiben bei docker compose down erhalten.

Backup

bash scripts/backup.sh

Das Skript erstellt ein Dump der Datenbank sowie ein Archiv der Uploads im Verzeichnis backups/.

Update

git pull
docker compose up -d --build

GoBD-Hinweise

  • Gebuchte Sätze können nicht geändert oder gelöscht werden (MariaDB BEFORE UPDATE/DELETE Trigger).
  • Korrekturen erfolgen ausschließlich über Stornobuchungen.
  • Jeder hochgeladene Beleg erhält einen SHA-256 Hash zur Integritätsprüfung.

Lizenz

Privates Projekt – keine öffentliche Lizenz.