Restructure: move code into schneespur/ subdirectory, fix Umlauts
- Move all application code into schneespur/ subdirectory for cleaner GitHub presentation (README, LICENSE, INSTALL guides stay in root) - Fix German Umlaut encoding in INSTALL.de.md and README.md (ae→ä, oe→ö, ue→ü throughout) - ZIP download structure remains flat (code in root) for easy deployment
This commit is contained in:
parent
ee3dbba6cc
commit
b8e426ba2d
8075 changed files with 53 additions and 53 deletions
|
|
@ -27,9 +27,9 @@ Diese Anleitung beschreibt die Installation von Schneespur auf einem klassischen
|
|||
| MySQL | 5.7 | 8.0+ |
|
||||
| MariaDB (alternativ) | 10.3 | 10.6+ |
|
||||
|
||||
### Benoetigte PHP-Erweiterungen
|
||||
### Benötigte PHP-Erweiterungen
|
||||
|
||||
**Pflicht** (Installation schlaegt ohne diese fehl):
|
||||
**Pflicht** (Installation schlägt ohne diese fehl):
|
||||
|
||||
- `pdo_mysql`
|
||||
- `gd`
|
||||
|
|
@ -89,9 +89,9 @@ Das Document-Root (manchmal auch „Webroot" oder „Stammverzeichnis" genannt)
|
|||
|
||||
**Beispiel:** Wenn Sie die Dateien nach `/schneespur/` hochgeladen haben, setzen Sie das Document-Root auf `/schneespur/public/`.
|
||||
|
||||
So geht das bei gaengigen Hostern:
|
||||
So geht das bei gängigen Hostern:
|
||||
|
||||
- **Strato:** Paket-Verwaltung → Domain-Verwaltung → Umleitung/Ziel → Pfad aendern
|
||||
- **Strato:** Paket-Verwaltung → Domain-Verwaltung → Umleitung/Ziel → Pfad ändern
|
||||
- **IONOS:** Hosting → Domains → Document-Root bearbeiten
|
||||
- **All-Inkl:** Domain-Einstellungen → Ordnerzuordnung
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ So geht das bei gaengigen Hostern:
|
|||
|
||||
## 4. Datenbank anlegen
|
||||
|
||||
Erstellen Sie ueber das Verwaltungspanel Ihres Hosters eine neue MySQL-Datenbank. Notieren Sie sich:
|
||||
Erstellen Sie über das Verwaltungspanel Ihres Hosters eine neue MySQL-Datenbank. Notieren Sie sich:
|
||||
|
||||
- **Host** (z. B. `localhost` oder `rdbms.strato.de`)
|
||||
- **Port** (Standard: `3306`)
|
||||
|
|
@ -109,27 +109,27 @@ Erstellen Sie ueber das Verwaltungspanel Ihres Hosters eine neue MySQL-Datenbank
|
|||
- **Benutzername**
|
||||
- **Passwort**
|
||||
|
||||
Diese Daten benoetigen Sie im naechsten Schritt.
|
||||
Diese Daten benötigen Sie im nächsten Schritt.
|
||||
|
||||
---
|
||||
|
||||
## 5. Installations-Assistent
|
||||
|
||||
Oeffnen Sie Ihre Domain im Browser. Schneespur erkennt automatisch, dass noch keine Installation vorliegt, und startet den Assistenten.
|
||||
Öffnen Sie Ihre Domain im Browser. Schneespur erkennt automatisch, dass noch keine Installation vorliegt, und startet den Assistenten.
|
||||
|
||||
### Schritt 1: Willkommen
|
||||
|
||||
Der Assistent prueft die Grundvoraussetzungen und erzeugt die Konfigurationsdatei (`.env`) sowie den Anwendungsschluessel (`APP_KEY`).
|
||||
Der Assistent prüft die Grundvoraussetzungen und erzeugt die Konfigurationsdatei (`.env`) sowie den Anwendungsschlüssel (`APP_KEY`).
|
||||
|
||||
### Schritt 2: Datenbank
|
||||
|
||||
Geben Sie die Zugangsdaten aus Schritt 4 ein. Der Assistent testet die Verbindung, bevor er fortfaehrt.
|
||||
Geben Sie die Zugangsdaten aus Schritt 4 ein. Der Assistent testet die Verbindung, bevor er fortfährt.
|
||||
|
||||
> Falls die `.env`-Datei nicht beschreibbar ist (selten bei Shared-Hosting), zeigt der Assistent eine Anleitung zum manuellen Bearbeiten per FTP an.
|
||||
|
||||
### Schritt 3: Systemcheck
|
||||
|
||||
Der Assistent prueft PHP-Version, Erweiterungen und Schreibrechte auf wichtige Verzeichnisse (`storage/`, `bootstrap/cache/`). Fehlende Erweiterungen werden als Pflicht oder Empfehlung markiert.
|
||||
Der Assistent prüft PHP-Version, Erweiterungen und Schreibrechte auf wichtige Verzeichnisse (`storage/`, `bootstrap/cache/`). Fehlende Erweiterungen werden als Pflicht oder Empfehlung markiert.
|
||||
|
||||
### Schritt 4: Datenbank-Migration
|
||||
|
||||
|
|
@ -145,7 +145,7 @@ Legen Sie fest:
|
|||
|
||||
### Schritt 6: Speicher & Caches
|
||||
|
||||
Der Assistent erstellt die Verknuepfung zum oeffentlichen Speicher (`storage:link`) und baut Caches auf. Falls die Verknuepfung auf Ihrem Hoster nicht funktioniert, wird eine Anleitung zum manuellen Anlegen per FTP angezeigt.
|
||||
Der Assistent erstellt die Verknüpfung zum öffentlichen Speicher (`storage:link`) und baut Caches auf. Falls die Verknüpfung auf Ihrem Hoster nicht funktioniert, wird eine Anleitung zum manuellen Anlegen per FTP angezeigt.
|
||||
|
||||
### Schritt 7: Admin-Konto
|
||||
|
||||
|
|
@ -153,17 +153,17 @@ Erstellen Sie Ihr Administrator-Konto (Name, E-Mail, Passwort mit mindestens 8 Z
|
|||
|
||||
### Schritt 8: E-Mail-Konfiguration (optional)
|
||||
|
||||
Richten Sie SMTP-Versand ein, damit Schneespur Benachrichtigungen senden kann. Dieser Schritt kann uebersprungen und spaeter in den Einstellungen nachgeholt werden.
|
||||
Richten Sie SMTP-Versand ein, damit Schneespur Benachrichtigungen senden kann. Dieser Schritt kann übersprungen und später in den Einstellungen nachgeholt werden.
|
||||
|
||||
### Fertig
|
||||
|
||||
Nach Abschluss sehen Sie eine Zusammenfassung. Sie koennen sich jetzt mit Ihren Admin-Zugangsdaten anmelden.
|
||||
Nach Abschluss sehen Sie eine Zusammenfassung. Sie können sich jetzt mit Ihren Admin-Zugangsdaten anmelden.
|
||||
|
||||
---
|
||||
|
||||
## 6. Cron-Job einrichten
|
||||
|
||||
Schneespur benoetigt einen Cron-Job, der einmal pro Minute den Laravel-Scheduler ausfuehrt. Dieser verarbeitet die Auftragswarteschlange (z. B. Wetterdaten abrufen, Benachrichtigungen senden).
|
||||
Schneespur benötigt einen Cron-Job, der einmal pro Minute den Laravel-Scheduler ausführt. Dieser verarbeitet die Auftragswarteschlange (z. B. Wetterdaten abrufen, Benachrichtigungen senden).
|
||||
|
||||
### Cron-Befehl
|
||||
|
||||
|
|
@ -171,7 +171,7 @@ Schneespur benoetigt einen Cron-Job, der einmal pro Minute den Laravel-Scheduler
|
|||
* * * * * /usr/local/bin/php /pfad/zu/schneespur/artisan schedule:run >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
> **Wichtig:** Ersetzen Sie `/pfad/zu/schneespur/` durch den tatsaechlichen Pfad auf Ihrem Webspace und `/usr/local/bin/php` durch den PHP-Pfad Ihres Hosters (haeufig auch `/usr/bin/php` oder `/usr/bin/php8.3`).
|
||||
> **Wichtig:** Ersetzen Sie `/pfad/zu/schneespur/` durch den tatsächlichen Pfad auf Ihrem Webspace und `/usr/local/bin/php` durch den PHP-Pfad Ihres Hosters (häufig auch `/usr/bin/php` oder `/usr/bin/php8.3`).
|
||||
|
||||
### So richten Sie den Cron-Job ein
|
||||
|
||||
|
|
@ -179,13 +179,13 @@ Schneespur benoetigt einen Cron-Job, der einmal pro Minute den Laravel-Scheduler
|
|||
- **IONOS:** Hosting → Cron-Jobs → Cronjob anlegen
|
||||
- **All-Inkl:** Tools → Cronjobs → Neuer Cronjob
|
||||
|
||||
Stellen Sie die Ausfuehrung auf **jede Minute** oder das kuerzeste verfuegbare Intervall.
|
||||
Stellen Sie die Ausführung auf **jede Minute** oder das kürzeste verfügbare Intervall.
|
||||
|
||||
### Warum ist der Cron-Job noetig?
|
||||
### Warum ist der Cron-Job nötig?
|
||||
|
||||
Ohne Cron-Job werden keine Hintergrundaufgaben verarbeitet:
|
||||
|
||||
- Wetterdaten werden nicht automatisch zu Einsaetzen hinzugefuegt
|
||||
- Wetterdaten werden nicht automatisch zu Einsätzen hinzugefügt
|
||||
- E-Mail-Benachrichtigungen werden nicht versendet
|
||||
- Geplante Aufgaben laufen nicht
|
||||
|
||||
|
|
@ -193,18 +193,18 @@ Ohne Cron-Job werden keine Hintergrundaufgaben verarbeitet:
|
|||
|
||||
## 7. OwnTracks einrichten
|
||||
|
||||
OwnTracks ist die GPS-Tracking-App, mit der Ihre Fahrer die Einsaetze aufzeichnen. Jeder Fahrer benoetigt die App auf seinem Smartphone.
|
||||
OwnTracks ist die GPS-Tracking-App, mit der Ihre Fahrer die Einsätze aufzeichnen. Jeder Fahrer benötigt die App auf seinem Smartphone.
|
||||
|
||||
### Kurzanleitung
|
||||
|
||||
1. **App installieren:** OwnTracks aus dem App Store (iOS) oder Google Play Store (Android) herunterladen.
|
||||
2. **Zugangsdaten erzeugen:** Melden Sie sich als Admin in Schneespur an, oeffnen Sie die Fahrer-Uebersicht und klicken Sie beim jeweiligen Fahrer auf „Zugangsdaten". Schneespur erzeugt automatisch Benutzername und Passwort.
|
||||
2. **Zugangsdaten erzeugen:** Melden Sie sich als Admin in Schneespur an, öffnen Sie die Fahrer-Übersicht und klicken Sie beim jeweiligen Fahrer auf „Zugangsdaten". Schneespur erzeugt automatisch Benutzername und Passwort.
|
||||
3. **QR-Code scannen:** Auf der Zugangsdaten-Seite wird ein QR-Code angezeigt. Der Fahrer scannt diesen mit der OwnTracks-App, und die Verbindung wird automatisch konfiguriert.
|
||||
4. **Manuell konfigurieren** (falls QR-Code nicht funktioniert):
|
||||
- Modus: **HTTP**
|
||||
- URL: `https://ihre-domain.de/api/owntracks/report`
|
||||
- Benutzername und Passwort: wie in Schneespur angezeigt
|
||||
5. **Testen:** Oeffnen Sie in Schneespur unter „OwnTracks" die Uebersicht. Sobald der Fahrer die App startet, sollte dort ein gruener Status erscheinen.
|
||||
5. **Testen:** Öffnen Sie in Schneespur unter „OwnTracks" die Übersicht. Sobald der Fahrer die App startet, sollte dort ein grüner Status erscheinen.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -213,17 +213,17 @@ OwnTracks ist die GPS-Tracking-App, mit der Ihre Fahrer die Einsaetze aufzeichne
|
|||
### Vor dem Update
|
||||
|
||||
1. Erstellen Sie ein Backup (siehe [Backup](#9-backup)).
|
||||
2. Aktivieren Sie den Wartungsmodus: Oeffnen Sie `https://ihre-domain.de/down` im Browser oder fuehren Sie `php artisan down` per SSH/Cron aus.
|
||||
2. Aktivieren Sie den Wartungsmodus: Öffnen Sie `https://ihre-domain.de/down` im Browser oder führen Sie `php artisan down` per SSH/Cron aus.
|
||||
|
||||
### Update durchfuehren
|
||||
### Update durchführen
|
||||
|
||||
1. Laden Sie das neue Release herunter.
|
||||
2. Ueberschreiben Sie alle Dateien per FTP. Ueberspringen Sie dabei **nicht** die `.env`-Datei — diese wird beim Upload ohnehin nicht ueberschrieben, solange Sie nur die Release-Dateien hochladen.
|
||||
3. Fuehren Sie die Datenbank-Migration aus. Dafuer gibt es zwei Wege:
|
||||
- **Ueber den Browser:** Oeffnen Sie `https://ihre-domain.de/admin/settings` und pruefen Sie, ob eine Update-Migration angeboten wird.
|
||||
2. Überschreiben Sie alle Dateien per FTP. Überspringen Sie dabei **nicht** die `.env`-Datei — diese wird beim Upload ohnehin nicht überschrieben, solange Sie nur die Release-Dateien hochladen.
|
||||
3. Führen Sie die Datenbank-Migration aus. Dafür gibt es zwei Wege:
|
||||
- **Ueber den Browser:** Öffnen Sie `https://ihre-domain.de/admin/settings` und prüfen Sie, ob eine Update-Migration angeboten wird.
|
||||
- **Per Cron/SSH:** `php artisan migrate --force`
|
||||
4. Leeren Sie die Caches: `php artisan config:cache && php artisan view:cache`
|
||||
5. Deaktivieren Sie den Wartungsmodus: Oeffnen Sie `https://ihre-domain.de/up` oder fuehren Sie `php artisan up` aus.
|
||||
5. Deaktivieren Sie den Wartungsmodus: Öffnen Sie `https://ihre-domain.de/up` oder führen Sie `php artisan up` aus.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -239,9 +239,9 @@ OwnTracks ist die GPS-Tracking-App, mit der Ihre Fahrer die Einsaetze aufzeichne
|
|||
|
||||
### Empfohlener Rhythmus
|
||||
|
||||
- **Datenbank:** woechentlich oder vor jedem Update
|
||||
- **Datenbank:** wöchentlich oder vor jedem Update
|
||||
- **Dateien:** vor jedem Update
|
||||
- **Konfiguration:** nach jeder Aenderung und vor Updates
|
||||
- **Konfiguration:** nach jeder Änderung und vor Updates
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -249,47 +249,47 @@ OwnTracks ist die GPS-Tracking-App, mit der Ihre Fahrer die Einsaetze aufzeichne
|
|||
|
||||
### Installations-Assistent erscheint nicht
|
||||
|
||||
- Pruefen Sie, ob das Document-Root korrekt auf `/public` zeigt.
|
||||
- Pruefen Sie, ob die `.htaccess`-Datei im `public/`-Ordner vorhanden ist.
|
||||
- Prüfen Sie, ob das Document-Root korrekt auf `/public` zeigt.
|
||||
- Prüfen Sie, ob die `.htaccess`-Datei im `public/`-Ordner vorhanden ist.
|
||||
- Stellen Sie sicher, dass `mod_rewrite` (Apache) aktiviert ist.
|
||||
|
||||
### Datenbankverbindung schlaegt fehl
|
||||
### Datenbankverbindung schlägt fehl
|
||||
|
||||
- Pruefen Sie Host, Port, Datenbankname, Benutzername und Passwort.
|
||||
- Prüfen Sie Host, Port, Datenbankname, Benutzername und Passwort.
|
||||
- Bei Strato lautet der Host oft `rdbms.strato.de`, nicht `localhost`.
|
||||
- Stellen Sie sicher, dass der Datenbankbenutzer Zugriff auf die angegebene Datenbank hat.
|
||||
|
||||
### Seite zeigt „500 Internal Server Error"
|
||||
|
||||
- Pruefen Sie die Schreibrechte: `storage/` und `bootstrap/cache/` muessen beschreibbar sein (Rechte 755 oder 775).
|
||||
- Prüfen Sie die Schreibrechte: `storage/` und `bootstrap/cache/` müssen beschreibbar sein (Rechte 755 oder 775).
|
||||
- Schauen Sie in `storage/logs/laravel.log` nach der Fehlermeldung.
|
||||
|
||||
### GPS-Daten kommen nicht an
|
||||
|
||||
- Pruefen Sie in OwnTracks, ob der Modus auf „HTTP" steht (nicht MQTT).
|
||||
- Pruefen Sie die URL: `https://ihre-domain.de/api/owntracks/report`
|
||||
- Pruefen Sie Benutzername und Passwort in der OwnTracks-App.
|
||||
- Oeffnen Sie die OwnTracks-Uebersicht in Schneespur — dort wird der letzte Verbindungsstatus angezeigt.
|
||||
- Prüfen Sie in OwnTracks, ob der Modus auf „HTTP" steht (nicht MQTT).
|
||||
- Prüfen Sie die URL: `https://ihre-domain.de/api/owntracks/report`
|
||||
- Prüfen Sie Benutzername und Passwort in der OwnTracks-App.
|
||||
- Öffnen Sie die OwnTracks-Übersicht in Schneespur — dort wird der letzte Verbindungsstatus angezeigt.
|
||||
|
||||
### Wetterdaten fehlen bei Einsaetzen
|
||||
### Wetterdaten fehlen bei Einsätzen
|
||||
|
||||
- Stellen Sie sicher, dass der Cron-Job laeuft (siehe [Cron-Job einrichten](#6-cron-job-einrichten)).
|
||||
- Wetterdaten werden ueber Open-Meteo abgerufen. Pruefen Sie, ob Ihr Server ausgehende HTTPS-Verbindungen erlaubt.
|
||||
- Stellen Sie sicher, dass der Cron-Job läuft (siehe [Cron-Job einrichten](#6-cron-job-einrichten)).
|
||||
- Wetterdaten werden über Open-Meteo abgerufen. Prüfen Sie, ob Ihr Server ausgehende HTTPS-Verbindungen erlaubt.
|
||||
|
||||
### E-Mails werden nicht versendet
|
||||
|
||||
- Pruefen Sie die SMTP-Einstellungen unter Einstellungen → E-Mail.
|
||||
- Prüfen Sie die SMTP-Einstellungen unter Einstellungen → E-Mail.
|
||||
- Nutzen Sie die Test-E-Mail-Funktion in den Einstellungen.
|
||||
- Schauen Sie in `storage/logs/laravel.log` nach Fehlermeldungen.
|
||||
|
||||
### Cron-Job funktioniert nicht
|
||||
|
||||
- Pruefen Sie den PHP-Pfad: Fuehren Sie `which php` aus oder fragen Sie Ihren Hoster.
|
||||
- Pruefen Sie den Pfad zur `artisan`-Datei.
|
||||
- Prüfen Sie den PHP-Pfad: Führen Sie `which php` aus oder fragen Sie Ihren Hoster.
|
||||
- Prüfen Sie den Pfad zur `artisan`-Datei.
|
||||
- Testen Sie den Befehl manuell: `php /pfad/zu/schneespur/artisan schedule:run`
|
||||
|
||||
---
|
||||
|
||||
## Hilfe
|
||||
|
||||
Bei Fragen nutzen Sie die integrierte Hilfe im Admin-Bereich (Menue → Hilfe) oder erstellen Sie ein Issue im GitHub-Repository.
|
||||
Bei Fragen nutzen Sie die integrierte Hilfe im Admin-Bereich (Menü → Hilfe) oder erstellen Sie ein Issue im GitHub-Repository.
|
||||
|
|
|
|||
16
README.md
16
README.md
|
|
@ -1,5 +1,5 @@
|
|||
<p align="center">
|
||||
<img src="public/pwa-icon-512x512.png" alt="Schneespur" width="120">
|
||||
<img src="schneespur/public/pwa-icon-512x512.png" alt="Schneespur" width="120">
|
||||
</p>
|
||||
|
||||
<h1 align="center">Schneespur</h1>
|
||||
|
|
@ -20,23 +20,23 @@
|
|||
|
||||
## Was ist Schneespur?
|
||||
|
||||
Schneespur dokumentiert Raeum- und Streueinsaetze fuer kleine Winterdienst-Betriebe — vollstaendig, automatisch und rechtssicher. Die Software laeuft auf jedem guenstigen Shared-Webhosting (Strato, IONOS, All-Inkl, ...) und braucht weder SSH noch Docker.
|
||||
Schneespur dokumentiert Räum- und Streueinsätze für kleine Winterdienst-Betriebe — vollständig, automatisch und rechtssicher. Die Software läuft auf jedem günstigen Shared-Webhosting (Strato, IONOS, All-Inkl, ...) und braucht weder SSH noch Docker.
|
||||
|
||||
**Kernversprechen:** Wenn ein Passant auf einer gestreuten Flaeche ausrutscht und der Betreiber nachweisen muss, dass er seiner Verkehrssicherungspflicht nachgekommen ist, liefert Schneespur den Beleg — mit GPS-Track, Wetterlage, Fotos und Zeitstempeln.
|
||||
**Kernversprechen:** Wenn ein Passant auf einer gestreuten Fläche ausrutscht und der Betreiber nachweisen muss, dass er seiner Verkehrssicherungspflicht nachgekommen ist, liefert Schneespur den Beleg — mit GPS-Track, Wetterlage, Fotos und Zeitstempeln.
|
||||
|
||||
### Funktionen
|
||||
|
||||
- **GPS-Tracking** via [OwnTracks](https://owntracks.org)-App (iOS/Android) — kein eigener Tracking-Client noetig
|
||||
- **GPS-Tracking** via [OwnTracks](https://owntracks.org)-App (iOS/Android) — kein eigener Tracking-Client nötig
|
||||
- **Automatische Wetterdokumentation** — Temperatur, Niederschlag, Wind, Schneelage zum Einsatzzeitpunkt (Open-Meteo, BrightSky, Met.no)
|
||||
- **Foto-Dokumentation** — Bilder direkt aus der Fahrer-App hochladen
|
||||
- **PDF-Einsatznachweise** — einzeln oder als Sammelreport pro Kunde und Zeitraum
|
||||
- **Kundenportal** — Kunden koennen ihre Einsaetze selbst einsehen
|
||||
- **Kundenportal** — Kunden können ihre Einsätze selbst einsehen
|
||||
- **Fahrer-App (PWA)** — funktioniert offline, synchronisiert automatisch bei Verbindung
|
||||
- **Kunden- und Objektverwaltung** — mehrere Objekte pro Kunde, Zuordnung zu Einsaetzen
|
||||
- **Kunden- und Objektverwaltung** — mehrere Objekte pro Kunde, Zuordnung zu Einsätzen
|
||||
- **Fahrzeugverwaltung** — Fuhrpark mit Kennzeichen und Fahrzeugtyp
|
||||
- **DSGVO-konform** — Fahrer-Anonymisierung, Datenexport, konfigurierbare Aufbewahrungsfristen
|
||||
- **Automatische Updates** — kryptographisch signiert (Ed25519), ein Klick im Admin-Panel
|
||||
- **Modulsystem** — Erweiterbar ueber Module aus dem Schneespur-Modulkatalog
|
||||
- **Modulsystem** — erweiterbar über Module aus dem Schneespur-Modulkatalog
|
||||
|
||||
### Systemanforderungen
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ Schneespur dokumentiert Raeum- und Streueinsaetze fuer kleine Winterdienst-Betri
|
|||
1. [Download](https://jenni.noschmarrn.dev) der aktuellen Version (ZIP)
|
||||
2. ZIP entpacken und per FTP auf den Webserver laden
|
||||
3. Document Root auf den `public/`-Ordner setzen
|
||||
4. Im Browser die Domain aufrufen — der Installations-Assistent fuehrt durch die Einrichtung
|
||||
4. Im Browser die Domain aufrufen — der Installations-Assistent führt durch die Einrichtung
|
||||
|
||||
Detaillierte Anleitung: **[INSTALL.de.md](INSTALL.de.md)**
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue