Skip to content

nebuliton/nebu-secure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nebu Secure Logo

Nebu Secure

🔐 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.


✨ Features

🔑 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.

🏗️ Tech-Stack

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

🚀 Schnellstart

Voraussetzungen

  • PHP ≥ 8.2 mit pdo_sqlite, mbstring, bcmath
  • Composer 2.x
  • Node.js ≥ 20 mit npm
  • SQLite (Standard) oder MySQL/PostgreSQL

Installation

# 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:link

Vault Master-Key konfigurieren

In .env einen Verschlüsselungsschlüssel setzen (Base64-encoded, 32 Bytes):

VAULT_MASTER_KEYS=1:deinBase64EncodedKey==
VAULT_CURRENT_KEY_VERSION=1

Tipp: Key generieren mit openssl rand -base64 32

Entwicklungsserver starten

# 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-Worker

🐳 Docker

Docker Compose (empfohlen)

docker-compose up -d

Die Anwendung läuft auf Port 18080 (konfigurierbar via APP_HTTP_PORT in .env).

Deployment mit Dokploy

Siehe DOKPLOY.md für eine detaillierte Anleitung.


📂 Projektstruktur

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

🔐 Sicherheitsarchitektur

Envelope Encryption

┌──────────────────────────────────────────────────┐
│  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

Weitere Sicherheitsmaßnahmen

  • ✅ 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

🛠️ Nützliche Befehle

# 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();

📄 Lizenz

Dieses Projekt steht unter der MIT Lizenz.


🤝 Mitwirken

Pull Requests und Issues sind jederzeit willkommen!

  1. Fork erstellen
  2. Feature-Branch anlegen (git checkout -b feature/mein-feature)
  3. Änderungen committen (git commit -m 'feat: Mein neues Feature')
  4. Branch pushen (git push origin feature/mein-feature)
  5. Pull Request öffnen

Erstellt mit ❤️ von Nebuliton.io

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors