Schulwirken in 10 Minuten einrichten

Schulwirken läuft als Docker-Container auf jedem Linux-Server. Du brauchst keinen .NET-Kenntnisse – nur Docker und einen Lizenzkey.

Voraussetzungen

  • Linux-Server (Ubuntu 22.04 oder neuer empfohlen)
  • Docker ≥ 24 und Docker Compose ≥ 2
  • Einen gültigen Schulwirken-Lizenzkey (hier kaufen)
  • Eine Domain oder Subdomain, die auf deinen Server zeigt

Installation

1

Arbeitsverzeichnis anlegen

mkdir schulwirken && cd schulwirken
2

docker-compose.yml herunterladen

curl -o docker-compose.yml \
  https://raw.githubusercontent.com/deinname/schulwirken/main/docker-compose.yml
3

.env-Datei anlegen

curl -o .env.example \
  https://raw.githubusercontent.com/deinname/schulwirken/main/.env.example
cp .env.example .env
nano .env

Konfiguration

Trage in der .env-Datei deine Werte ein:

# Lizenzkey (erhalten nach Kauf)
LICENSE_KEY=XXXX-XXXX-XXXX-XXXX

# Deine Domain (mit https://)
BASE_URL=https://schule.meinedomain.de

# Datenbankpasswort (sicheres Passwort wählen)
DB_PASSWORD=sicheres-passwort-hier

# JWT-Schlüssel (mindestens 32 zufällige Zeichen)
JWT_KEY=ersetze-mit-mind-32-zeichen-langem-key

# Optionaler App-Titel
APP_NAME=Meine Schulwirken-Instanz

Den JWT-Schlüssel kannst du z. B. so generieren:

openssl rand -base64 32

Lizenzkey aktivieren

Schulwirken prüft beim Start automatisch deinen Lizenzkey gegen license.schulwirken.de. Der Key wird an deine Domain gebunden – du musst nichts weiter tun.

Läuft die Lizenz ab, wechselt die App in den Lesezugriff-Modus. Du kannst die Lizenz jederzeit unter preise.html verlängern.

App starten

docker compose up -d

Beim ersten Start wird die Datenbank automatisch angelegt und alle Migrationen eingespielt. Das dauert einige Sekunden.

Logs ansehen:

docker compose logs -f app

Die App läuft auf Port 8080.

Erster Login

Nach dem Start erreichst du Schulwirken unter deiner konfigurierten BASE_URL (oder zunächst über http://server-ip:8080).

Das Admin-Konto wird beim ersten Start automatisch angelegt. Die Standard-Zugangsdaten findest du in den App-Logs:

docker compose logs app | grep "Admin account"

Bitte ändere das Passwort sofort nach dem ersten Login.

Updates einspielen

Schulwirken-Updates werden als neue Docker-Images veröffentlicht. Einspielen:

docker compose pull
docker compose up -d

Datenbank-Migrationen laufen beim App-Start automatisch. Deine Daten bleiben im benannten Volume mysql_data erhalten.

Reverse Proxy (HTTPS)

Schulwirken lauscht auf Port 8080. Stelle einen Reverse Proxy davor, der HTTPS terminiert.

Nginx (Beispiel)

server {
    listen 443 ssl;
    server_name schule.meinedomain.de;

    ssl_certificate     /etc/letsencrypt/live/schule.meinedomain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/schule.meinedomain.de/privkey.pem;

    location / {
        proxy_pass         http://127.0.0.1:8080;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto https;
    }
}

Mit 1Panel (empfohlen)

Wenn du 1Panel nutzt: Lege unter Websites → Reverse Proxy eine neue Website mit Ziel http://127.0.0.1:8080 an. SSL wird automatisch via Let’s Encrypt aktiviert. Stelle sicher, dass der Container im Netzwerk 1panel-network ist.

Datenbank-Backup

# Backup erstellen
docker compose exec db mysqldump -u root -p"$DB_PASSWORD" schulwirken \
  > backup_$(date +%Y%m%d).sql

# Backup einspielen
docker compose exec -T db mysql -u root -p"$DB_PASSWORD" schulwirken \
  < backup_20250101.sql

Troubleshooting

Die App startet nicht
Prüfe die Logs: docker compose logs app. Häufige Ursachen: falscher DB_PASSWORD, MySQL noch nicht bereit (kurz warten und erneut starten), oder ungültiger JWT_KEY.
Lizenz ungültig / Lesezugriff-Modus
Prüfe, ob LICENSE_KEY und BASE_URL in der .env korrekt sind. Der Server muss ausgehende HTTPS-Verbindungen zu license.schulwirken.de erlauben.
Port 8080 ist bereits belegt
Ändere in der docker-compose.yml den Host-Port: - "127.0.0.1:8081:8080" und passe deinen Reverse Proxy entsprechend an.

Weitere Fragen? Schreib uns an hallo@schulwirken.de.