# Moodle mit Kubernetes installieren: So gelingt Ihr skalierbares Setup!

Moodle ist eines der weltweit verbreitetsten Open-Source-Lernmanagementsysteme. Eine Moodle-Installation mit Kubernetes bietet insbesondere für größere und wachsende Plattformen entscheidende Vorteile. Durch automatische Skalierung, Self-Healing und eine flexible Infrastruktur eignet sich Kubernetes ideal für produktive Moodle-Umgebungen mit vielen Nutzerinnen und Nutzern.

## Schritt 1: Voraussetzungen und passende Infrastruktur

Bevor Sie mit der Installation beginnen, benötigen Sie eine funktionierende Kubernetes-Umgebung sowie passende Ressourcen. Im Gegensatz zu einem [Moodle-Install mit Docker](https://www.ionos.de/digitalguide/server/konfiguration/moodle-docker-installation/) oder einer [Installation von Moodle über die grafische Oberfläche von Plesk](https://www.ionos.de/digitalguide/server/konfiguration/moodle-plesk-installation/) ist das Setup mit [Kubernetes](https://www.ionos.de/digitalguide/server/knowhow/was-ist-kubernetes/) deutlich komplexer, bietet dafür aber auch wesentlich mehr Möglichkeiten in Bezug auf Skalierung und Hochverfügbarkeit. Die Voraussetzungen **hängen vom jeweiligen Anwendungsfall ab**.

### Test- und Entwicklungs-Setups

Wenn Sie [Moodle](https://www.ionos.de/digitalguide/server/knowhow/moodle/) zunächst ausprobieren oder eine kleinere Lernplattform betreiben möchten, reicht bereits ein kompaktes [Kubernetes-Cluster](https://www.ionos.de/digitalguide/server/knowhow/kubernetes-cluster/) aus. Häufig wird hierfür eine **vereinfachte Distribution** wie [K3s](https://www.ionos.de/digitalguide/server/knowhow/was-ist-k3s/) verwendet, die sich auch auf einem einzelnen Server installieren lässt.

Solche Setups eignen sich besonders für erste Experimente oder für kleinere Projekte, bei denen nur wenige Nutzerinnen und Nutzer gleichzeitig auf die Plattform zugreifen. Auch für Entwicklungs- und Testumgebungen ist diese Variante ideal, da sie vergleichsweise wenig Ressourcen benötigt und schnell eingerichtet ist.

Als grobe Orientierung genügt hier ein Server mit 2 bis 4 vCores und 4 bis 8 GB [RAM](https://www.ionos.de/digitalguide/server/knowhow/was-ist-ein-arbeitsspeicher/). Beim Speicherplatz sollten Sie ca. 80 bis 120 GB [SSD](https://www.ionos.de/digitalguide/server/knowhow/was-ist-ssd/) einplanen, da neben der Anwendung selbst auch Datenbankinhalte, Kursmaterialien und Uploads gespeichert werden.

### Moodle für produktive Umgebungen

Sobald Sie Moodle regelmäßig nutzen oder mehreren Nutzerinnen und Nutzern gleichzeitig Zugriff ermöglichen möchten, steigen die Anforderungen deutlich. In produktiven Umgebungen spielen vor allem Stabilität, Performance und Ausfallsicherheit eine zentrale Rolle.

Im Gegensatz zu einfachen Setups läuft Moodle hier nicht mehr nur auf einem einzelnen Server, sondern **verteilt sich auf mehrere Maschinen**, die sogenannten [Nodes](https://www.ionos.de/digitalguide/server/konfiguration/kubernetes-node/). Dadurch kann die Plattform Last besser verarbeiten und bleibt auch dann erreichbar, wenn einzelne Komponenten ausfallen.

Für solche Szenarien empfiehlt sich pro Node eine Ausstattung von 4 bis 8 vCores und 8 bis 16 GB RAM. Zusätzlich sollten mehrere Nodes eingeplant werden, um eine stabile und ausfallsichere Umgebung aufzubauen. Ein weiterer wichtiger Bestandteil ist ein [Load Balancer](https://www.ionos.de/digitalguide/server/knowhow/bessere-serverzugriffszeiten-durch-load-balancer/), der eingehende Anfragen **gleichmäßig** auf die verfügbaren Instanzen verteilt. In Kombination mit einem sogenannten Ingress-Controller wird außerdem der Zugriff über eine Domain und HTTPS ermöglicht.

### Große Plattformen

Wenn Moodle unternehmensweit oder in großen Bildungseinrichtungen eingesetzt wird, sind die Anforderungen nochmals höher. In solchen Fällen greifen oft Hunderte oder Tausende User gleichzeitig auf die Plattform zu und es werden große Mengen an Lernmaterialien verarbeitet.

Hier ist eine **verteilte Infrastruktur** mit mehreren leistungsstarken Nodes notwendig. Pro Node sollten Sie mindestens 8 vCores und 16 bis 32 GB RAM einplanen. Zusätzlich wird der Cluster um mehrere sogenannte Worker-Nodes erweitert, um die Last effizient zu verteilen. Ein entscheidender Punkt in solchen Setups ist die Datenbank. Statt sie direkt im Kubernetes-Cluster zu betreiben, empfiehlt es sich, eine **externe**, gemanagte Datenbanklösung zu nutzen. Diese ist in der Regel performanter, einfacher zu warten und besser abgesichert.

Darüber hinaus sind weitere Komponenten sinnvoll, um einen stabilen Betrieb sicherzustellen:

- [Content Delivery Network](https://www.ionos.de/digitalguide/hosting/hosting-technik/was-ist-ein-content-delivery-network-cdn/), um statische Inhalte schneller auszuliefern
- Separate Speicherlösung für Moodle-Daten, um Skalierung zu erleichtern
- Monitoring-Tools wie Prometheus, um die Systemauslastung im Blick zu behalten

### Übersichtstabelle: Anforderungen auf einen Blick

<table>
  <thead>
    <tr>
      <th><strong>Anwendungsgebiet</strong></th>
      <th><strong>Empfohlene Konfiguration</strong></th>
      <th><strong>Typische gleichzeitige User</strong></th>
      <th><strong>Infrastruktur / Setup</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Test / Entwicklung</strong></td>
      <td>2–4 vCores, 4–8 GB RAM, 80–120 GB SSD</td>
      <td>bis ca. 20</td>
      <td>Single-Node-Cluster (z. B. K3s), einfache Installation</td>
    </tr>
    <tr>
      <td><strong>Produktive Umgebung</strong></td>
      <td>4–8 vCores pro Node, 8–16 GB RAM</td>
      <td>ca. 50–300</td>
      <td>Mehrere Nodes, Load Balancer, Ingress, erste Skalierung</td>
    </tr>
    <tr>
      <td><strong>Große Plattform</strong></td>
      <td>8+ vCores pro Node, 16–32 GB RAM</td>
      <td>300+</td>
      <td>Cluster mit mehreren Worker-Nodes, externe Datenbank, skalierbare Architektur</td>
    </tr>
  </tbody>
</table>

## Schritt 2: Kubernetes-Cluster einrichten

Bevor Sie Moodle in Kubernetes installieren können, benötigen Sie zunächst einen funktionierenden Kubernetes-Cluster. Für Einsteigerinnen und Einsteiger eignet sich besonders K3s. K3s ist eine leichtgewichtige Kubernetes-Distribution, die sich schnell auf einem einzelnen Server installieren lässt. Verbinden Sie sich per [SSH](https://www.ionos.de/digitalguide/server/tools/secure-shell-ssh/) mit Ihrem Server und führen Sie folgenden Befehl aus, um K3s zu installieren:

```bash
curl -sfL https://get.k3s.io | sh -
```

Die Installation dauert nur wenige Minuten. Anschließend wird der Kubernetes-Dienst automatisch gestartet. Um zu überprüfen, ob Ihr Cluster korrekt läuft, führen Sie folgenden Befehl aus:

```bash
kubectl get nodes
```

[![Bild: Node-Anzeige im Terminal](https://www.ionos.de/digitalguide/fileadmin/_processed_/8/0/csm_moodle-kubernetes-get-nodes_3b96cf892e.webp "Node-Anzeige im Terminal")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2026/moodle-kubernetes-get-nodes.jpg) Der Status Ihres Nodes sollte in der Anzeige „Ready“ sein. Wenn Ihr Server in der Liste mit dem Status „Ready“ erscheint, ist Ihr Kubernetes-Cluster erfolgreich eingerichtet.

Hinweis Die Installation von K3s über das curl-Skript eignet sich **vor allem für Test- und Entwicklungsumgebungen**. In produktiven Szenarien empfiehlt es sich, die Installation kontrollierter durchzuführen, beispielsweise über Paketquellen, Infrastruktur-Tools oder automatisierte Deployment-Prozesse, um Sicherheit und Nachvollziehbarkeit zu gewährleisten.

## Schritt 3: Helm installieren

Nachdem Ihr Kubernetes-Cluster läuft, benötigen Sie noch ein Tool, um Anwendungen wie Moodle einfach bereitzustellen. Hier kommt Helm ins Spiel. Helm ist ein Paketmanager für Kubernetes, mit dem Sie komplexe Anwendungen mit wenigen Befehlen installieren können. Installieren Sie zunächst Helm mit folgendem Befehl:

```bash
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
```

Nach der Installation können Sie überprüfen, ob Helm korrekt eingerichtet wurde, indem Sie sich die Version anzeigen lassen:

```bash
helm version
```

[![Bild: Versionsanzeige von Helm im Terminal](https://www.ionos.de/digitalguide/fileadmin/_processed_/6/f/csm_moodle-kubernetes-helm-version_c3d6a02c70.webp "Versionsanzeige von Helm im Terminal")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2026/moodle-kubernetes-helm-version.jpg) Nach der Installation von Helm können Sie den Erfolg überprüfen, indem Sie sich die Version anzeigen lassen. ## Schritt 4: Namespace erstellen

In Kubernetes werden Anwendungen im Regelfall in sogenannten Namespaces organisiert. Dadurch bleiben Ressourcen sauber getrennt und besser überschaubar. Erstellen Sie nun mit dem untenstehenden Befehl einen eigenen Namespace für Moodle:

```bash
kubectl create namespace moodle
```

[![Bild: Namespace im Terminal erstellen](https://www.ionos.de/digitalguide/fileadmin/_processed_/9/1/csm_moodle-kubernetes-namespace_4f9de74e04.webp "Namespace im Terminal erstellen")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2026/moodle-kubernetes-namespace.jpg) Im Terminal wird Ihnen mitgeteilt, dass der Namespace erfolgreich erstellt wurde. ## Schritt 5: Moodle konfigurieren

Bevor Sie Moodle installieren, sollten Sie einige grundlegende Einstellungen festlegen. Diese werden in einer Konfigurationsdatei gespeichert. Erstellen Sie dazu zunächst eine Datei mit dem Namen `values.yaml`:

```bash
nano values.yaml
```

Fügen Sie folgenden Inhalt ein und passen Sie die Werte nach Bedarf an:

```yaml
global:
    security:
        allowInsecureImages: true
moodleUsername: admin
moodlePassword: securepassword
moodleEmail: admin@example.com
service:
    type: ClusterIP
ingress:
    enabled: true
    hostname: moodle.example.com
persistence:
    enabled: true
    size: 10Gi
image:
    repository: bitnamilegacy/moodle
volumePermissions:
    image:
        repository: bitnamilegacy/os-shell
metrics:
    image:
        repository: bitnamilegacy/apache-exporter
mariadb:
    image:
        repository: bitnamilegacy/mariadb
    auth:
        rootPassword: rootpassword
        database: moodle
        username: moodle
        password: moodlepassword
```

Ersetzen Sie die Beispielpasswörter unbedingt durch sichere Kennwörter. Für produktive Umgebungen sollten Sie sensible Daten **nicht** direkt in dieser Datei speichern, sondern Kubernetes Secrets verwenden.

Hinweis Bei Bitnami-Charts reicht es nicht immer aus, nur das Hauptimage der Anwendung anzupassen. Je nach aktivierten Funktionen können weitere Image-Referenzen betroffen sein, zum Beispiel Init-Container, Metrics-Exporter oder zusätzliche Hilfscontainer. Prüfen Sie deshalb vor der Installation mit `helm show values`, welche Image-Repositorys das verwendete Chart referenziert, und stellen Sie alle benötigten Images auf gültige Repositorys um.

## Schritt 6: Moodle installieren

Nun können Sie Moodle installieren. Helm übernimmt dabei die komplette Einrichtung aller benötigten Komponenten im Hintergrund. Führen Sie für die Installation den folgenden Befehl aus:

```bash
helm install moodle oci://registry-1.docker.io/bitnamicharts/moodle -n moodle -f values.yaml
```

Tipp Die hier verwendete Bitnami-Variante ist vor allem als Übergangslösung zu verstehen. Das betrifft nicht nur die Images aus dem Repository `bitnamilegacy`, sondern auch die bereits gepackten OCI-Helm-Charts unter `docker.io/bitnamicharts`: Sie bleiben zwar verfügbar, erhalten aber keine regulären Updates mehr. Für produktive Umgebungen sollten Sie deshalb langfristig auf aktuelle, unterstützte Container-Images, eine eigene gepflegte Image-Basis oder eine dauerhaft gewartete Deployment-Variante setzen.

Kubernetes erstellt nun automatisch alle notwendigen Bestandteile, darunter:

- Container (sogenannte [Pods](https://www.ionos.de/digitalguide/server/konfiguration/kubernetes-pod/)) für Moodle
- einen Service für den Zugriff
- persistenten Speicher für Daten
- eine [Datenbank](https://www.ionos.de/digitalguide/hosting/hosting-technik/datenbanken/)

## Schritt 7: Status der Installation überprüfen

Nachdem Sie die Installation gestartet haben, sollten Sie überprüfen, ob alle Komponenten korrekt erstellt und gestartet wurden. Kubernetes benötigt in der Regel einen kurzen Moment, um alle Container bereitzustellen und zu initialisieren. Verwenden Sie dazu den folgenden Befehl:

```bash
kubectl get pods -n moodle
```

[![Bild: Pods im Terminal](https://www.ionos.de/digitalguide/fileadmin/_processed_/0/4/csm_moodle-kubernetes-pods_3b924e978f.webp "Pods im Terminal")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2026/moodle-kubernetes-pods.jpg) Sie sehen im Terminal nun die soeben erstellten Pods; diese sollten den Status „Running“ haben, bevor Sie mit der Anleitung fortfahren. In der Ausgabe sehen Sie alle laufenden Pods Ihrer Moodle-Installation. Achten Sie darauf, dass der Status bei allen Einträgen „Running“ lautet. Sollte stattdessen „Pending“ angezeigt werden, ist die Installation **noch nicht abgeschlossen**. Sobald alle Pods erfolgreich gestartet sind, können Sie mit dem Zugriff auf Ihre Moodle-Instanz fortfahren.

## Schritt 8: Zugriff auf Moodle

Für erste Tests können Sie auf Ihre Moodle-Installation zugreifen, ohne bereits eine Domain oder einen Ingress einzurichten. Stellen Sie dafür sicher, dass Ingress in Ihrer `values.yaml` zunächst deaktiviert ist:

```yaml
ingress:
    enabled: false
```

Leiten Sie anschließend den lokalen Port 8080 an den Moodle-Service im Kubernetes-Cluster weiter:

```bash
kubectl port-forward svc/moodle 8080:80 -n moodle
```

Dieser Befehl sorgt dafür, dass Anfragen an den Port 8080 Ihres lokalen Rechners direkt an den Moodle-Service im Kubernetes-Cluster weitergeleitet werden. Öffnen Sie anschließend Ihren Browser und rufen Sie die Adresse `http://localhost:8080` auf.

Nun erscheint die Moodle-Startseite, wo Sie sich einloggen können. Die Installation ist damit abgeschlossen. Melden Sie sich nun mit Ihrem Administrator-Konto an, dessen Zugangsdaten Sie in der `values.yaml` hinterlegt haben.

Danach gelangen Sie direkt zum Dashboard und können die Lernplattform Moodle nutzen, indem Sie Kurse erstellen und Inhalte hinzufügen.

[![Bild: Moodle-Dashboard](https://www.ionos.de/digitalguide/fileadmin/_processed_/d/4/csm_moodle-kubernetes-dashboard_ca09e25311.webp "Moodle-Dashboard")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2026/moodle-kubernetes-dashboard.jpg) Nach dem Einloggen gelangen Sie zum Dashboard, wo Sie Kurse anlegen und Ihre Seite bearbeiten können. Auf diese Weise können Sie Ihre Installation schnell und unkompliziert testen, ohne zunächst eine Domain oder einen öffentlichen Zugriff einrichten zu müssen. Für den späteren produktiven Einsatz empfiehlt es sich jedoch, Moodle **über eine eigene Domain und HTTPS** bereitzustellen.

Stellen Sie hierfür sicher, dass Ihre Domain per DNS auf die IP-Adresse Ihres Servers zeigt und ein Ingress-Controller (z. B. NGINX oder Traefik) im Cluster installiert ist. Für HTTPS können Sie beispielsweise `cert-manager` mit Let’s Encrypt verwenden, um automatisch ein gültiges SSL-Zertifikat bereitzustellen.

Nach der Anpassung übernehmen Sie die Änderungen mit:

```bash
helm upgrade --install moodle oci://registry-1.docker.io/bitnamicharts/moodle -n moodle -f values.yaml
```

Hinweis Der Befehl `helm upgrade --install` eignet sich hier dazu, Konfigurationsänderungen aus der `values.yaml` anzuwenden, etwa für Ingress, Domain oder HTTPS. Er sollte jedoch nicht als vollständiges Moodle-Versionsupgrade verstanden werden. Für größere Moodle-Versionssprünge sollten Sie die offiziellen Moodle-Upgrade-Schritte beachten und vorab vollständige Backups von Datenbank, Moodle-Dateien und `moodledata` erstellen.

Anschließend ist Ihre Moodle-Instanz dauerhaft und sicher über Ihre Domain erreichbar.


This is a markdown version of: [https://www.ionos.de/digitalguide/server/konfiguration/moodle-kubernetes-installation/](https://www.ionos.de/digitalguide/server/konfiguration/moodle-kubernetes-installation/) for AI/LLM consumption.