Projekt Teil 09 – ioBroker auf Intel NUC im LXC Container installieren
Da mich immer mehr Nachfragen erreicht haben, warum ich ioBroker in einer virtuellen Maschine installiert habe und wie man ioBroker unter Proxmox in einem LXC Container installiert, möchte ich euch das in diesem Artikel beschreiben. Ich versuche auch die wesentlichen Unterschiede der beiden Vorgehensweisen aufzuzeigen. Was auf jeden Fall schonmal auffällt, ist die Tatsache, dass die Voraussetzung für die ioBroker Installation, nämlich Debian mit der LXC Lösung deutlich einfacher und schneller funktioniert. Ihr bekommt ein komplett lauffähiges Debian innerhalb von zwei Minuten erstellt und könnt dann mit der Installation von ioBroker beginnen.
Allgemeines
Bei meiner Recherche, was die bessere Lösung ist, ob eine virtuelle Maschine (VM) oder ein Container (LXC) bin ich auf sehr viele Informationen gestoßen. Diese möchte ich hier in einer kurzen Gegenüberstellung der Vor- oder Nachteile gegenüberstellen. Letztlich muss der Anwender dann selbst entscheiden welche Installationsart für die jeweilige Applikation Verwendung findet. Ich habe auch sehr viel gelesen, dass es in einer Container Lösung nicht so einfach ist, ein USB-Gerät durchzureichen wie dies in einer VM möglich ist. Eine eigene Meinung dazu kann ich mir erst bilden, wenn mein bestellter Combee II USB-Stick eingetroffen ist. Ich installiere in diesem Artikel zusätzlich zu meinem schon vorhandenem ioBroker in einer VM noch einen ioBroker in einem LXC Container. Beide mit den gleichen Hardware Definitionen. Dies mache ich, um beide parallel laufen zu lassen und einen Vergleich anstellen zu können.
Virtuelle Maschine (VM)
- Vorteile
- Höhere Sicherheit des Host-Kernels
- Eindeutige Ressourcenvergabe
- Nachteile
- Deutlich längere Einrichtungszeit bei einer neuen VM
- Gesamte VM muss administriert werden
Container (LXC)
- Vorteile
- Schnellere Erstellung der Applikation
- LXC Umgebung ist schneller Skalierbar
- Weniger Speicherbedarf (Image)
- Nachteile
- Gesamtlösung ist deutlich komplexer
- Die Sicherheit einer Container Lösung erreicht nicht das Niveau wie bei VM
Fazit
Die Wahl der eingesetzten Lösung hängt zusammenfassend gesagt von den folgenden drei Faktoren ab: Sicherheit, Bereitstellungszeit und Ressourcen ab.
Aus meiner Sicht ist ein Mischbetrieb von VMs und LXC Container am sinnvollsten. Aus aktueller Sicht würde ich sensible Applikationen lieber in einer VM installieren, weil mir Stabilität und Sicherheit hier wichtig sind. Zu diesen Applikationen würde ich aus heutiger Sicht sowohl RaspberryMatic wie auch ioBroker zählen. Andere Applikation werden sicher sinnvoller Weise in einem Container installiert. Da ich aber ja nach diesem Artikel ioBroker in beiden Lösungen installiert habe, mag mein Fazit nach der Testphase anders aussehen. Ich werde euch darüber berichten.
Erstellung eines Containers unter Proxmox
Hier stoßen wir gleich auf den Vorteil, das wir für bestimmte Linux Umgebungen und unter anderem auch DEBIAN nicht aus dem Internet ein Image herunterladen müssen. Für die Container Lösung existieren bereits diverse Templates, welche wir einfach hochladen können. Wie das funktioniert, erfahrt ihr im folgenden Absatz.
Template herunterladen
- Wir gehen im Hauptmenü von Proxmox auf den lokalen Speicher (hier finden wir zum Beispiel Sicherungen und das Debian ISO Image für die VM Installation. Hier klicekn wir oben auf Template;
- Es öffnet sich eine Auflistung mit den in Proxmox verfügbaren Templates. Da ich in der VM Installation Debian gewählt habe und vergleichen möchte, wähle ich auch hier das aktuellste Debian Template aus, nämlich Debian-10-0-standard. Dann auf Herunterladen klicken;
- Wenig später ist das Herunterladen beendet, wie ihr im nächsten Fenster sehen könnt. Bitte mit X schließen;
- Nun seht ihr in der Übersicht des lokalen Speichers, das nun ein Container Template vorhanden ist;
- Weiter rechts in dieser Ansicht seht ihr einen der Vorteile der Container Lösung, nämlich die Größe des Templates (VM = 335,00 Mib,LXC = 219,95 MiB).
Damit ist der erste Schritt bereits erledigt und wir haben die Voraussetzungen zur Erstellung eines LXC Containers abgeschlossen.
Container erstellen
Im nächsten Schritterstellen wir im ProxMox den Container. In dem folgenden Schritt für Schritt findet ihr alles was ihr tun müsst.
- Im Hauptmenü von Proxmox wählen wir oben rechts erstellen CT;
- Allgemein – die folgenden Felder eingeben (CT ID, Hostname, Kennwort und Kennwort bestätigen), dann Vorwärts klicken;
- Template – das im vorherigen Absatz heruntergeladene Template auswählen, dann Vorwärts;
- Root-Disk – hier die Größe der Platte eingeben. Ich habe hier 32 GB gewählt, weil ich vergleichen möchte. Ihr könnt natürlich einen anderen Wert nehmen. Dann Vorwärts klicken;
- CCU – Auch hier habe ich wieder 4 gewählt. Dann Vorwärts klicken;
- Speicher – Hier den Speicher (RAM) angeben. In meinem Fall 8 GB, aber kein Muss. Dann Vorwärts klicken;
- Netzwerk – Hier habe ich unter IPv4 – DHCP ausgewählt. Weiter mit Vorwärts;
- DNS – habe ich ohne Eingabe gleich mit Vorwärts weiter geklickt;
- Bestätigung – Alles prüfen „Nach Erstellen starten“ NICHT auswählen. Dann mit Abschließen den Container erstellen;
- Knapp eine Minute später ist der Container erstellt. Fenster mit X schließen.
- Links den gerade erstellen Container auswählen und unter Optionen – Features die Punkte (keyctl. und Nesting) auswählen und mit OK bestätigen;
- Als nächstes auf dem Container mit Maus Klick rechts auf Start drücken;
- Dann schnell die Konsole auswählen und das System ist bereits oben;
- Ihr könnt euch hier bereits mit root und dem eben vergebenen Passwort anmelden;
- Nun verlassen wir die Konsole des Containers und wählen links pve aus und öffnen dort die Shell. Mit dem Befehl holen wir uns den Container: lxc-attach –name 500
- Um SSH für den neuen Container nutzen zu können, müssen wir mit dem nachfolgenden Befehl den Editor nano öffnen, um die Datei sshd_config anzupassen: nano /etc/ssh/sshd_config
- Der Editor öffnet sich und ihr müsst die Zeile PermitRootLogin without -password in PermitRootLogin yes ändern;
- Den Editor mit Strg+X verlassen und Sichern;
- Im Letzten Schritt müssen wir jetzt mit adduser xxx einen zusätzlichen Benutzer einrichten und ein Passwort vergeben und bestätigen.
Nun verlassen wir Proxmox. Wir haben damit die Installation von Debian im Container beendet. Für die Vorbereitung und Installation von ioBroker stellen wir nun über PUTTY eine Verbindung mit dem neuen System her. Dazu schaut ihr auf eurem Router nach der IP-Adresse von LXCioBroker und stellt mit PUTTY eine SSH Verbindung her. Wie das zu tun ist und alle weiteren Schritte folgen im nächsten Absatz.
ioBroker Installation
Im nächsten Schritt werden wir nun im gerade erstellten Container mit Debian, noch ein paar Voraussetzungen und Programme installieren, um dann ioBroker zu installieren.
- Nachdem das System oben ist, stellen wir über PUTTY eine SSH Verbindung her und melden uns mit der persönlichen Benutzerkennung und nicht mit „root“ an. Wenn ihr angemeldet seid, gebt ihr „su“ ein, um dann das Passwort des „Root-Benutzers“ einzugeben. Dann unbedingt noch „cd /“ eingeben, um in das Stammverzeichnis zu wechseln, weil dort wollen wir installieren.
- nun mit dem Befehl apt-get update && apt-get upgrade das System auf den aktuellen Stand bringen. Da das Template ja schon ein paar Tage alt ist, gibt es einige Aktualisierungen;
- Jetzt mit dem folgenden Befehl sudo installieren: apt-get install sudo
- Nun noch curl installieren: apt-get install curl
- Dann noch gnupg2 installieren: apt-get install gnupg2
- Nun können wir noch die weiteren Voraussetzungen installieren: curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash
- Jetzt noch nodejs installieren: apt-get install nodejs
- … und zu guter Letzt npm installieren: npm install -g npm
- nachdem das erledigt ist, das System mit dem folgenden Befehl neu booten: sudo reboot
- Nachdem das System wieder oben ist, stellen wir über PUTTY eine SSH Verbindung her und melden uns mit der persönlichen Benutzerkennung und nicht mit „root“ an. Wenn ihr angemeldet seid, gebt ihr „su“ ein, um dann das Passwort des „Root-Benutzers“ einzugeben. Dann unbedingt noch „cd /“ eingeben, um in das Stammverzeichnis zu wechseln.
- Jetzt sind wir soweit, dass wir mit dem neuen Installations-Skript den ioBroker installieren können. Das macht ihr mit dem Befehl: curl -sL https://raw.githubusercontent.com/ioBroker/ioBroker/stable-installer/installer.sh | bash
- Dieser Installations-Prozess beinhaltet 4 Schritte, welche ihr auf der Konsole angezeigt bekommt. Am Ende sollte in grüner Schrift stehen „ioBroker was installed successfully“, sowie der Hinweis, wie ihr in einem Browser Fenster über den angegebenen Befehl ioBroker starten könnt.
- Die weiteren Screen-Shots zeigen die Anfangskonfiguration vom ioBroker, sowie die aktuelle Übersicht von Proxmox mit dem neuen ioBroker im Container. In einem späteren Artikel beschreibe ich was ihr am besten einstellt.
Abschluss
Mit diesem Artikel hab eich nun zusätzlich zu meiner ioBroker Installation in der virtuellen Maschine noch eine weiter ioBroker Installation im LXC Container durchgeführt. Ich werde in den nächsten Wochen versuchen die beiden Installationen zu vergleichen, um abschließend eine Aussage machen zu können, wenn Installationsart ich favorisieren würde.
Ich werde im Rahmen dieses Vergleichs auch mit ComBee USB-Stick schauen, wie die USB-Weiterleitung im VM und LXC funktioniert oder auch nicht.
Sehr interessantes Projekt. Bin zufällig darauf gestoßen, weil ich mir selbst gerade einen NUC8 i3 bestellt habe und auch unter Proxmox dann den iobroker laufen lassen möchte. Ich möchte dann auch den Combee-Stick betreiben und bin schon gespannt, ob das im LXC Container funktioniert. hast du da schon mehr Infos?
Gibt es Gründe, warum dieses tolle Projekt nicht fort geführt wird?
lxc container startet extrem langsam. Zumindest hier war die Ursache, dass auf eine IPv6 DHCP – Antwort gewartet wird. Wenn das Protokoll nicht verwendet wird, schaltet man es besser aus im container in /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6=1 (falls die Zeile fehlt neu einfügen).
Der Installer Link geht nicht (mehr)
curl -sL https://iobroker.net/install.sh | bash –
Ansonsten super Anleitung!
Ich kann dir nur sagen. Lass es sein conbee in einem LXC zum laufen zu bringen. Ich habe iobroker als LXC laufen und conbee als separate vm. Das einzurichten ist echt einfach und schnell.
Hallo Alex,
ich hab mich zwar noch nicht mit LXC beschäftigt, aber zumindest unter Docker ist es kein großes Problem deconz (Conbee) zum Laufen zu bekommen. Auch ohne den Container im „Privileged“-Mode laufen zu lassen. Man muss den Container lediglich das Recht geben auf den Conbee II Stick zugreifen zu dürfen, danach läuft alles ohne Probleme und verbraucht im Gegensatz zur VM minimale Resourcen. Da Docker auf LXC aufsetzt könnte ich mir vorstellen, das es dort auch so ähnlich funktionieren wird.
Falls nicht könnte man auf dem Proxmox Server ja auch Docker aufsetzen:
https://www.youtube.com/watch?v=1EYAGl96dZY&list=WL&index=9&t=331s
Grüße,
Michael
Hallo Michael,
Das mag schon sein. Ich habe mir einige Tutorials angeschaut und zum Schluss sind die meistens dann doch bei einer VM gelandet. Mir war der Aufwand dies nicht Wert. Eine VM auf dem Nuc bringt das Teil nicht an die Grenze daher sehe ich das eher unproblematisch an. Wenn es der Autor hinbekommt conbee in einem LXC laufen zu lassen werde ich es auch gern probieren.
Hallo Alexa,
ja, Du hast Recht, hab mich ein wenig eingelesen und unter LXC ist das etwas komplizierter als unter Docker. Man muss wohl das „USB Device“ in der Container-Konfiguration „anlegen“ und auf dem Host entsprechende Dateisystem- Rechte vergeben. Ist einiges an Handarbeit…
Morgen kommt mein neuer NUC, dann werde ich so nach und nach meine Docker Container und VMs vom NAS auf den NUC umziehen. Sobald alles wieder läuft werde ich das Durchreichen mal mit einem LXC Container testen..
Grüße,
Michael
Hallo Alex,
sorry für die falsche Anrede in meinem letzten Post. War wohl die Autokorrektur, lässt sich im nachhinein leider nicht mehr ändern…