No description
Find a file
2026-03-25 13:35:57 +01:00
apache Initial commit 2026-03-25 00:19:33 +01:00
migrations kleine Verbesserungen, Favicon und Sicherheit 2026-03-25 10:35:27 +01:00
public kleine Verbesserungen, Favicon und Sicherheit 2026-03-25 10:35:27 +01:00
scripts Initial commit 2026-03-25 00:19:33 +01:00
src Bug gefixed 2026-03-25 13:34:47 +01:00
.env.example Initial commit 2026-03-25 00:19:33 +01:00
.gitignore Bug gefixed 2026-03-25 13:34:47 +01:00
activate.sh added systemd service 2026-03-25 13:31:34 +01:00
Changes.md kleine Verbesserungen, Favicon und Sicherheit 2026-03-25 10:35:27 +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 Dockerfile korrigiert - Hinweis von @nikomat@mastodontech.de 2026-03-25 08:07:41 +01:00
install.sh install.sh zugefügt 2026-03-25 13:25:34 +01:00
LICENSE.md added LICENSE.md 2026-03-25 00:44:02 +01:00
README.md install.sh zugefügt 2026-03-25 13:25:34 +01:00
steuerkram.service added systemd service 2026-03-25 13:31:34 +01:00

Steuerkram

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

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

Dieses Projekt wurden mit Unterstützung von Claude Code entwickelt.

PHP HTML CSS JavaScript

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

Automatische Installation

Das Script install.sh übernimmt die gesamte Installation: es erkennt die Linux-Distribution, installiert git, curl und Docker, klont das Repository in das gewünschte Verzeichnis und legt die .env-Datei an.

Das Script muss vor dem Klonen des Repositories heruntergeladen werden – es erledigt das Klonen selbst:

curl -fsSL https://codeberg.org/fds2610/Steuerkram/raw/branch/main/install.sh -o install.sh
sudo bash install.sh

Das Script muss als root ausgeführt werden, da es Pakete installiert und ggf. den Docker-Dienst aktiviert. Mit sudo bash install.sh funktioniert das ohne dauerhaft als root angemeldet zu sein.

Nach der Installation die .env-Datei im gewählten Installationsverzeichnis anpassen (siehe Hinweis am Ende des Scripts) und anschließend die Container starten:

cd /opt/Steuerkram   # oder das gewählte Verzeichnis
docker compose up -d

Manuelle 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

License: MIT

Dieses Projekt steht unter der MIT-Lizenz – siehe LICENSE.md für Details.