Steuerkram/README.md
2026-03-25 00:31:57 +01:00

119 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
- [Docker](https://docs.docker.com/get-docker/) ≥ 24
- [Docker Compose](https://docs.docker.com/compose/install/) ≥ 2.20 (in neueren Docker-Versionen enthalten)
- Git
## Installation
### 1. Repository klonen
```bash
git clone <repository-url> steuerkram
cd steuerkram
```
### 2. Zugangsdaten anpassen
Öffne `docker-compose.yml` und ändere die folgenden Umgebungsvariablen im `web`-Service:
```yaml
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
```bash
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:
```yaml
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
bash scripts/backup.sh
```
Das Skript erstellt ein Dump der Datenbank sowie ein Archiv der Uploads im Verzeichnis `backups/`.
## Update
```bash
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.