🔐 Enterprise-Grade Passwort- & Datenverwaltung
Nebu Secure ist eine moderne, selbst-gehostete Passwort- und Geheimnisverwaltungsplattform.
Entwickelt für Teams und Unternehmen — mit Envelope Encryption, Zwei-Faktor-Authentifizierung,
Audit-Logging und einem granularen Berechtigungssystem.
| 🔑 | Envelope Encryption | Jeder Tresor-Eintrag wird mit einem individuellen Data-Key verschlüsselt, der durch einen rotierbaren Master-Key geschützt ist (AES-256-GCM). |
| 🛡️ | Zwei-Faktor-Auth | TOTP-basierte 2FA via Laravel Fortify mit Backup-Codes und Bestätigungsdialog. |
| 👥 | Benutzer & Gruppen | Einträge können einzelnen Benutzern oder Gruppen zugewiesen werden. Multi-Gruppen-Zuweisung möglich. |
| ⭐ | Favoriten & Typen | Tresor-Einträge als Favoriten markieren. Typen: Login, API-Key, SSH-Key, Notiz, Kreditkarte, Sonstiges. |
| 🔗 | Einmal-Links | Sichere Share-Links die nach einmaligem Aufruf automatisch verfallen. |
| 📋 | Audit-Logging | Alle sicherheitsrelevanten Aktionen werden protokolliert — Login, Entschlüsselung, Änderungen, Admin-Aktionen. |
| 🎨 | Dark/Light Mode | Vollständige Theme-Unterstützung mit System-Erkennung. |
| 🖼️ | Logo-Upload | Eigenes Firmenlogo per Datei-Upload oder URL in den Admin-Einstellungen hinterlegen. |
| 🌐 | Vollständig auf Deutsch | Alle Oberflächen, Formulare, Fehlermeldungen und E-Mails in Deutsch. |
| 🐳 | Docker-Ready | Multi-Stage Dockerfile mit Nginx, PHP-FPM und Supervisor — Production-ready. |
| Komponente | Technologie |
|---|---|
| Backend | Laravel 12, PHP 8.2+ |
| Frontend | React 19, TypeScript 5, Inertia.js 2 |
| Styling | Tailwind CSS 4, Radix UI, shadcn/ui |
| State | TanStack React Query 5 |
| Auth | Laravel Fortify (Login, 2FA, Password Reset) |
| API | Laravel Sanctum (SPA Cookie Auth) |
| Encryption | AES-256-GCM Envelope Encryption |
| Database | SQLite (Dev) / MySQL / PostgreSQL (Prod) |
| DevOps | Docker, Docker Compose, Dokploy-kompatibel |
- PHP ≥ 8.2 mit
pdo_sqlite,mbstring,bcmath - Composer 2.x
- Node.js ≥ 20 mit npm
- SQLite (Standard) oder MySQL/PostgreSQL
# Repository klonen
git clone https://github.com/nebuliton/nebu-secure.git
cd nebu-secure
# PHP-Dependencies installieren
composer install
# Frontend-Dependencies installieren & bauen
npm install
npm run build
# Umgebungskonfiguration
cp .env.example .env
php artisan key:generate
# Datenbank migrieren & Seed-Daten laden
php artisan migrate --seed
# Storage-Link erstellen
php artisan storage:linkIn .env einen Verschlüsselungsschlüssel setzen (Base64-encoded, 32 Bytes):
VAULT_MASTER_KEYS=1:deinBase64EncodedKey==
VAULT_CURRENT_KEY_VERSION=1Tipp: Key generieren mit
openssl rand -base64 32
# Alles auf einmal (Server + Queue + Vite)
composer dev
# Oder einzeln
php artisan serve # Backend auf :8000
npm run dev # Vite-Dev-Server
php artisan queue:work # Queue-Workerdocker-compose up -dDie Anwendung läuft auf Port 18080 (konfigurierbar via APP_HTTP_PORT in .env).
Siehe DOKPLOY.md für eine detaillierte Anleitung.
nebu-secure/
├── app/
│ ├── Actions/Fortify/ # Auth-Aktionen (Register, Password Reset)
│ ├── Http/Controllers/
│ │ ├── Api/ # REST API Controller
│ │ ├── Api/Admin/ # Admin API Controller
│ │ └── Settings/ # User-Settings Controller
│ ├── Models/ # Eloquent Models
│ ├── Policies/ # Authorization Policies
│ └── Services/ # Business Logic (Crypto, Audit, Settings)
├── config/
│ └── vault.php # Encryption Key-Konfiguration
├── database/migrations/ # Datenbank-Migrationen
├── resources/js/
│ ├── pages/ # React-Seiten (Inertia)
│ │ ├── admin/ # Admin-Dashboard
│ │ ├── auth/ # Login, Register, 2FA, Password Reset
│ │ ├── settings/ # Profil, Passwort, 2FA, Appearance
│ │ └── vault/ # Benutzer-Tresor
│ ├── components/ # Wiederverwendbare UI-Komponenten
│ ├── layouts/ # App- und Settings-Layouts
│ └── types/ # TypeScript Type-Definitionen
├── routes/
│ ├── web.php # Web-Routes
│ ├── api.php # API-Routes
│ └── settings.php # Settings-Routes
├── docker/ # Docker-Konfiguration
├── Dockerfile # Multi-Stage Production Build
└── docker-compose.yml # Compose für Production
┌──────────────────────────────────────────────────┐
│ Master Key (env/file, rotierbar) │
│ ┌────────────────────────────────────────────┐ │
│ │ Wrapped Data Key (pro Tresor-Eintrag) │ │
│ │ ┌──────────────────────────────────────┐ │ │
│ │ │ Encrypted Password / Value / Notes │ │ │
│ │ └──────────────────────────────────────┘ │ │
│ └────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘
- AES-256-GCM für alle Verschlüsselungsoperationen
- Individueller Data Key pro Eintrag, geschützt durch den Master Key
- Master Key kann versioniert und rotiert werden ohne Daten zu re-encrypten
- Geheimdaten werden niemals im Klartext gespeichert oder in API-Responses zurückgegeben
- Entschlüsselung nur über explizite Reveal-Aktion mit Audit-Trail
- ✅ Rate Limiting auf Login (10/min) und 2FA (8/min)
- ✅ Passwortrichtlinien (min. 12 Zeichen, Groß-/Kleinbuchstaben, Zahlen, Sonderzeichen)
- ✅ CSRF-Schutz auf allen Formularen
- ✅ Account-Deaktivierung durch Admins
- ✅ Einmal-Share-Links mit automatischem Verfall
- ✅ Vollständiges Audit-Logging aller sensitiven Operationen
# Migrationen ausführen
php artisan migrate
# Migrationen zurücksetzen & neu ausführen
php artisan migrate:fresh --seed
# Cache leeren
php artisan optimize:clear
# TypeScript-Fehler prüfen
npm run types
# Code-Formatting
npm run format
composer lint
# Tests ausführen
php artisan test
# Passwort eines Users via Tinker zurücksetzen
php artisan tinker
> User::where('email','user@example.com')->first()->forceFill(['password'=>Hash::make('NeuesPasswort123!')])->save();Dieses Projekt steht unter der MIT Lizenz.
Pull Requests und Issues sind jederzeit willkommen!
- Fork erstellen
- Feature-Branch anlegen (
git checkout -b feature/mein-feature) - Änderungen committen (
git commit -m 'feat: Mein neues Feature') - Branch pushen (
git push origin feature/mein-feature) - Pull Request öffnen
Erstellt mit ❤️ von Nebuliton.io
