# Karch Systemverwaltung – Installation auf dem Server

Die Systemverwaltung ist jetzt eine echte Web-App: Alle Daten (News, Bestellungen, Urlaub, Ideen, Posts, Leads, Vertriebs-Pipeline, Freigaben, Trello-Verbindung) liegen **zentral auf dem Server** – jeder arbeitet mit demselben Stand, vom Büro-PC genauso wie vom Handy. Passwörter sind verschlüsselt gespeichert, es wird **kein npm install** benötigt.

## 1. Hochladen (WinSCP)

Den kompletten Ordner `systemverwaltung` per WinSCP auf den Server ziehen, sodass es danach so aussieht:

```
/var/www/html/systemverwaltung/
├── server.js
├── install.sh
├── systemverwaltung.service
└── public/
    └── index.html
```

## 2. Einmalig einrichten (SSH / PuTTY, als root)

```
cd /var/www/html/systemverwaltung
bash install.sh
```

Das Skript prüft Node.js, richtet den Autostart ein (systemd) und startet die App. Danach läuft sie dauerhaft – auch nach einem Server-Neustart.

## 3. Aufrufen

Im Browser: **http://dev2.karch-service.de:3010**
(im Firmennetz alternativ `http://SERVER-IP:3010`)

Falls die Seite nicht erreichbar ist, blockiert vermutlich die Firewall den Port:
`ufw allow 3010` (bzw. Port in der Firewall des Anbieters freigeben).
**Tipp:** Soll das System nur intern erreichbar sein, Port nur im Firmennetz/VPN freigeben.

## 4. Erste Anmeldung

Die Start-Passwörter sind dieselben wie bisher (dominik2026, christian2026, …, Team: karchies2026).
**Direkt nach dem Go-Live unter „Systempflege → Passwörter verwalten" neue Passwörter setzen** – die alten stehen in früheren Dateiversionen im Klartext.

Neu gegenüber der HTML-Datei:

- Zugriff einfach per Adresse im Browser – keine Datei mehr verschicken
- Zentrale Daten für alle Geräte, Aktualisierung automatisch jede Minute
- Passwörter änderbar (jeder das eigene unter „Mein Konto", Admins alle unter „Systempflege")
- Automatisches tägliches Backup in `/var/www/html/systemverwaltung/data/` (21 Tage aufbewahrt)
- Login-Sperre nach 10 Fehlversuchen (10 Minuten)
- Trello-/Meta-Zugangsdaten sehen nur Admins (Dominik, Christian)

## 5. Nützliche Befehle

```
systemctl status systemverwaltung     # Läuft die App?
systemctl restart systemverwaltung    # Neustart (z. B. nach Update)
journalctl -u systemverwaltung -n 50  # Log ansehen
```

**Update einspielen:** neue `public/index.html` bzw. `server.js` per WinSCP ersetzen, dann `systemctl restart systemverwaltung`. Die Daten in `data/` bleiben dabei erhalten.

**Port ändern:** in `/etc/systemd/system/systemverwaltung.service` die Zeile `Environment=PORT=3010` anpassen, dann `systemctl daemon-reload && systemctl restart systemverwaltung`.

## Wichtig: Datensicherung

Alles liegt in `data/db.json`. Diese Datei (oder den ganzen `data`-Ordner) regelmäßig zusätzlich extern sichern – z. B. gelegentlich per WinSCP herunterladen oder über „Systempflege → Backup herunterladen".

## Hinweis Datenschutz / Sicherheit

Die App läuft aktuell über **http** (unverschlüsselt). Im Firmennetz/VPN ist das in Ordnung. Soll sie offen aus dem Internet erreichbar sein, sollte HTTPS davor (z. B. nginx + Let's-Encrypt oder Subdomain über euer Hosting) – sagt einfach Bescheid, dann richten wir das als nächsten Schritt ein.

---

# UPDATE Juli 2026: Objektservice (QR-Zeiterfassung, Objekte, Nachweise)

Das Dashboard hat jetzt eine komplette Objektverwaltung mit QR-Zeiterfassung:
Die Kolonne scannt den QR-Aufkleber am Objekt und stempelt sich mit ihrer PIN
ein/aus (inkl. Leistungen, Fotos, GPS). Kunden scannen denselben Code und sehen
mit ihrem Objekt-Passwort den Leistungsnachweis. Neu im Menü (Gruppe OBJEKTSERVICE):
**Objekte & QR · Zeiterfassung · Arbeitsaufträge · Regienachweise · Objekt-Doku ·
Mängel · Kolonne & PINs · Import & Export** (Excel-Import der Objektliste,
Export für Abrechnung/Lohn, Leistungsnachweis als PDF).

## Update einspielen

1. Per WinSCP diese 3 Dateien in `/var/www/html/systemverwaltung/` ersetzen bzw. neu hochladen:
   - `server.js`
   - `public/index.html`
   - `public/einsatz.html`  (neu)
2. Auf dem Server (PuTTY, als root): `systemctl restart systemverwaltung`
3. Fertig. Die 13 Postbau-Objekte und die Kolonne (8 Mitarbeiter) sind beim ersten
   Start automatisch angelegt; vorhandene Daten bleiben unberührt.

## Direkt nach dem Update erledigen

- **Kolonnen-PINs ändern** („Kolonne & PINs"): Startbestand ist 2101–2108
  (Gutgesell, Reith, Schneider, Czyzewski, Bielecki, Bogdan, Melzer, Wirth).
  Jede PIN muss eindeutig sein – die PIN ist gleichzeitig die Anmeldung.
- **Kunden-Passwörter setzen** (je Objekt unter „Objekte & QR → Bearbeiten"):
  Startwert für alle Postbau-Objekte ist `postbau2026`.
- **QR-Aufkleber drucken**: „Objekte & QR → Alle QR-Aufkleber" (oder je Objekt).
  Die Codes zeigen auf `http://dev2.karch-service.de:3010/einsatz.html?o=…`
  und passen sich automatisch an, wenn die Adresse später wechselt (neu drucken!).
- **Sichtbarkeit**: Dominik/Christian/Helena sehen alle neuen Module, Andreas
  Objekte/Zeiten/Aufträge/Mängel. Falls unter „Systempflege" individuelle
  Freigaben gespeichert wurden, die neuen Module dort einmal anhaken.

## Wichtig: GPS braucht HTTPS

Browser geben den Standort **nur über HTTPS** frei. Solange die App über
`http://…:3010` läuft, werden Einsätze ohne GPS gespeichert (alles andere
funktioniert). Empfehlung als nächster Schritt: HTTPS-Subdomain einrichten
(z. B. `app.karch-service.de` per nginx + Let's Encrypt auf diesem Server) –
dann ist die Doku auch für den Winterdienst-Haftungsfall wasserdicht und die
QR-Codes bekommen eine saubere Adresse. Sagt Bescheid, das richten wir zusammen ein.

## Datenschutz / Hinweise

- Zeiterfassung mit GPS ist Mitarbeiter-Datenverarbeitung: Team vorab informieren
  (Zweck: Leistungsnachweis & Haftungsabsicherung). Die Kundenansicht zeigt
  bewusst **keine Mitarbeiternamen**.
- Kunden-Passwörter und PINs stehen für das Büro sichtbar in der Objekt- bzw.
  Kolonnenverwaltung (bewusst einfach gehalten). Dashboard-Passwörter bleiben
  verschlüsselt.
- Einsatz-/Mängelfotos liegen in `/var/www/html/systemverwaltung/data/fotos/` –
  bei der Datensicherung den ganzen `data`-Ordner mitnehmen.
- Mängel aus der QR-Seite erscheinen im Dashboard (Badge im Menü); die Anzeige
  aktualisiert sich automatisch jede Minute.

## Nachtrag: Kunden-Ebene & QR-Fix (13.07.)

„Objekte & QR" ist jetzt zweistufig aufgebaut – wie eure Ordnerstruktur:
**Kunden** (Bauverein SW eG 10036, Blanko, Hammelburg Omett, Hammelburg Rest,
Majo, Postbaugenossenschaft 10038, Privat SW, SWG, Wirth&sachs) → anklicken →
**Straßen/Objekte des Kunden**. Die 13 Straßen hängen an der Postbaugenossenschaft
10038 (wurde automatisch umbenannt). Kunden lassen sich anlegen, umbenennen
(zieht alle Straßen mit um) und löschen (nur wenn leer). Beim Excel-Import wählt
ihr den Ziel-Kunden aus. Außerdem behoben: QR-Codes erschienen auf den
Aufklebern doppelt.

**Einspielen:** `server.js` und `public/index.html` per WinSCP ersetzen,
dann `systemctl restart systemverwaltung`. (`einsatz.html` bleibt unverändert.)
Bereits gedruckte QR-Aufkleber bleiben gültig.
