Quelltext des aktuellen Standes
<div align="center">
<!-- Header Banner -->
<img src="public/icons/icon-512.svg" alt="OpenNIT Logo" width="120">
# OpenNIT
### Revisionssicheres IT-Dokumentations- & Asset-Management
*Self-Hosted. Audit-Ready. Open Source.*
---
[](https://www.php.net/)
[](https://www.mysql.com/)
[](LICENSE)
[](#audit--compliance)
[](#audit--compliance)
[](#audit--compliance)
[](#)
[](#audit-funktion)
[](#sicherheit)
[](#authentifizierung)
<br>
[Installation](#installation) · [Features](#features) · [Module](#module) · [Screenshots](#screenshots) · [Dokumentation](#weiterführende-dokumentation) · [Lizenz](#lizenz)
---
</div>
<br>
<div align="center">

<sub>Das konfigurierbare Dashboard mit Widgets für Tickets, To-Dos, Monitoring und Schnellzugriff. Weitere Ansichten unter [Screenshots](#screenshots).</sub>
</div>
<br>
## Warum OpenNIT?
| | |
|---|---|
| **Revisionssicher** | Unveränderlicher Audit-Log mit kryptografischer Hash-Chain — jede Änderung ist nachvollziehbar und manipulationsgeschützt |
| **Alles an einem Ort** | Assets, Verträge, IP-Adressen, Tickets, Passwörter, Dokumentation — keine Tool-Fragmentierung |
| **Selbst gehostet** | Volle Kontrolle über Daten und Infrastruktur. Kein Cloud-Zwang, kein Vendor-Lock-in |
| **Compliance-Ready** | Gebaut für ISO 27001, BSI-Grundschutz und SOC 2 Audits |
| **Modular** | 25+ Module — aktiviere nur, was du brauchst |
---
## Features
<table>
<tr>
<td width="50%" valign="top">
### Dokumentation & Wissen
- Hierarchische Themenstruktur (Topics & Pages)
- Versionsverlauf mit Diff-Vergleich & Wiederherstellung
- Rich-Text-Editor mit Bildverwaltung
- Seitensperrung bei gleichzeitiger Bearbeitung
- Netzwerkdiagramme via draw.io (self-hosted)
- Review-Workflow mit konfigurierbaren Intervallen
- Volltextsuche, Tags, Seitenvorlagen
- Modulübergreifende Suche (Header-Dropdown & `/search`)
- PDF- & ZIP-Export (AES-256-verschlüsselt)
</td>
<td width="50%" valign="top">
### Audit & Compliance
- Unveränderlicher Audit-Log mit Hash-Chain
- Mikrosekunden-genaue Zeitstempel
- Vollständige Alt-/Neu-Wert-Erfassung
- Risikobewertung pro Ereignis (low → critical)
- 10 Jahre Aufbewahrung (konfigurierbar), optionaler revisionssicherer Aufbewahrungs-Purge
- Hash-Chain-Verifikation (Manipulationserkennung) + optionale periodische Integritätsprüfung mit Alarm
- Optionale SIEM-/Log-Weiterleitung der Audit-Events (HTTPS-Webhook / Syslog)
- Audit-/Compliance-Bericht (ISO 27001 / BSI / DSGVO / GoBD) mit Live-Kennzahlen als PDF
- CSV/PDF-Export des Audit-Logs
</td>
</tr>
<tr>
<td valign="top">
### Asset-Management & Inventar
- IT-Asset-Inventar mit benutzerdefinierten Feldern
- Hersteller-DB mit Support-URLs
- Garantie-Abfrage (Dell, HP, HPE) — Dell gestaffelt per Scheduler, vorab gespeichert
- Erweiterte Filter, gespeicherte Ansichten & CSV-Export
- Datei-Anhänge pro Gerät
- Geräteübergabe mit digitalem Signatur-Workflow
- PowerShell-Sync (Hardware-Inventarisierung), GLPI-Import, Standortverwaltung
- MDM-Import: Microsoft Intune & Relution (Geräteabgleich, Hardware-Anreicherung, Richtlinien-Tab, unbekannte Geräte)
- Etikettendruck (QR-Code / Barcode, DYMO-Label-Formate)
- Leihgeräte mit Gruppen-Ausleihe, Überfälligkeits-Alerts, Leih-/Rückgabeschein (PDF) & Self-Service-Reservierung mit Freigabe-Workflow
</td>
<td valign="top">
### Sicherheit & Passwörter
- AES-256-GCM Passwort-Vault (persönlich + Team)
- PBKDF2-Schlüsselableitung, Session-only Keys
- TOTP für gespeicherte Zugangsdaten
- Browser-Erweiterung (Token-basiert)
- MFA: TOTP + WebAuthn/FIDO2 – optional erzwingbar (Admins oder alle lokalen Konten)
- Optionale Anmeldesicherheit: Passwort-Richtlinie & Account-Lockout (im Backend konfigurierbar)
- OAuth2 / OpenID Connect (Azure AD / Entra ID)
- CVE-Tracker für eingesetzte Software (NVD + optional BSI CERT-Bund)
- Abhängigkeits-Audit (`composer audit`) + SBOM automatisch in der CI
</td>
</tr>
<tr>
<td valign="top">
### Netzwerk & Infrastruktur
- IPAM: Subnetz-Verwaltung, DHCP-Bereiche, IP-Tracking
- Netzwerk-Scan per Web-Oberfläche oder Remote-Scan-Agent (Linux/Windows): Hostnamen, MAC, offene Ports, Banner, Gerätetyp- & Gateway-Erkennung
- DNS-Zonen-Import vom Windows-DNS per PowerShell-Agent (Zonen & Records)
- SSL/TLS-Zertifikat-Monitoring mit Ablaufwarnung
- Monitoring-Integration (Multi-Source): Zabbix, Prometheus Alertmanager, Grafana, Uptime Kuma, Checkmk/PRTG (generisch)
- UniFi-Controller-Integration (Multi-Site, Voucher, Auto-Sync)
- Veeam & Proxmox Backup Server (PBS) Backup-Überwachung
- Netzwerkdiagramme (draw.io)
- VMware vSphere / Hyper-V / Proxmox VE Integration
</td>
<td valign="top">
### Produktivität & Workflows
- **Ticketsystem** mit E-Mail-Eingang/-Ausgang (IMAP/SMTP, Microsoft 365 Graph/XOAUTH2 oder Google Workspace OAuth) & Multi-Bearbeiter
- Antwortvorlagen, Linked Tickets (Verknüpfen / Duplikat / Blockiert), Merge
- Wiedervorlage (Snooze): Tickets bis zu einem Datum aus „Mein Bereich" ausblenden, danach automatisch zurückholen
- Schnellaktionen aus dem Ticket: Bestellung, Änderung (ConfigLog), UniFi-Voucher und Leihgerät-Reservierung
- Automatische Zuweisung (Round-Robin über verfügbare Bearbeiter und/oder Standard-Bearbeiter pro Kategorie)
- SLA-Tracking pro Priorität, optional mit Pause bei „Warteschlange" und Geschäftszeiten-Kalender (Wochenplan + Feiertage)
- SLA-Eskalation bei Fristüberschreitung (Benachrichtigung, Markierung, Priorität anheben)
- In-App-/Web-Push-Benachrichtigungen für Bearbeiter (Zuweisung, Kundenantwort, Eskalation)
- Eigene Felder (Custom Fields) global oder pro Kategorie
- Aufwandserfassung (Live-Stoppuhr mit globaler Pill oder manuelle Minuten)
- CSAT-Bewertung nach Close mit anpassbarer öffentlicher Seite
- Kanban-Boards für Projekte
- **Anträge & Genehmigungen**: modularer Baukasten für Approval-Prozesse (Onboarding, Offboarding, Mobiles Arbeiten, Software-Einführung, Employee Change) – Vorlagen mit Formular-Builder (Abschnitte, bedingte Felder, Validierung), mehrstufige & parallele Stationen, Genehmiger per Rolle/Abteilung/Vorgesetztem oder externem Magic-Link (ohne Login), Fulfillment via Tickets/Kanban, Vertretung, Fristen/Eskalation, PDF-Nachweis & DSGVO-Anonymisierung
- Persönliche To-Do-Listen
- Vertragsverwaltung mit Auto-Erinnerungen, automatischer Verlängerung und einheitlicher Monatskosten-Anzeige (vergleichbar über alle Abrechnungsintervalle)
- Bestell-Board mit Status-KPIs, optionaler Teil-Lieferung, Weiterleiten per E-Mail, CSV-Export und Asset-Übernahme aus der Bestellung
- Budgetverwaltung mit Jahresbudgets, Soll-Ist-Vergleich und Belegen (Vorschau, Brutto/Netto)
- Fristen-Cockpit: modulübergreifende Übersicht aller Termine & Fristen, mit optionalem wöchentlichem E-Mail-Digest
- Wartungskalender mit Serienterminen
- Umschaltbare Icon-Darstellung im gesamten Frontend (monochrome Font-Awesome-Icons ↔ bunte Emojis)
- Datei-Explorer: Versionierung, Papierkorb, ordnerbasierte Berechtigungen (ACL), Drag & Drop, Thumbnails, Vorschau, ZIP-Download, geteilte Links & optionaler Virenscan (ClamAV)
- KI-Chat-Assistent (Anthropic/OpenAI/DeepSeek): Vollbild-Assistent, semantische Doku-Suche (RAG), Aktionen mit Berechtigungsprüfung, Datenschutz-Modus & Website-Bot
- API-Auto: KI-gestützte API-Integrationen zum Datenimport in vorhandene Module
</td>
</tr>
</table>
---
## Technologie-Stack
<div align="center">
[](#)
[](#)
[](#)
[](#)
[](#)
[](#)
</div>
| Komponente | Technologie |
|:---|:---|
| **Backend** | PHP 8.2+ (Custom MVC Framework) |
| **Datenbank** | MySQL 5.7+ / MariaDB 10.4+ |
| **PDF-Export** | dompdf 2.x |
| **Auth** | league/oauth2-client, thenetworg/oauth2-azure |
| **JWT** | firebase/php-jwt |
| **WebAuthn** | lbuchs/webauthn |
| **Verschlüsselung** | OpenSSL (AES-256-GCM), PBKDF2, Argon2ID |
| **Frontend** | HTML5, CSS3, Vanilla JS, AdminLTE |
| **Editor** | TinyMCE (optional) / wysiwyg.js (integriert) |
| **Diagramme** | draw.io (self-hosted) |
| **API-Doku** | Swagger UI (lokal gebündelt) |
| **KI (optional)** | Anthropic / OpenAI / DeepSeek / OpenAI-kompatibel (KI-Chat); Anthropic (API-Auto) |
---
## Systemvoraussetzungen
<table>
<tr>
<td width="50%" valign="top">
### Server
| Anforderung | Version |
|:---|:---|
| Betriebssystem | Linux (Ubuntu 22.04+ / Debian 12+) |
| Webserver | Apache 2.4+ (mod_rewrite) oder Nginx |
| PHP | 8.2 oder höher |
| Datenbank | MySQL 5.7+ oder MariaDB 10.4+ |
</td>
<td width="50%" valign="top">
### PHP-Extensions
```
php8.x-fpm php8.x-mysql
php8.x-json php8.x-mbstring
php8.x-openssl php8.x-pdo
php8.x-zip php8.x-curl
php8.x-xml php8.x-gd
```
</td>
</tr>
</table>
### Empfohlene Ressourcen
| Szenario | CPU | RAM | Disk |
|:---|:---:|:---:|:---:|
| Klein (<20 Benutzer) | 2 vCPU | 2 GB | 20 GB |
| Mittel (<100 Benutzer) | 4 vCPU | 4 GB | 50 GB |
| Gross (100+ Benutzer) | 8 vCPU | 8 GB | 100 GB |
---
## Installation
> Ausführliche Anleitung: **[docs/INSTALLATION.md](docs/INSTALLATION.md)**
```bash
# 1. Repository klonen
git clone <repository-url> /var/www/it-docs
cd /var/www/it-docs
# 2. PHP-Abhängigkeiten installieren
composer install --no-dev --optimize-autoloader
# 3. Storage-Verzeichnis anlegen (ausserhalb webroot!)
mkdir -p /var/www/it-docs-storage/{uploads,sessions,logs,cache}
chown -R www-data:www-data /var/www/it-docs-storage
chmod 750 /var/www/it-docs-storage
# 4. Webserver konfigurieren (siehe docs/INSTALLATION.md)
# 5. Installationsassistent aufrufen
# https://your-domain.com/install.php
# Der Assistent legt die .env samt APP_KEY selbst an - keine .env vorab
# von Hand erstellen, sonst verweigert er den Start.
# 6. Installationsdatei entfernen (Pflicht!)
rm public/install.php
```
### Cron-Scheduler einrichten
OpenNIT verwendet einen **zentralen Scheduler** — eine einzige Crontab-Zeile genügt:
```bash
* * * * * www-data /usr/bin/php /var/www/it-docs/bin/scheduler.php >> /var/www/it-docs-storage/logs/scheduler.log 2>&1
```
Alle Tasks (Intervall, Hintergrund, aktiv/inaktiv) werden bequem im Admin-UI unter **Admin > Cron-Jobs** verwaltet.
---
## Konfiguration
<details>
<summary><strong>Umgebungsvariablen (.env)</strong></summary>
```ini
# Anwendung
APP_NAME="OpenNIT"
APP_ENV=production
APP_DEBUG=false # NIEMALS true in Produktion!
APP_URL=https://docs.example.com
APP_KEY=<32-Zeichen-Zufallsschlüssel>
# Datenbank
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=it_docs
DB_USERNAME=it_docs_user
DB_PASSWORD=<sicheres-passwort>
DB_CHARSET=utf8mb4
# Azure AD / Entra ID (optional)
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
AZURE_REDIRECT_URI=https://docs.example.com/auth/callback
# Sicherheit
# Hinweis: Session-/CSRF-Lebensdauer, Rate-Limit, max. Upload-Größe und Audit-Aufbewahrung
# lassen sich auch im Backend unter Admin > Einstellungen > „Sicherheit & Sessions" pflegen
# (überschreibt diese .env-Werte via config/runtime.php). SESSION_SECURE/HSTS/CSP bleiben hier.
SESSION_LIFETIME=28800 # 8 Stunden
SESSION_SECURE=true # Nur HTTPS!
CSRF_TOKEN_LIFETIME=28800
RATE_LIMIT_REQUESTS=100
RATE_LIMIT_WINDOW=60
# Datei-Storage
STORAGE_PATH=/var/www/it-docs-storage
STORAGE_ENCRYPTION_KEY=<32-Zeichen-Zufallsschlüssel>
MAX_UPLOAD_SIZE=52428800 # 50 MB
# Audit
AUDIT_RETENTION_YEARS=10
```
</details>
---
## Sicherheit
> Vollständige Analyse: **[docs/SECURITY.md](docs/SECURITY.md)**
| Bereich | Implementierung |
|:---|:---|
| Passwort-Hashing | Argon2ID (64 MB memory, time 4, threads 3) |
| Datenverschlüsselung | AES-256-GCM |
| Schlüsselableitung | PBKDF2 |
| SQL-Injection | PDO Prepared Statements (Emulation off) |
| CSRF | Token-basiert mit `hash_equals()` |
| XSS | Output-Encoding + Content Security Policy |
| Session | HttpOnly, Secure, SameSite=Lax, 30-min-Rotation |
| File Uploads | Ausserhalb webroot, UUID-Namen, MIME-Check |
| HTTP-Header | HSTS, X-Frame-Options, CSP, Referrer-Policy |
| MFA | TOTP + WebAuthn/FIDO2 |
| Audit | Immutable Hash-Chain-Log |
### Checkliste Produktion
- [ ] `APP_DEBUG=false`
- [ ] `SESSION_SECURE=true`
- [ ] `STORAGE_PATH` ausserhalb webroot
- [ ] `install.php` gelöscht
- [ ] Rate Limiting aktiv
- [ ] HTTPS mit gültigem Zertifikat
- [ ] MFA für externe Benutzer erzwungen
> Anleitung für externen Zugriff: **[docs/EXTERNAL_ACCESS.md](docs/EXTERNAL_ACCESS.md)**
---
## Audit-Funktion
> Vollständige Dokumentation: **[docs/AUDIT.md](docs/AUDIT.md)**
```
Aktion --> Audit-Eintrag --> Hash(Eintrag + vorheriger Hash) --> Kette
```
Jede Benutzeraktion wird erfasst:
- **Wer**: Benutzer, IP-Adresse, User-Agent
- **Was**: Aktion, betroffenes Objekt, alter/neuer Wert (JSON)
- **Wann**: Zeitstempel mit Mikrosekunden-Präzision
- **Wie kritisch**: Risikostufe (low / medium / high / critical)
- **Verifizierbar**: Kryptografischer Hash-Fingerprint in der Chain
Zugriff via **Admin > Audit-Log** — filterbar, exportierbar als CSV/PDF.
Für Audits und die jährliche Wirtschaftsprüfung erzeugt der **Audit-Bericht-Generator** unter **Admin > Audit-Bericht** ein PDF-Nachweisdokument (ISO 27001 / BSI / DSGVO / GoBD) mit Live-Kennzahlen und Control-Mapping — siehe [docs/COMPLIANCE.md](docs/COMPLIANCE.md).
---
## Benutzerrollen & Berechtigungen
Capability-basiertes RBAC-System:
| Rolle | Beschreibung |
|:---|:---|
| **Admin** | Vollzugriff auf alle Funktionen und Einstellungen |
| **Editor** | Lesen und Bearbeiten von Dokumentation |
| **Viewer** | Nur-Lese-Zugriff |
| **Benutzerdefiniert** | Beliebige Kombination von Capabilities |
<details>
<summary><strong>Capabilities (Beispiele)</strong></summary>
`manage_users` · `manage_roles` · `view_audit` · `manage_assets` · `manage_contracts` · `manage_ipam` · `view_vault` · `manage_tickets` · `manage_backup` · `view_monitoring`
</details>
---
## Module
OpenNIT ist vollständig modular aufgebaut. Jedes Modul kann einzeln unter **Admin > Einstellungen > Module** aktiviert werden.
### Kern
| | Modul | Beschreibung |
|:---:|:---|:---|
|  | **Dashboard** | Konfigurierbare Übersichtsseite mit Widgets |
|  | **Dokumentation** | Hierarchisches Wiki mit Versionsverlauf & Review-Workflow |
### Betrieb
| | Modul | Beschreibung |
|:---:|:---|:---|
|  | **Tickets** | Ticketsystem mit Multi-Zuweisung, Auto-Zuweisung (Round-Robin / Kategorie), IMAP-Fetch, SLA-Tracking & -Eskalation, Geschäftszeiten, Agenten-Benachrichtigungen, eigene Felder, Stoppuhr, CSAT, Linked Tickets & Merge, Sammelstörung (eine Antwort an alle angehängten Meldungen, gemeinsames Schliessen) & wiederkehrende Tickets |
|  | **IT-Services** | Dienstkatalog mit SLAs und Abhängigkeits-Tracking |
|  | **Adressbuch** | Firmen- und Ansprechpartner-Datenbank |
|  | **Bestellungen** | Bestell-Board mit Status-KPIs, Teil-Lieferung, Weiterleiten per Mail, CSV-Export & Asset-Übernahme |
|  | **Budget** | Jahresbudgets mit Positionen, Soll-Ist-Vergleich & Belegen (Vorschau, Brutto/Netto) |
|  | **Verträge** | Vertragsverwaltung mit Kündigungsfristen, Auto-Verlängerung & vereinheitlichter Monatskosten-Anzeige |
|  | **Leihgeräte** | Übergabeprotokoll mit Signatur, Leih-/Rückgabeschein (PDF) & Self-Service-Reservierung mit Freigabe |
|  | **Statusseite** | Öffentliche Statusseite (ohne Login, iframe-einbettbar) mit Dienst-Status, Störungsmeldungen samt Verlauf, geplanten Wartungen, optionalen Dienst-Gruppen & 90-Tage-Uptime; optionale Kopplung an Wartungskalender & Konfigurationslog; Besucher können sich per E-Mail über Beginn und Behebung benachrichtigen lassen (Double-Opt-in); offene Monitoring-Alarme lassen sich als Störungsmeldung übernehmen |
### Infrastruktur
| | Modul | Beschreibung |
|:---:|:---|:---|
|  | **IP-Verwaltung** | Subnetz- & IP-Management mit Netzwerkscan |
|  | **SSL-Checker** | Zertifikat-Monitoring mit Ablaufwarnung |
|  | **Inventar** | Asset-Management mit Garantieabfrage & Etikettendruck |
|  | **Lager** | Hardware-Bestandsverwaltung |
|  | **Monitoring** | Zabbix-Integration mit Ereignisanzeige |
|  | **UniFi** | UniFi-Controller (Topology, Voucher, Multi-Site) |
|  | **Backup** | Veeam & Proxmox Backup Server (PBS) Überwachung & Auto-Sync |
|  | **Netzwerkpläne** | draw.io Diagramme mit Vorschau |
|  | **DNS-Zonen** | Import von Windows-DNS-Zonen & -Records per PowerShell-Agent, mit globaler Suche |
### Produktivität
| | Modul | Beschreibung |
|:---:|:---|:---|
|  | **Passwörter** | AES-256-GCM Vault (persönlich + Team) |
|  | **Kanban** | Boards für Aufgaben & Projekte |
|  | **Anträge & Genehmigungen** | Baukasten für Approval-Prozesse: Vorlagen mit Formular-Builder, mehrstufige/parallele Stationen, Genehmiger per Rolle/Abteilung/Vorgesetztem oder externem Magic-Link, Fulfillment via Tickets/Kanban, Vertretung, Fristen/Eskalation, PDF & DSGVO-Anonymisierung |
|  | **To-Do-Liste** | Persönliche Aufgabenlisten |
|  | **Datei-Explorer** | Zentraler Dateimanager mit Versionierung, Papierkorb, Ordner-ACL, geteilten Links & optionalem Virenscan |
|  | **Wartungskalender** | Kalenderansicht für IT-Ereignisse, inkl. Serientermine |
|  | **Fristen-Cockpit** | Modulübergreifende Übersicht aller Fristen (SSL, Verträge, Lizenzen, Garantien, Leihgeräte, Wartung, ISMS, Changes) mit optionalem wöchentlichem E-Mail-Digest |
### KI & Integrationen
| | Modul | Beschreibung |
|:---:|:---|:---|
|  | **AI-Assistent** | Vollbild-KI-Chat mit RAG-Doku-Suche, Aktionen, Datenschutz-Modus & Website-Bot (mehrere Anbieter) |
|  | **API-Auto** | KI-gestützte API-Integrationen: Verbindung beschreiben, KI leitet das Mapping ab, Daten werden in vorhandene Module importiert |
|  | **Hypervisor** | VMware vSphere / Hyper-V / Proxmox VE Übersicht |
### Administration
| | Modul | Beschreibung |
|:---:|:---|:---|
|  | **Personenverzeichnis** | Mitarbeiterverzeichnis (Azure AD / LDAP Sync) |
|  | **Konfigurationslog** | Protokollierung von Systemkonfigurationsänderungen; geplante Änderungen optional als Wartung auf der Statusseite (mit Dienst-Umschaltung) |
|  | **Lizenzmanager** | Software-Lizenzverwaltung; Microsoft-365-Abgleich (Sitze, optional auch wer welchen Platz hält); Abgleich gegen das Software-Inventar (gekaufte Plätze vs. tatsächliche Installation) |
|  | **Software-Inventar** | Welche Programme auf welchem Gerät installiert sind — gelesen vom Inventar-Agenten und/oder dem Intune-Abgleich (beide Quellen einzeln einschaltbar, standardmässig aus). Grundlage für den Lizenz-Abgleich und für die Zuordnung von CVE-Meldungen zu betroffenen Geräten |
|  | **CVE-Tracker** | Überwachung bekannter Sicherheitslücken (NVD + optional BSI CERT-Bund); mit dem Software-Inventar verbunden zeigt eine Meldung die betroffenen Geräte |
|  | **XDR-Warnungen** | Zentrales Board für Sicherheitswarnungen aus XDR-/EDR-Plattformen (Trend Vision One; weitere anbindbar), automatische Asset-Zuordnung, Triage & optionale Ticket-Erstellung |
|  | **Informationssicherheit** | ISMS nach ISO 27001:2022: Risikoregister (5×5), Annex-A-Controls & SoA, Maßnahmenplan, Verknüpfung zu Assets/CVE/Verträgen, Audit-Exporte (CSV/PDF) |
|  | **Telefonbuch** | Internes Verzeichnis mit Durchwahlen |
|  | **Cron-Verwaltung** | Überwachung automatisierter Tasks |
|  | **Update-Manager** | Integrierter Update-Mechanismus |
> **Standardmässig deaktiviert (Opt-in):** Hypervisor, UniFi, Backup, XDR-Warnungen, KI-Chat, Lizenzmanager, Software-Inventar, Konfigurationslog, Telefonbuch, DNS-Zonen, Informationssicherheit (ISMS), Statusseite sowie API-Auto — erfordern externe Systeme, sind öffentlich erreichbar bzw. nischig und werden bei Bedarf unter **Admin > Einstellungen > Module** aktiviert.
---
## Screenshots
Ein Blick in die Oberfläche – ein Screenshot pro Modul, gruppiert wie die Modul-Liste oben. Die mit externen Systemen verbundenen Module (Monitoring, UniFi, Backup, Hypervisor, Netzwerkpläne) zeigen ihren Leer-/Verbindungszustand.
<details open>
<summary><strong>Kern</strong></summary>
<br>
| Dashboard | Dokumentation |
|:---:|:---:|
|  |  |
| Konfigurierbare Übersicht mit Widgets | Hierarchisches Wiki mit Themengebieten |
</details>
<details>
<summary><strong>Betrieb</strong></summary>
<br>
| Tickets | IT-Services |
|:---:|:---:|
|  |  |
| Helpdesk mit SLA, Kategorien & Multi-Zuweisung | Dienstkatalog mit Erreichbarkeit |
| Adressbuch | Bestellungen |
|:---:|:---:|
|  |  |
| Firmen- und Ansprechpartner-Datenbank | Bestell-Board mit Freigabeprozess |
| Verträge | Leihgeräte |
|:---:|:---:|
|  |  |
| Laufzeiten, Kündigungsfristen & Erinnerungen | Übergabeprotokoll & Self-Service-Verleih |
</details>
<details>
<summary><strong>Infrastruktur</strong></summary>
<br>
| IP-Verwaltung (IPAM) | SSL-Checker |
|:---:|:---:|
|  |  |
| Subnetze, VLANs & Auslastung | TLS-Monitoring mit Grade & Ablaufwarnung |
| Inventar | Lager |
|:---:|:---:|
|  |  |
| Asset-Management mit Kategorien & Garantie | Hardware-Bestand mit Mindestmengen |
| Monitoring | Netzwerkpläne |
|:---:|:---:|
|  |  |
| Zabbix-Integration mit Ereignisanzeige | draw.io-Diagramme (self-hosted) |
| UniFi | Backup |
|:---:|:---:|
|  |  |
| UniFi-Controller (Topology, Voucher) | Veeam & Proxmox Backup Server |
</details>
<details>
<summary><strong>Produktivität</strong></summary>
<br>
| Passwort-Vault | Kanban |
|:---:|:---:|
|  |  |
| AES-256-GCM Tresor (persönlich + Team) | Boards für Aufgaben & Projekte |
| To-Do-Liste | Datei-Explorer |
|:---:|:---:|
|  |  |
| Persönliche Aufgaben mit Fälligkeiten | Zentraler, gesicherter Dateimanager |
| Wartungskalender | |
|:---:|:---:|
|  | |
| Termine inkl. SSL-/Vertrags-Abläufen | |
</details>
<details>
<summary><strong>KI & Integrationen</strong></summary>
<br>
| KI-Assistent | Hypervisor |
|:---:|:---:|
|  |  |
| Kontextbezogener Chat zu Doku, Assets & mehr | VMware vSphere / Hyper-V / Proxmox VE |
</details>
<details>
<summary><strong>Administration</strong></summary>
<br>
| Personenverzeichnis | Telefonbuch |
|:---:|:---:|
|  |  |
| Mitarbeiterverzeichnis (Azure AD / LDAP Sync) | Internes Verzeichnis mit Durchwahlen |
| Lizenzmanager | CVE-Tracker |
|:---:|:---:|
|  |  |
| Lizenzen, Seats & Kosten im Blick | Überwachung bekannter Sicherheitslücken |
| Konfigurationslog | Budgetverwaltung |
|:---:|:---:|
|  |  |
| Protokoll von Konfigurationsänderungen | Budgets, Ausgaben & Reports |
| Cron-Verwaltung | Audit-Log |
|:---:|:---:|
|  |  |
| Überwachung automatisierter Tasks | Unveränderlicher Hash-Chain-Audit-Log |
</details>
---
## CLI-Tools
### Zentraler Scheduler (empfohlen)
```bash
# Eine einzige Crontab-Zeile — alle Tasks per Admin-UI steuerbar
* * * * * www-data /usr/bin/php /var/www/it-docs/bin/scheduler.php >> /var/www/it-docs-storage/logs/scheduler.log 2>&1
```
### Legacy-Scripts
Bleiben funktionsfähig, können aber nach Umstellung auf den Scheduler entfernt werden:
| Script | Beschreibung |
|:---|:---|
| `fetch-tickets.php` | Tickets per IMAP abrufen |
| `send-notifications.php` | E-Mail-Benachrichtigungen versenden |
| `sync-directory.php` | Azure AD / LDAP-Sync |
| `sync-backup.php` | Veeam Backup-Sync |
| `relution-sync.php` | Relution MDM-Gerätesync |
| `cve-refresh.php` | CVE-Cache aktualisieren |
| `generate-vapid-keys.php` | VAPID-Schlüssel generieren (einmalig) |
| `run-update.php` | System-Update (einmalig, manuell) |
---
## WordPress-Integration
Das Verzeichnis `wordpress-plugin/opennit-connector/` enthält ein WordPress-Plugin zur Einbindung von OpenNIT-Daten in WordPress-Seiten.
- Token-basierter API-Zugriff
- Shortcodes für Dokumentation, Assets und IT-Services
- Geeignet für Intranet-Portale auf WordPress-Basis
- Leihgeräte-Self-Service: Nutzer können Geräte reservieren bzw. anfragen (mit Freigabe durch das IT-Team)
- Website-KI-Bot: öffentlicher Chat-Bot auf der WordPress-Seite über die abgesicherte Bot-API (Token mit `assistant`-Scope, HMAC-Signatur, Nonce-Replay-Schutz, Rate-Limit)
> **Lizenz:** Das Plugin steht als eigenständiges Werk unter **GPL-2.0-or-later** (Lizenztext:
> `wordpress-plugin/opennit-connector/LICENSE`), nicht unter der AGPL-3.0 des Servers. Es
> kommuniziert ausschließlich über HTTP mit OpenNIT und bindet keinen Servercode ein; die
> abweichende Lizenz erfüllt die Vorgabe von WordPress.org („GPLv2 oder später").
Die WordPress-Endpunkte sind Teil der allgemeinen **REST-API** und von jedem System nutzbar, nicht nur von WordPress. Eine interaktive **Swagger-UI** und der OpenAPI-Export stehen im Backend unter **Admin → API** bereit.
**Authentifizierung:** Ein Bearer-Token mit passendem Scope allein genügt **nicht**. Jede Anfrage muss zusätzlich HMAC-signiert sein – über die Header `X-OpenNIT-Timestamp`, `X-OpenNIT-Nonce` und `X-OpenNIT-Signature`. Die Signatur bindet die im Aufruf angegebene Person an das Signing-Secret des Tokens; ohne sie könnte jeder Token-Inhaber im Namen beliebiger Personen lesen und handeln. Fehlen die Header, antwortet die API mit `401` – auch bei gültigem Token.
Ausgenommen sind die Endpunkte der Sync-Agenten (IPAM-Scan, DNS-Import): Sie kommen mit dem Bearer-Token aus, da die Agent-Skripte nicht signieren.
Die genaue Bildung der Signatur – kanonische Zeichenkette, Reihenfolge der Bestandteile und ein lauffähiges Beispiel – steht in der Swagger-Beschreibung unter **Admin → API** im Abschnitt „Signatur". Token und Signing-Secret werden beim Anlegen eines Tokens **einmalig** angezeigt.
---
## Weiterführende Dokumentation
| Dokument | Inhalt |
|:---|:---|
| [docs/INSTALLATION.md](docs/INSTALLATION.md) | Schritt-für-Schritt-Installation |
| [docs/SECURITY.md](docs/SECURITY.md) | Sicherheitsanalyse & Härtung |
| [docs/EXTERNAL_ACCESS.md](docs/EXTERNAL_ACCESS.md) | Konfiguration für externen Zugriff |
| [docs/m365-oauth-email.md](docs/m365-oauth-email.md) | E-Mail-Versand/-Abruf via Microsoft 365 (Graph / XOAUTH2) |
| [docs/google-oauth-email.md](docs/google-oauth-email.md) | E-Mail-Versand/-Abruf via Google Workspace (Gmail / XOAUTH2) |
| [docs/AUDIT.md](docs/AUDIT.md) | Audit-Log & Compliance-Nachweise |
| [docs/COMPLIANCE.md](docs/COMPLIANCE.md) | Control-Mapping (ISO 27001 / BSI / DSGVO / GoBD) & Audit-Bericht-Generator |
| [docs/OPEN_SOURCE_LICENSES.md](docs/OPEN_SOURCE_LICENSES.md) | Open-Source-Lizenzen |
| [STYLEGUIDE.md](STYLEGUIDE.md) | UI/UX-Designrichtlinien |
---
## Lizenz
<div align="center">
**GNU Affero General Public License v3.0 (AGPL-3.0)**
[](LICENSE)
</div>
| Erlaubt | Bedingung |
|:---|:---|
| Kostenlose Nutzung, Kopie & Weitergabe | — |
| Modifikation | Änderungen unter AGPL-3.0 veröffentlichen |
| Kommerzieller Einsatz | — |
| Private / interne Nutzung | Keine Offenlegungspflicht |
| Betrieb als Netzwerkdienst (SaaS) | Quellcode muss Nutzern zugänglich sein |
<details>
<summary><strong>Drittanbieter-Lizenzen</strong></summary>
| Lizenz | Bibliotheken |
|:---|:---|
| **MIT** | AdminLTE, TinyMCE, QRCode.js, Font Awesome Free (Code), lbuchs/webauthn, league/oauth2-client, minishlink/web-push, thenetworg/oauth2-azure, guzzlehttp/guzzle, masterminds/html5 |
| **Apache-2.0** | vis-network, ZXing Browser, Swagger UI, draw.io |
| **BSD-3-Clause** | firebase/php-jwt, vlucas/phpdotenv |
| **LGPL-2.1/3.0** | dompdf, dompdf/php-svg-lib, dompdf/php-font-lib |
| **SIL OFL 1.1** | Source Sans Pro (lokal gebündelt), Font Awesome (Schriftdateien) |
| **CC BY 4.0** | Font Awesome (Icons) |
> Externe Dienste (nur bei Konfiguration aktiv): **Anthropic-API** (KI-Chat, API-Auto), **Microsoft Graph** (M365 / Intune / Lizenzsync). Optional und separat betrieben: **ClamAV** (GPL-2.0, Virenscan im Datei-Explorer; wird nicht gebündelt).
Vollständiger Text: [LICENSE](LICENSE) · Attributionen: [NOTICE.md](NOTICE.md) · Alle Lizenzen: [licenses/](licenses/)
</details>
---
<div align="center">
**[Installation](docs/INSTALLATION.md)** · **[Sicherheit](docs/SECURITY.md)** · **[Audit](docs/AUDIT.md)** · **[Lizenz](LICENSE)**
Made with care in Germany.
</div>