Skip to content

baxterbln/veridato

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VeriDato (In der Entwicklung)

Ein praxisorientiertes Datenschutzmanagementsystem (DSMS) für kleine und mittlere Unternehmen. VeriDato unterstützt bei der DSGVO-konformen Umsetzung des betrieblichen Datenschutzes und enthält alle wesentlichen Funktionen, die DSGVO und BDSG an ein DSMS stellen.

Repository: https://github.com/baxterbln/dat-guard.git

Funktionsumfang

Modul Beschreibung
VVT Verarbeitungsverzeichnis (Art. 30 DSGVO) mit Genehmigung & Revisionierung
DPIA Datenschutz-Folgenabschätzung inkl. Schwellwertanalyse (Art. 35 DSGVO)
TOM Technische & organisatorische Maßnahmen mit Audit-Funktion
Datenweitergabe Auftragsverarbeitungsverträge & Drittlandtransfers
Vorfälle Datenpannen-Management (Art. 33/34 DSGVO)
Löschkonzept Löschfristen und -konzepte
Software-Verzeichnis Eingesetzte Software mit VVT-Zuordnung
Kontakte Auftragsverarbeiter, Verantwortliche, DSBs
Betroffenenanfragen Anfragen auf Auskunft, Löschung, Korrektur
Aufgaben Internes Aufgabenmanagement
Rollensystem Granulare Berechtigungsverwaltung je Team
Multi-Mandant Mehrere Teams/Unternehmen in einer Instanz

Tech-Stack

  • PHP 8.3 / Laravel 12
  • Datenbank: MySQL 8 (Docker) / SQLite (Entwicklung)
  • Auth: Laravel Breeze (Session-basiert)
  • Frontend: Vite + Tailwind CSS 3 + Alpine.js
  • PDF-Export: barryvdh/laravel-dompdf
  • Word-Export: phpoffice/phpword
  • Excel-Export: phpoffice/phpspreadsheet

Installation ohne Docker (manuell)

Voraussetzungen

  • PHP 8.2+ mit Extensions: pdo, pdo_mysql (oder pdo_sqlite), mbstring, xml, zip, gd, bcmath, intl, fileinfo, tokenizer, openssl
  • Composer 2
  • Node.js 18+ & npm
  • MySQL 8 / MariaDB 10.6+ (oder SQLite für Entwicklung)

1. Projekt einrichten

git clone https://github.com/baxterbln/dat-guard.git VeriDato
cd VeriDato

# PHP-Abhängigkeiten installieren
composer install

# Node-Abhängigkeiten installieren & Assets bauen
npm install && npm run build

2. Umgebung konfigurieren

cp .env.example .env
php artisan key:generate

.env anpassen:

APP_NAME=VeriDato
APP_URL=http://localhost

# Datenbank (MySQL/MariaDB)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=VeriDato
DB_USERNAME=VeriDato
DB_PASSWORD=secret

# E-Mail
MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_FROM_ADDRESS=noreply@VeriDato.de

SQLite (Entwicklung): DB_CONNECTION=sqlite — es wird automatisch database/database.sqlite verwendet.

3. Datenbank migrieren

php artisan migrate
php artisan storage:link

4. Entwicklungsserver starten

php artisan serve
# → http://localhost:8000

# Assets im Watch-Modus (separates Terminal):
npm run dev

5. Webserver (Nginx/Apache, Produktion)

Nginx-Beispiel:

server {
    listen 80;
    server_name example.com;
    root /pfad/zu/VeriDato/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Verzeichnis-Berechtigungen:

chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache

Installation mit Docker

Voraussetzungen

  • Docker 24+
  • Docker Compose v2

1. Konfiguration vorbereiten

git clone https://github.com/baxterbln/dat-guard.git VeriDato
cd VeriDato
cp .env.example .env

.env anpassen — mindestens diese Variablen setzen:

APP_KEY=         # wird beim ersten Start automatisch generiert
APP_URL=http://localhost:8080

# Datenbankzugangsdaten (MySQL – läuft automatisch als eigener Container)
DB_DATABASE=VeriDato
DB_USERNAME=VeriDato
DB_PASSWORD=sicherespasswort
DB_ROOT_PASSWORD=rootpasswort

# E-Mail
MAIL_HOST=smtp.beispiel.de
MAIL_PORT=587
MAIL_USERNAME=user@beispiel.de
MAIL_PASSWORD=mailpasswort
MAIL_FROM_ADDRESS=noreply@VeriDato.de

2. Container starten

docker compose up -d

Beim ersten Start führt der Container automatisch aus:

  • php artisan key:generate (sofern APP_KEY leer)
  • php artisan migrate --force
  • php artisan storage:link
  • php artisan config:cache & route:cache

Die Anwendung ist anschließend unter http://localhost:8080 erreichbar.

3. Status & Logs prüfen

# Container-Status
docker compose ps

# App-Logs
docker compose logs -f app

# MySQL-Logs
docker compose logs -f mysql

# Gesundheitsstatus (gibt {"status":"ok"} zurück)
curl http://localhost:8080/health

4. Artisan-Befehle ausführen

docker compose exec app php artisan migrate:status
docker compose exec app php artisan tinker

5. Datenpersistenz

Die docker-compose.yml legt zwei benannte Volumes an:

Volume Inhalt
VeriDato_storage Uploads, Cache, Logs
VeriDato_mysql MySQL-Datenbankdateien
# Volumes anzeigen
docker volume ls | grep VeriDato

# Datenbank-Backup (mysqldump)
docker compose exec mysql mysqldump -u root -p VeriDato > backup.sql

6. Updates einspielen

git pull
docker compose up -d --build
# Migrationen laufen automatisch beim Neustart

Erstkonfiguration

Nach der Installation die Anwendung unter der konfigurierten URL öffnen:

  1. Ersten Administrator anlegen (/setup) — nur beim allerersten Aufruf erreichbar; der angelegte Benutzer erhält automatisch Administrator-Rechte
  2. Einrichtungsassistent (/first-run) — Unternehmensdaten, Datenschutzbeauftragten und Systemeinstellungen festlegen; beim Abschluss wird das erste Team angelegt
  3. Weitere Benutzer — unter Administration → Benutzerverwaltung (/admin/users) anlegen; eine öffentliche Selbstregistrierung ist nicht vorgesehen
  4. Standard-Daten — beim Anlegen eines Teams werden automatisch DSGVO-konforme Referenzdaten eingetragen (Personengruppen, Datenkategorien, Rechtsgrundlagen etc.)

Entwicklung

# Tests ausführen
php artisan test

# Assets im Watch-Modus
npm run dev

# Datenbank zurücksetzen
php artisan migrate:fresh

Umgebungsvariablen (Übersicht)

Variable Beschreibung Standard
APP_KEY Laravel-Applikationsschlüssel (generiert)
APP_ENV Umgebung (local/production) local
APP_DEBUG Debug-Modus true
APP_URL Öffentliche URL der Anwendung http://localhost
DB_CONNECTION Datenbanktyp (sqlite/mysql/pgsql) sqlite
DB_DATABASE Datenbankname VeriDato
DB_USERNAME Datenbankbenutzer
DB_PASSWORD Datenbankpasswort
DB_ROOT_PASSWORD MySQL-Root-Passwort (Docker)
MAIL_MAILER Mail-Treiber (smtp/log/array) smtp
MAIL_FROM_ADDRESS Absenderadresse noreply@VeriDato.de
SESSION_LIFETIME Session-Dauer in Minuten 120
FILESYSTEM_DISK Speicherdisk (local/s3) local

Lizenz

VeriDato ist Open-Source-Software, lizenziert unter der AGPL-3.0 license.

Funktionsumfang

Modul Beschreibung
VVT Verarbeitungsverzeichnis (Art. 30 DSGVO) mit Genehmigung & Revisionierung
DPIA Datenschutz-Folgenabschätzung (Art. 35 DSGVO)
TOM Technische & organisatorische Maßnahmen mit Audit-Funktion
Datenweitergabe Auftragsverarbeitungsverträge & Drittlandtransfers
Vorfälle Datenpannen-Management (Art. 33/34 DSGVO)
Richtlinien Interne Datenschutzrichtlinien
Löschkonzept Löschfristen und -konzepte
Software-Verzeichnis Eingesetzte Software und Konfigurationen
Kontakte Auftragsverarbeiter, Verantwortliche, DSBs
Akademie Schulungsverwaltung mit Teilnahme-Tracking
Fragebogen Selbsteinschätzungs-Tests für Mitarbeiter
Betroffenenanfragen Anfragen auf Auskunft, Löschung, Korrektur
Formulare & Uploads Dokumente und Online-Formulare
Tätigkeitsberichte Berichtswesen
Aufgaben Internes Aufgabenmanagement
Assistent Einrichtungsassistent für neue Teams
Multi-Mandant Mehrere Teams/Unternehmen in einer Instanz

Tech-Stack

  • PHP 8.3 / Laravel 12
  • Datenbank: MySQL / MariaDB / SQLite
  • Auth: Laravel Breeze + JWT (php-open-source-saver/jwt-auth)
  • Frontend: Vite + Tailwind CSS 3 + Alpine.js
  • PDF-Export: barryvdh/laravel-dompdf
  • Excel-Export: phpoffice/phpspreadsheet

Installation ohne Docker (manuell)

Voraussetzungen

  • PHP 8.2+ mit Extensions: pdo, pdo_mysql (oder pdo_sqlite), mbstring, xml, zip, gd, bcmath, intl, fileinfo, tokenizer, openssl
  • Composer 2
  • Node.js 18+ & npm
  • MySQL 8 / MariaDB 10.6+ (oder SQLite für Entwicklung)

1. Projekt einrichten

git clone <repository-url> odc
cd odc

# PHP-Abhängigkeiten installieren
composer install

# Node-Abhängigkeiten installieren & Assets bauen
npm install && npm run build

2. Umgebung konfigurieren

cp .env.example .env
php artisan key:generate
php artisan jwt:secret

.env anpassen:

APP_NAME="Open Datenschutzcenter"
APP_URL=http://localhost

# Datenbank (MySQL/MariaDB)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=datenschutzcenter
DB_USERNAME=root
DB_PASSWORD=secret

# E-Mail
MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_FROM_ADDRESS=noreply@example.com

SQLite (Entwicklung): DB_CONNECTION=sqlite — es wird automatisch database/database.sqlite verwendet.

3. Datenbank migrieren

php artisan migrate
php artisan storage:link

4. Entwicklungsserver starten

php artisan serve
# → http://localhost:8000

# Assets im Watch-Modus (separates Terminal):
npm run dev

5. Scheduler einrichten (Produktion)

Für die Akademie-Benachrichtigungen (Mo–Fr 09:00 Uhr) einen Cron-Job anlegen:

* * * * * cd /pfad/zu/odc && php artisan schedule:run >> /dev/null 2>&1

6. Webserver (Nginx/Apache, Produktion)

Nginx-Beispiel:

server {
    listen 80;
    server_name example.com;
    root /pfad/zu/odc/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Verzeichnis-Berechtigungen:

chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache

Installation mit Docker

Voraussetzungen

  • Docker 24+
  • Docker Compose v2

1. Konfiguration vorbereiten

git clone <repository-url> odc
cd odc
cp .env.example .env

.env für Docker anpassen:

APP_KEY=         # wird automatisch gesetzt, kann leer bleiben
APP_URL=http://localhost:8080

# Datenbank (SQLite ist Standard, kein extra Container nötig)
DB_CONNECTION=sqlite

# Oder MySQL mit eigenem Datenbankcontainer:
# DB_CONNECTION=mysql
# DB_HOST=db
# DB_PORT=3306
# DB_DATABASE=datenschutzcenter
# DB_USERNAME=odc
# DB_PASSWORD=secret

MAIL_HOST=localhost
MAIL_PORT=587
MAIL_FROM_ADDRESS=noreply@example.com

2. Container starten

docker compose up -d

Beim ersten Start führt der Container automatisch aus:

  • php artisan key:generate & php artisan jwt:secret
  • php artisan migrate --force
  • php artisan storage:link
  • php artisan config:cache & route:cache & view:cache

Die Anwendung ist anschließend unter http://localhost:8080 erreichbar.

3. Status & Logs prüfen

# Container-Status
docker compose ps

# Logs
docker compose logs -f app

# Gesundheitsstatus (gibt {"status":"ok"} zurück)
curl http://localhost:8080/health

4. Artisan-Befehle ausführen

docker compose exec app php artisan migrate:status
docker compose exec app php artisan tinker

5. Daten persistieren

Die docker-compose.yml legt zwei benannte Volumes an:

  • odc_storage — Uploads und Cache
  • odc_database — SQLite-Datenbankdatei
# Volumes anzeigen
docker volume ls | grep odc

# Backup der SQLite-Datenbank
docker compose exec app cat database/database.sqlite > backup.sqlite

6. Updates einspielen

docker compose pull
docker compose up -d --build
# Migrationen laufen automatisch beim Start

Mit MySQL-Datenbank (optional)

docker-compose.yml um einen DB-Service erweitern:

services:
  db:
    image: mysql:8
    environment:
      MYSQL_DATABASE: datenschutzcenter
      MYSQL_USER: odc
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: rootsecret
    volumes:
      - odc_mysql:/var/lib/mysql

  app:
    # ... wie bisher ...
    depends_on:
      - db
    environment:
      DB_CONNECTION: mysql
      DB_HOST: db
      DB_DATABASE: datenschutzcenter
      DB_USERNAME: odc
      DB_PASSWORD: secret

volumes:
  odc_mysql:

Erstkonfiguration

Nach der Installation die Anwendung unter der konfigurierten URL öffnen:

  1. Registrierung: Erstes Benutzerkonto anlegen (/register)
  2. Team erstellen: Ein Team/Unternehmen anlegen — der Assistent führt durch die Grundkonfiguration
  3. Einstellungen: Unter Einstellungen Unternehmensdaten, Logo und Datenschutzbeauftragten hinterlegen
  4. Standard-Daten: Beim Anlegen eines Teams werden automatisch DSGVO-konforme Referenzdaten eingetragen (Personengruppen, Datenkategorien, Rechtsgrundlagen etc.)

Entwicklung

# Tests ausführen
php artisan test

# Statische Code-Analyse
vendor/bin/phpstan analyse app

# Assets im Watch-Modus
npm run dev

# Datenbank zurücksetzen
php artisan migrate:fresh

Umgebungsvariablen (Übersicht)

Variable Beschreibung Standard
APP_KEY Laravel-Applikationsschlüssel (generiert)
APP_ENV Umgebung (local/production) local
APP_DEBUG Debug-Modus true
DB_CONNECTION Datenbanktyp (sqlite/mysql/pgsql) sqlite
JWT_SECRET JWT-Signaturschlüssel (generiert)
JWT_ALGO JWT-Algorithmus HS256
MAIL_MAILER Mail-Treiber (smtp/log/array) smtp
SESSION_LIFETIME Session-Dauer in Minuten 120
FILESYSTEM_DISK Speicherdisk (local/s3) local

Lizenz

VeriDato ist Open-Source-Software, lizenziert unter der AGPL-3.0 license.

About

VeriDato richtet sich an Anwender und Unternehmen, die hohe Anforderungen an den Datenschutz und die damit verbundene Verarbeitung stellen. Das praxisorientierte DSMS enthält alle wichtigsten Funktionen, die die DSGVO, das BDSG an ein Datenschutzmanagement System stellen.

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages