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
Arbeitsverzeichnis anlegen
mkdir schulwirken && cd schulwirken
docker-compose.yml herunterladen
curl -o docker-compose.yml \
https://raw.githubusercontent.com/deinname/schulwirken/main/docker-compose.yml
.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
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
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
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.