- change DATABASE_PATH in .env-example and docker-compose.yml - ensure consistency with Dockerfile for app directory structure 📦 build(docker): adjust Dockerfile for new data directory - create /app/data directory for database storage - update DATABASE_PATH environment variable accordingly 📝 docs(README): update README for German localization - replace English sections with German equivalents - adjust setup instructions to match new environment configurations
63 lines
2.5 KiB
Markdown
63 lines
2.5 KiB
Markdown
# FleetLedger
|
|
|
|
Self-hosted Übersicht für gemietete Server (VPS, Dedizierte, Storage, Managed). Mehrnutzerfähig, Dark-Mode-first und PWA-ready.
|
|
|
|
## Features
|
|
- Server-CRUD pro Benutzer, Soft-Delete/Archiv
|
|
- Dashboard (Kosten, ablaufende Verträge) + Admin-Gesamtübersicht
|
|
- Map-Ansicht pro Nutzer auf Basis der Location-Namen (Leaflet)
|
|
- Optional verschlüsselte Speicherung von Management-Passwörtern (Fernet)
|
|
- Session-Auth mit CSRF-Schutz, Admin-Rolle
|
|
- PWA: Manifest, Service Worker, installierbar
|
|
|
|
## Stack
|
|
- FastAPI, SQLModel, Jinja2
|
|
- SQLite (Standard), Passlib (bcrypt), Cryptography (Fernet)
|
|
- Tailwind via CDN, Leaflet für Karte
|
|
- Uvicorn als ASGI-Server
|
|
|
|
## Schnellstart mit Docker
|
|
1. Repository klonen
|
|
```bash
|
|
git clone https://example.com/your/fleetledger.git
|
|
cd fleetledger
|
|
```
|
|
2. Umgebung setzen
|
|
```bash
|
|
cp .env-example .env
|
|
# SESSION_SECRET in .env auf einen starken, einzigartigen Wert setzen
|
|
```
|
|
3. Starten
|
|
```bash
|
|
docker-compose up --build
|
|
```
|
|
Die SQLite-DB liegt in `./data/` (Bind-Mount in den Container unter `/app/data/fleetledger.db`).
|
|
|
|
## Lokale Entwicklung (ohne Docker)
|
|
- Voraussetzungen: Python 3.12, virtualenv empfohlen.
|
|
- Setup:
|
|
```bash
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
cp .env-example .env
|
|
export SESSION_SECRET="ein_langer_random_wert"
|
|
export SESSION_COOKIE_SECURE=0 # nur lokal ohne HTTPS
|
|
uvicorn app.main:app --reload --port 8000
|
|
```
|
|
|
|
## Umgebungsvariablen
|
|
- `SESSION_SECRET` (erforderlich): Langer, zufälliger String für die Session-Signierung.
|
|
- `SESSION_COOKIE_SECURE` (default `1`): Auf `0` nur für lokale HTTP-Tests setzen, sonst `1` (HTTPS).
|
|
- `DATABASE_PATH` (default `/app/data/fleetledger.db` im Docker-Image): Pfad zur SQLite-Datei. Lokal z. B. `./data/fleetledger.db`.
|
|
- `ENCRYPTION_KEY` (optional): Fernet-Key für verschlüsselte Management-Passwörter. Leer lassen, wenn keine Speicherung gewünscht ist.
|
|
|
|
## Sicherheitshinweise
|
|
- Immer einen starken `SESSION_SECRET` verwenden; im Docker-Setup wird der Start verweigert, wenn ein Platzhalter genutzt wird.
|
|
- Produktiv hinter HTTPS betreiben (`SESSION_COOKIE_SECURE=1`).
|
|
- Management-Passwörter nur mit gesetztem `ENCRYPTION_KEY` speichern; ohne Key werden sie nicht persistiert.
|
|
- CSRF-Schutz ist aktiv für Form-POSTs; Browser-Service-Worker cached Assets versioniert.
|
|
|
|
## Datenhaltung
|
|
- SQLite speichert die Daten in einer Datei (`DATABASE_PATH`). In Docker wird `./data/` aus dem Host eingebunden.
|
|
- Backups: Einfach die SQLite-Datei in `./data/` sichern, während der Dienst gestoppt ist.
|