Plugin-Verwaltung
edulution Moodle verwaltet Plugins automatisch über eine zentrale Konfigurationsdatei.
Übersicht
Der Plugin-Manager:
- Installiert fehlende Plugins beim Container-Start
- Aktualisiert alle Plugins bei Moodle-Version-Änderung
- Entfernt nicht mehr benötigte Plugins
- Unterstützt gepinnte Versionen
- Respektiert Entwickler-Plugins nur in Development
Konfigurationsdatei
plugins.json
Die Standard-Konfigurationsdatei ist config/plugins.json:
{
"plugins": [
{
"component": "mod_attendance",
"name": "Anwesenheit",
"required": true,
"description": "Anwesenheitstracking für Kurse"
},
{
"component": "mod_questionnaire",
"name": "Fragebogen",
"required": true,
"description": "Umfragen und Feedback erstellen"
},
{
"component": "block_xp",
"name": "Level Up XP",
"required": false,
"description": "Gamification mit Erfahrungspunkten"
}
]
}
Plugin-Optionen
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
component | string | Ja | Plugin-Komponente (z.B. mod_attendance) |
name | string | Nein | Anzeigename |
required | boolean | Nein | true = Fehler wenn Installation fehlschlägt |
description | string | Nein | Beschreibung |
dev_only | boolean | Nein | Nur in Development installieren |
version | string | Nein | Gepinnte Version |
source_url | string | Nein | Alternative Download-URL |
Erweiterte Beispiele
{
"plugins": [
{
"component": "mod_attendance",
"name": "Anwesenheit",
"required": true
},
{
"component": "theme_boost_union",
"name": "Boost Union Theme",
"required": false,
"version": "2024042200"
},
{
"component": "local_adminer",
"name": "Adminer",
"required": false,
"dev_only": true,
"description": "Datenbank-Management (nur Development)"
},
{
"component": "mod_custom_plugin",
"name": "Custom Plugin",
"required": true,
"source_url": "https://github.com/org/plugin/archive/main.zip"
}
]
}
plugins.csv (Alternative)
Alternativ können Sie eine CSV-Datei verwenden:
component,name,required,description,dev_only,version
mod_attendance,Anwesenheit,true,Anwesenheitstracking,,
mod_questionnaire,Fragebogen,true,Umfragen erstellen,,
block_xp,Level Up XP,false,Gamification,,
local_adminer,Adminer,false,DB-Management,true,
Plugin-Typen
Aktivitäten (mod_)
{
"component": "mod_attendance",
"name": "Anwesenheit"
}
Beliebte Aktivitäts-Plugins:
mod_attendance- Anwesenheitstrackingmod_questionnaire- Fragebögenmod_hvp- H5P Interactive Contentmod_bigbluebuttonbn- BigBlueButton Integration
Blöcke (block_)
{
"component": "block_xp",
"name": "Level Up XP"
}
Beliebte Block-Plugins:
block_xp- Gamificationblock_completion_progress- Fortschrittsanzeigeblock_configurable_reports- Berichte
Themes (theme_)
{
"component": "theme_boost_union",
"name": "Boost Union"
}
Beliebte Themes:
theme_boost_union- Erweitertes Boost-Themetheme_moove- Modernes Themetheme_academi- Bildungs-Theme
Lokale Plugins (local_)
{
"component": "local_adminer",
"name": "Adminer",
"dev_only": true
}
Weitere Plugin-Typen
| Präfix | Typ | Beispiel |
|---|---|---|
auth_ | Authentifizierung | auth_saml2 |
enrol_ | Einschreibung | enrol_auto |
report_ | Berichte | report_customsql |
tool_ | Admin-Tools | tool_recyclebin |
format_ | Kursformate | format_tiles |
qtype_ | Fragetypen | qtype_stack |
Plugin-Synchronisation
Automatisch beim Start
Der Container synchronisiert Plugins automatisch beim Start:
PLUGIN_SYNC_ON_STARTUP=true
Manuell auslösen
# Via CLI
docker compose exec moodle python3 /opt/scripts/plugin_manager.py --sync
# Force (alle Plugins neu installieren)
docker compose exec moodle python3 /opt/scripts/plugin_manager.py --sync --force
# Dry-Run
docker compose exec moodle python3 /opt/scripts/plugin_manager.py --sync --dry-run
Via Admin-UI
- Öffnen Sie
/moodle-admin - Navigieren Sie zu "Plugins"
- Klicken Sie auf "Plugins synchronisieren"
Version-Updates
Bei Moodle-Update
Wenn die Moodle-Version geändert wird, werden automatisch alle Plugins neu installiert:
- Plugin-Manager erkennt Versionsänderung
- Wartungsmodus wird aktiviert
- Alle Plugins werden entfernt und neu installiert
- Datenbank-Upgrade wird ausgeführt
- Wartungsmodus wird deaktiviert
Gepinnte Versionen
Um eine spezifische Plugin-Version zu erzwingen:
{
"component": "theme_boost_union",
"version": "2024042200"
}
:::warning Kompatibilität Stellen Sie sicher, dass die gepinnte Version mit Ihrer Moodle-Version kompatibel ist. :::
Status-Report
Via CLI
# Status aller Plugins
docker compose exec moodle python3 /opt/scripts/plugin_manager.py --report
# JSON-Format
docker compose exec moodle python3 /opt/scripts/plugin_manager.py --report --json
# Liste konfigurierter Plugins
docker compose exec moodle python3 /opt/scripts/plugin_manager.py --list
Beispiel-Report
# Moodle Plugin Status Report
**Moodle Version:** 2024042200
**Moodle Release:** 4.5
**Last Sync:** 2024-01-15T10:30:00
## Configured Plugins
| Plugin | Status | Version | Required |
|--------|--------|---------|----------|
| Anwesenheit | Installed | 2024011500 | Yes |
| Fragebogen | Installed | 2024020100 | Yes |
| Level Up XP | Missing | - | No |
## Summary
- Configured plugins: 3
- Installed (configured): 2
- Missing: 1
Fehlerbehebung
Plugin nicht gefunden
ERROR: Plugin not found in Moodle plugin directory
Lösung: Prüfen Sie den Component-Namen im Moodle Plugin Directory.
Inkompatible Version
ERROR: Plugin incompatible with this Moodle version
Lösung:
- Entfernen Sie die Version-Pinnung
- Oder warten Sie auf ein Plugin-Update
- Oder setzen Sie
required: false
Rate-Limit erreicht
WARNING: Rate limit reached, waiting 60s...
Der Plugin-Manager respektiert die Moodle.org Rate-Limits. Dies ist normal bei vielen Plugins.
Installation fehlgeschlagen
# Logs prüfen
docker compose logs moodle | grep -i plugin
# Plugin manuell installieren
docker compose exec moodle moosh plugin-install mod_problematic
# Plugin-Verzeichnis prüfen
docker compose exec moodle ls -la /var/www/html/moodle/mod/
Best Practices
Entwicklung vs. Produktion
Nutzen Sie dev_only für Entwickler-Plugins:
{
"component": "local_adminer",
"dev_only": true
}
Diese werden nur installiert wenn ENVIRONMENT=development.
Backup vor Plugin-Änderungen
# Backup erstellen
docker compose exec moodle /opt/scripts/backup.sh
# Dann Plugins ändern
docker compose restart moodle
Schrittweise Migration
Bei vielen neuen Plugins:
- Wenige Plugins hinzufügen
- Testen
- Weitere hinzufügen
- Wiederholen
Plugin-Dokumentation
Dokumentieren Sie genutzte Plugins in der plugins.json:
{
"component": "mod_attendance",
"name": "Anwesenheit",
"description": "Wird für automatische Anwesenheitserfassung im Unterricht genutzt"
}