Self-Hosting

Auf deinem Server, mit deiner Datenbank

Kein abgespecktes „Community Edition“ — derselbe Code, der auf consented.eu läuft.

Voraussetzungen
  • PHP 8.3 oder neuer mit den Erweiterungen pdo_mysql, mbstring, dom, json
  • MariaDB 10.11+ oder MySQL 8
  • Ein Webserver, dessen Document Root auf public/ zeigt (Apache mit mod_rewrite oder nginx)
  • Redis — optional. Ohne Redis läuft alles über die Datenbank.
  • Kein Node, kein Composer, kein Build-Schritt. Die Runtime ist fertig gebaut im Repository.
Installation
# 1. Code holen
git clone https://github.com/LW-IT-Solutions/consented-eu.git /var/www/consented
cd /var/www/consented

# 2. Konfiguration anlegen und Secrets erzeugen
cp .env.example .env
php -r 'echo "APP_KEY=", base64_encode(random_bytes(32)), PHP_EOL;'
php -r 'echo "PASSWORD_PEPPER=", base64_encode(random_bytes(32)), PHP_EOL;'
php -r 'echo "IP_HASH_PEPPER=", base64_encode(random_bytes(32)), PHP_EOL;'
# Werte in .env eintragen, dazu DB_NAME / DB_USER / DB_PASS und APP_URL

# 3. Datenbank aufsetzen
php bin/migrate
php bin/seed

# 4. Schreibrechte für den Webserver-Nutzer
chgrp -R www-data storage .env
chmod -R 775 storage
chmod 640 .env

# 5. Document Root auf public/ zeigen lassen — fertig.
Apache-Beispiel
<VirtualHost *:443>
    ServerName consent.example.com
    DocumentRoot /var/www/consented/public

    <Directory /var/www/consented/public>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    SSLEngine on
    SSLCertificateFile    /etc/ssl/consent.example.com.cer
    SSLCertificateKeyFile /etc/ssl/consent.example.com.key
    Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

Wichtig: Nur public/ darf erreichbar sein. Läge das Projektverzeichnis im Document Root, wäre .env über HTTP abrufbar.

Laufender Betrieb
# Abgelaufene Sitzungen, Rate-Limits und Einwilligungen aufräumen
*/15 * * * * php /var/www/consented/bin/worker >/dev/null 2>&1

Der Worker löscht abgelaufene Sitzungen und Tokens und wendet die Aufbewahrungsfrist auf das Einwilligungsprotokoll an (CONSENT_RETENTION_MONTHS, Standard 36 Monate).

Lizenz
Der Code steht unter der MIT-Lizenz — privat wie gewerblich, gehostet bei uns oder auf deiner eigenen Infrastruktur, ohne Rückfrage und ohne Gebühr. Du darfst ihn einsetzen, verändern, weitergeben und in eigene Produkte einbauen; die einzige Bedingung ist der Copyright-Hinweis. Der Dienste-Katalog steht getrennt davon unter der Open Database License 1.0: benutzen darfst du ihn genauso frei, nur eine veränderte Fassung, die du veröffentlichst, muss wieder unter ODbL verfügbar sein.