MariaDB auf einem Proxmox zu betreiben, bietet viele Vorteile für alle, die Home Assistant oder andere da­ten­in­ten­si­ve An­wen­dun­gen im eigenen Netzwerk nutzen. In dieser Anleitung erfahren Sie, wie Sie eine eigene MariaDB-Datenbank in einem Proxmox LXC-Container in­stal­lie­ren, kon­fi­gu­rie­ren und in Betrieb nehmen.

Wann ist MariaDB auf Proxmox sinnvoll?

Der Einsatz von MariaDB auf Proxmox bietet sich an, wenn Sie Da­ten­bank­diens­te flexibel in iso­lier­ten Um­ge­bun­gen verwenden möchten. Proxmox er­mög­licht es, MariaDB in Con­tai­nern (LXC) oder vir­tu­el­len Maschinen (KVM) zu in­stal­lie­ren und so un­ter­schied­li­che An­for­de­run­gen getrennt zu erfüllen.

Vor­aus­set­zun­gen für die Ein­rich­tung

Bevor Sie starten, sollte Folgendes vorhanden sein:

  • Ein laufender Proxmox-Host (VE 7 oder 8)
  • Zugriff auf die Web­ober­flä­che und Shell von Proxmox
  • Aus­rei­chend Spei­cher­platz (mind. 4 GB) und RAM (mind. 1 GB) für den LXC
  • Netz­werk­zu­gang zum Container (per DHCP oder sta­ti­scher IP-Adresse)
Proxmox Bare Metal Server
Mehr Kontrolle und Effizienz für Ihre IT-In­fra­struk­tur
  • Voll­in­te­grier­te Plattform für Vir­tua­li­sie­rung und Container
  • Ska­lier­bar & flexibel: VMs und Container nach Bedarf be­reit­stel­len
  • Open Source mit op­tio­na­lem En­ter­pri­se-Support
  • Da­ten­ho­heit durch den Betrieb in sou­ve­rä­nen Re­chen­zen­tren

Schritt für Schritt: MariaDB-LXC-Container unter Proxmox in­stal­lie­ren

Mit Proxmox lassen sich MariaDB-Instanzen als LXC-Container effizient und res­sour­cen­scho­nend betreiben. Die folgende Anleitung zeigt, wie Sie einen solchen Container ein­rich­ten und MariaDB darin in­stal­lie­ren.

Schritt 1: Skript ausführen

Der ein­fachs­te Weg, MariaDB als LXC auf Proxmox zu in­stal­lie­ren, ist über ein Community-Skript. Melden Sie sich über die Proxmox-Web­ober­flä­che an und wählen Sie Ihren Node. Klicken Sie dort auf „Shell“ und führen Sie folgenden Befehl aus:

bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/mariadb.sh)"
bash

Sie erhalten eine Si­cher­heits­ab­fra­ge: Be­stä­ti­gen Sie mit der Ein­ga­be­tas­te. Sie können entweder die Standard- oder er­wei­ter­te In­stal­la­ti­on nutzen.

Schritt 2: In­stal­la­ti­on kon­fi­gu­rie­ren

Bei der Stan­dard­in­stal­la­ti­on werden folgende Ein­stel­lun­gen verwendet:

  • RAM: 1 GB
  • Speicher: 4 GB
  • CPU: 1 vCore
  • Container-Typ: un­pri­vi­le­ged
  • Netzwerk: DHCP

Diese Kon­fi­gu­ra­ti­on ist für die meisten An­wen­dungs­fäl­le aus­rei­chend. Wenn Sie möchten, können Sie im er­wei­ter­ten Modus weitere Parameter setzen, wie zum Beispiel die Debian-Version, ein Root-Passwort oder eine statische IP-Adresse.

Während der In­stal­la­ti­on fragt das Skript, ob Sie Adminer ebenfalls in­stal­lie­ren wollen. Adminer ist ein leicht­ge­wich­ti­ges Web-Frontend für Da­ten­ban­ken. Be­stä­ti­gen Sie mit Y, wenn Sie später über Ihren Browser auf die Datenbank zugreifen möchten.

Nach der er­folg­rei­chen Ein­rich­tung sehen Sie die Meldung Completed Successfully!. Sie können nun mit der Kon­fi­gu­ra­ti­on fort­fah­ren.

Schritt 3: Kon­fi­gu­ra­ti­ons­da­tei anpassen

Damit An­wen­dun­gen wie Home Assistant auf die Datenbank zugreifen können, müssen Sie den Remote-Zugriff explizit erlauben.

Starten Sie die Konsole des MariaDB-LXC über die Proxmox-Ober­flä­che. Öffnen Sie die Haupt­kon­fi­gu­ra­ti­ons­da­tei:

nano /etc/mysql/my.cnf
bash

Suchen Sie die Zeile #port = 3306 und entfernen Sie das Kom­men­tar­zei­chen (#), damit die Zeile aktiv ist. Speichern Sie mit [CTRL] + [O], be­stä­ti­gen Sie mit Enter und schließen Sie mit [CTRL] + [X].

Schritt 4: Server-Kon­fi­gu­ra­ti­on ändern

An­schlie­ßend be­ar­bei­ten Sie die Server-Datei:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
bash

Suchen Sie die Zeile mit:

bind-address = 127.0.0.1
bash

und kom­men­tie­ren Sie diese aus, indem Sie ein # davor setzen:

#bind-address = 127.0.0.1
bash

Speichern und schließen Sie die Datei wie zuvor. Starten Sie den MariaDB-Dienst neu:

systemctl restart mariadb
bash

Damit ist der Zugriff aus dem lokalen Netzwerk möglich.

Schritt 5: MariaDB absichern

MariaDB bringt ein eigenes Si­cher­heits­skript mit, um grund­le­gen­de Schutz­maß­nah­men ein­zu­rich­ten. Starten Sie das Skript in der Konsole des Con­tai­ners:

mariadb-secure-installation
bash

Das Skript fragt Sie schritt­wei­se nach folgenden Punkten:

  • Enter current password for root (enter for none):
  • Change the root password? [Y/n] n
  • Remove anonymous users? [Y/n] y
  • Disallow root login remotely? [Y/n] y
  • Remove test database and access to it? [Y/n] y
  • Reload privilege tables now? [Y/n] y

Wenn Sie alle Schritte durch­ge­führt haben, ist Ihre MariaDB-In­stal­la­ti­on grund­le­gend ab­ge­si­chert. Die Datenbank ist nun bereit für die Ein­rich­tung von Be­nut­ze­rin­nen oder Benutzern und Diensten.

Schritt 6: Benutzer und Datenbank anlegen

Wechseln Sie nun in die MariaDB-Shell:

/usr/bin/mariadb
bash

Legen Sie einen neuen Benutzer oder eine neue Be­nut­ze­rin für Ihre Anwendung an:

CREATE USER 'homeuser'@'localhost' IDENTIFIED BY 'safepassword';
sql

Geben Sie diesem Benutzer oder dieser Be­nut­ze­rin volle Rechte auf alle Da­ten­ban­ken:

GRANT ALL ON *.* TO 'homeuser'@'localhost' WITH GRANT OPTION;
sql

Wenn Sie den Zugriff auch über das lokale Netzwerk erlauben möchten, führen Sie Folgendes aus:

GRANT ALL ON *.* TO 'homeuser'@'192.168.0.%' IDENTIFIED BY 'safepassword' WITH GRANT OPTION;
sql

Erstellen Sie nun eine eigene Datenbank, zum Beispiel für Home Assistant:

CREATE DATABASE homeassistant;
sql

Wenden Sie die Rechte sofort an:

FLUSH PRIVILEGES;
sql

Verlassen Sie die Datenbank-Shell mit:

exit
sql

Damit ist das Be­nut­zer­kon­to erstellt und man kann sich mit dem gesetzten Passwort anmelden. Auch die Datenbank steht bereit für die Ver­bin­dung mit externen Diensten.

Schritt 7: Netzwerk und Start­rei­hen­fol­ge kon­fi­gu­rie­ren

Damit MariaDB zu­ver­läs­sig mit anderen An­wen­dun­gen wie Home Assistant zu­sam­men­ar­bei­tet, sollten Sie die Netz­werk­um­ge­bung absichern und si­cher­stel­len, dass der Da­ten­bank­con­tai­ner vor anderen Con­tai­nern startet.

Wenn Sie in der Container-Kon­fi­gu­ra­ti­on DHCP gewählt haben, erhält der MariaDB-LXC eine dy­na­mi­sche IP-Adresse. Diese kann sich nach einem Neustart ändern. Um Ver­bin­dungs­pro­ble­me zu vermeiden, legen Sie entweder eine statische IP innerhalb der LXC-Netz­werk­ein­stel­lun­gen fest oder vergeben im Router eine feste IP über DHCP-Re­ser­vie­rung.

So finden Sie die aktuelle IP-Adresse des Con­tai­ners heraus:

ip a
bash

Oder im Proxmox-Interface unter „Summary“ -> „Network“.

Schritt 8: Start­ver­hal­ten des Con­tai­ners de­fi­nie­ren

Damit Home Assistant beim Start auf die Datenbank zugreifen kann, muss der MariaDB-Container vorab gestartet sein. Sie können die Start­rei­hen­fol­ge in Proxmox festlegen:

  1. Wählen Sie den MariaDB-Container in der linken Liste.
  2. Klicken Sie im mittleren Bereich auf Options.
  3. Dop­pel­kli­cken Sie auf „Start/Shutdown order“.
  4. Ak­ti­vie­ren Sie die Checkbox und setzen Sie: „Start order: 1“ und „Startup delay: 60 Sekunden“.

Wie­der­ho­len Sie den Vorgang für den Home-Assistant-Container, setzen Sie dort zum Beispiel „Start order 2“ und „Startup delay 10 Sekunden“.

Schritt 9: Home Assistant mit MariaDB verbinden

Sobald die Datenbank be­reit­steht und eine feste IP-Adresse besitzt, können Sie Home Assistant so kon­fi­gu­rie­ren, dass es statt SQLite auf MariaDB zugreift.

Öffnen Sie dazu die Datei configuration.yaml in Home Assistant, bei­spiels­wei­se per File Editor Add-on oder Visual Studio Code:

recorder:
    db_url: mysql://homeuser:safepassword@192.168.0.45:3306/homeassistant?charset=utf8mb4
yaml

Ersetzen Sie Be­nut­zer­na­me, Passwort, IP-Adresse und Da­ten­bank­na­men durch Ihre eigenen Angaben. Achten Sie darauf, dass MariaDB vor Home Assistant geladen wurde.

Nach dem Speichern starten Sie Home Assistant neu. Wenn alles korrekt ein­ge­rich­tet ist, werden neue Daten in der MariaDB-Datenbank ge­spei­chert.

Schritt 10: Backups mit Proxmox

Proxmox erlaubt Snapshots und Backups von einzelnen Con­tai­nern. Das heißt, Sie können den MariaDB-LXC jederzeit sichern – manuell oder zeit­ge­steu­ert:

  1. Wählen Sie in der linken Liste Ihren MariaDB-Container aus.
  2. Klicken Sie oben auf Backup.
  3. Wählen Sie den Spei­cher­ort (zum Beispiel „local“), den Modus (Snapshot empfohlen) und starten Sie den Vorgang.

Für au­to­ma­ti­sche Backups können Sie im Dat­a­cen­ter unter Backup Zeitpläne de­fi­nie­ren.

Tipp
Zum Hauptmenü