Post

Install moodle on debian 12 vm under proxmox

Unter Proxmox wurde eine VM mit Debian 12 aufgesetzt. Es existiert ein SSH-Zugang für einen User mit Sudo-Rechten. Auf dieser VM soll nun Moodle aus einem Archiv des Herstellers installiert werden. Es fehlt der Apache Webserver, eine MariaDB-Datenbank und PHP mit den für Moodle notwendigen Erweiterungen. Moodle soll nach der Installation über einen externen Nginx Proxy Manager erreicht werden. Dieser stellt die notwendigen SSL-Zertifikate bereit. Die folgende Anleitung beschreibt detailliert die notwendigen Schritte für die Installation und die notwendigen Anpassungen an php.ini und config.php.

Systemvorbereitungen

System aktualisieren

1
sudo apt update && sudo apt upgrade -y

Grundlegende Tools installieren

1
sudo apt install -y wget unzip

Installation Apache, MariaDB und PHP

Apache installieren

1
sudo apt install -y apache2

MariaDB installieren

1
sudo apt install -y mariadb-server

PHP 8.1 und erforderliche Erweiterungen (Debian 12 standardmäßig mit PHP 8.2)

1
sudo apt install -y php libapache2-mod-php php-mysql php-curl php-zip php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-opcache php-bcmath php-ldap

MariaDB konfigurieren

MariaDB absichern (interaktiv)

1
sudo mysql_secure_installation

Datenbank und Benutzer für Moodle erstellen

1
sudo mysql -u root -p
1
2
3
4
5
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'SicheresPasswort';
GRANT ALL PRIVILEGES ON moodle.* TO 'moodleuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

PHP-Einstellungen anpassen

php.ini bearbeiten (Apache-Version)

1
sudo nano /etc/php/8.2/apache2/php.ini
1
2
3
4
5
6
7
8
9
memory_limit = 256M
upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 300
max_input_vars = 5000
date.timezone = Europe/Berlin  # Anpassen an Ihre Zeitzone
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
1
sudo systemctl restart apache2

Moodle installieren

1
2
3
4
5
6
7
8
9
# Moodle herunterladen (aktuellste Version von https://download.moodle.org/)
cd /tmp
wget https://download.moodle.org/download.php/direct/stable402/moodle-latest-402.zip
unzip moodle-latest-402.zip

# Moodle ins Web-Verzeichnis kopieren
sudo mv moodle /var/www/html/
sudo mkdir /var/www/moodledata  # Datenverzeichnis
sudo chown -R www-data:www-data /var/www/html/moodle /var/www/moodledata

Apache Virtual Host konfigurieren

1
sudo nano /etc/apache2/sites-available/moodle.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
<VirtualHost *:80>
    ServerName moodle.example.com
    DocumentRoot /var/www/html/moodle

    <Directory /var/www/html/moodle>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/moodle_error.log
    CustomLog ${APACHE_LOG_DIR}/moodle_access.log combined
</VirtualHost>
1
2
3
sudo a2ensite moodle.conf
sudo a2enmod rewrite
sudo systemctl reload apache2

Moodle-Webinstaller ausführen

  1. Browser öffnen: [http://VM-IP/moodle]
  2. Folge dem Installationsassistent
    • Datenverzeichnis: /var/www/moodledata
    • Datenbanktyp: MariaDB
    • Datenbankhost: localhost
    • Datenbankname: moodle
    • Datenbankbenutzer: moodleuser
    • Datenbankpasswort: SicheresPasswort

Moodle-Konfiguration anpassen

A. config.php (wird automatisch generiert, prüfen Sie folgende Werte):

1
2
3
4
$CFG->wwwroot   = 'https://moodle.example.com';  # Externe HTTPS-URL
$CFG->dataroot  = '/var/www/moodledata';
$CFG->directorypermissions = 0777;
$CFG->sslproxy = true;  # Wichtig für Reverse-Proxy mit SSL

B. Reverse-Proxy-Einstellungen (falls erforderlich in config.php):

1
2
$CFG->reverseproxy = true;
$CFG->xsendfile = 'X-Accel-Redirect';  # Für Nginx Proxy Manager

Cron-Job einrichten

1
sudo crontab -u www-data -e

Folgende Zeile hinzufügen:

1
*/5 * * * * /usr/bin/php /var/www/html/moodle/admin/cli/cron.php > /dev/null

Abschließende Sicherheit

1
2
3
4
5
# Konfigurationsdatei schützen
sudo chmod 440 /var/www/html/moodle/config.php

# Firewall (falls aktiviert)
sudo ufw allow 80/tcp
This post is licensed under CC BY 4.0 by the author.

Trending Tags