Intel NUC: Proxmox mit Ubuntu VM für FHEM
Hier und da ließt man über den Einsatz von einem Intel NUC anstatt eines Raspberrys für Serverapplikationen wie FHEM. Auch ich habe endlich diesen Schritt gewagt und bin schwer begeistert. Nachdem mein Raspberry 3 mit FHEM, Homekit, FTUI und haBridge ziemliche langsam wurde musste eine Alternative her. Ich habe meinen Einstieg in die Linux-Welt und FHEM damals mit dem Raspberry 2 begonnen. Begeistert war ich vor allem von dem niedrigen Stromverbrauch, dem kleinen Formfaktor, dem lüfterlosen Design und dem niedrigem Preis. Doch sobald man komplexere Aufgaben mit FHEM bewerkstelligt kommt der kleine Raspi schnell ins schwitzen. Möchte man außerdem komplette Backups von der SD-Karte vornehmen, so ist die einzige Lösung den Raspberry herunter zu fahren, die SD Karte zu Clonen und dann wieder in den Raspberry einzulegen (ich weiß es gibt auch Möglichkeiten ein Update im Betrieb vorzunehmen - ein komplettes SD-Backup als Momentanaufnahme, das nach einem SD-Crash zu 100% funktioniert ist allerdings nur manuell möglich). Außerdem haben SD-Karten eine begrenzte Lebensdauer, sodass ich vorsorglich einmal im Jahr die SD-Karte getauscht habe. All diese Probleme elimiert ein Intel NUC mit Proxmox. Selbstverständlich kann man Proxmox oder einen anderen sog. VM Hypervisor (wie ESXi) auch auf einer anderen Hardware ausführen. Warum allerdings der NUC so unglaublich beliebt hierfür ist, erfährst du in diesem Artikel. Außerdem erkläre ich wie die Installation funktioniert, wie man seine erste VM einrichtet und darauf FHEM oder Homebridge installiert und wie man automatische Backups ausführen kann.
Gliederung
- Intel NUC
- Proxmox (VM Hypervisor)
- Backup unter Proxmox im Vergleich zum Raspberry
- Proxmox Installation: USB-Stick erstellen
- Proxmox Installation auf Intel NUC
- Proxmox Updaten
- Erste Virtuelle Maschine mit Ubuntu 16.04.3 LTS erstellen
- Installation von FHEM unter Ubuntu 16.04.3 LTS
- Installation von Homebridge unter Ubuntu 16.04.3 LTS
- NAS über NFS in Proxmox einbinden
- Proxmox: Automatisches Backup und Snapshots einrichten
- Fazit
Intel NUC
Der Intel NUC ist ein Mini-Desktop PC (ca 10x10cm), ähnlich einem Mac Mini - nur noch kleiner. Es gibt ihn mittlerweile in der 7. Generation, wahlweise mit i3, i5 oder i7 Prozessor. Um den NUC zu betreiben muss man sich noch eine Festplatte und Arbeitsspeicher kaufen. Insgesamt kommt man so bei einem NUC7i3, 120GB SSD und 8GB RAM auf ca. 370 Euro. Ein Netzteil ist hier bereits dabei. Gebraucht kommt man allerdings viel günstiger an einen NUC. Der Mini-Rechner wird eigentlich als Desktop PC eingesetzt, das heißt die meisten werden darauf Windows installieren und ihn für Internet und Office Anwendungen verwenden.
Trotzdem wird der NUC nicht selten als Server für virtuelle Maschinen verwendet. Aus folgenden Gründen:
- klein
- leise (Lüfter kaum hörbar)
- sehr geringer Energieverbrauch.
- Festplatte (m.2 oder SATA) langlebiger als SD-Karten
Doch welchen NUC nehmen? Für 90% wird der NUC7i3 ausreichen. Wenn ihr >5 Full-HD Cams auf dem NUC aufnehmen und analysieren wollt, dann würde ich zum NUC7i5 raten. Ich habe diesen im Einsatz und die Prozessorauslastung geht bei 8 Full-HD RTSP Streams nur selten über 25%. Nebenbei laufen noch mind. 4 weitere Ubuntu-VMs. Wer Windows virtualisieren möchte dem würde ich auch eher zum i5 raten. Das hängt aber immer ganz davon ab was ihr vor habt.
Ähnlich ist es beim Arbeitsspeicher. 90% werden 8GB locker reichen. Wer Zoneminder einsetzt darf ruhig mehr nehmen. Hier empfehle ich einfach einen 8gb RAM Riegel zu kaufen und bei Bedarf um einen weiteren auf 16gb zu erweitern.
Speicherplatz: Weiter unten im Artikel beschreibe ich die Einrichtung einer FHEM-Ubuntu-VM mit 10GB Speicher. Das ist mehr als genug. Planst du also den Einsatz von 5 VMs wären das nur 50gb+10gb für die Proxmox Installation. Dann noch ein bisschen Platz für Snapshots: 120GB SSD reicht. Ich habe für Zoneminder 512gb genommen und habe damit eine 1 Monate Aufnahmekapazität (Aufnahme nur bei Bewegung). Den Speicher kannst du auch jederzeit aufs NAS auslagern.
BNK oder BNH? Den Nuc gibts in zwei Ausführungen. Einmal hoch mit zusätzlichem Sata-Festplatten-Steckplatz und einmal flach ohne diesen Steckplatz. Sollte dir Ausfallsicherheit oder Speicherplatz sehr wichtig sein so würde ich zum höheren NUC greifen. So kannst du einen Raid aus zwei Festplatten für Proxmox einrichten oder eine weitere HDD für mehr Speicher einbauen.
Proxmox (VM Hypervisor)
Hautpsächlich wird auf dem NUC entweder ESXi oder Proxmox als VM Hypervisor eingesetzt. Ein VM Hypervisor ist sozusagen das Betriebssystem, mit dem man seine virtuellen Maschinen auf dem NUC verwaltet. So kann man auf einem NUC mehrere Versionen eines Betriebssystems gleichzeitig ausführen (z.B. 3x Ubuntu, 1x Debian, 1x Windows, 1x Mac OS X). Grundsätzlich laufen diese virtuellen Maschinen als Server, man kann sich allerdings auch mit einem Remote Desktop Client mit diesen Einheiten verbinden. Klassischerweise nutzt man allerdings Serverversionen der Betriebssysteme und greift z.B. über SSH auf die virtuellen Linux Maschinen zu.
Ich habe mir so für jede Anwendung eine eigene virtuelle Maschine erstellt. Wo früher alles auf einem Raspberry lief, hab ich jetzt je eine virtuelle Maschine für
- FHEM
- Homebridge
- haBridge
- AirSonos
- Reverseproxy
- Zoneminder
- und weitere Maschinen als Testumgebung
der Vorteil daran ist, dass ich sofort weiß wo ein Problem liegt und die anderen Dienste dadurch nicht gestört werden.
Mit Proxmox kann ich so über das sehr schön gestaltete Web-Interface bequem auf meine virtuellen Maschinen zugreifen und diese verwalten. Mann kann über das Webinterface sogar eine Console (eine Art VNC) zu jeder VM aufrufen und diese damit steuern und anzeigen lassen .
Backup unter Proxmox im Vergleich zum Raspberry
Backups, wie beim Raspberry durch herunterfahren und herausnehmen der SD-Karten, gehören mit Proxmox der Vergangenheit an. Durch sog. Snapshots kann man jederzeit bei laufendem Betriebssystem ein Abbild der virtuellen Maschine erzeugen und dieses entweder auf der lokalen Festplatte oder auf einem NAS speichern. Dabei belegt der Snapshot nur soviel Speicherplatz, wie die Daten, die sich seit dem letzten Snapshot geändert haben. Diese Snapshots lassen sich außerdem bequem im Webinterface auch nach Zeitplan ausführen. Ich lasse einmal wöchentlich Snapshots von all meinen VMs auf mein NAS ausführen. Wie das geht erfährst du im Punkt "Proxmox: Automatisches Backup und Snapshots einrichten"
Proxmox Installation: USB-Stick erstellen
Egal welche Hardware du verwendest, die Installation von Proxmox ist wirklich einfach. Du brauchst einen USB-Stick und einen Computer mit Windows / Linux oder Mac. Hier findest du die offizielle Installationsanleitung von Proxmox: Link zum Proxmox-Wiki: Installation. Für Mac und Windows habe ich hier die allereinfachste Lösung zusammen gefasst:
Windows + Mac:
- Etcher downloaden (hier), und installieren.
- Proxmox ISO downloaden (hier)
- USB-Stick und Image-Datei auswählen und beschreiben lassen 🙂
Bei wem das nicht klappt kann hier den "etwas" komplizierteren Weg (Mac OS X) verfolgen:
1. Proxmox VE Image Datei downloaden (hier)
2. das Terminal öffnen (Programme --> Dienstprogramme --> Terminal) und folgenden Befehl eingeben (Man muss das heruntergeladene ISO in eine IMG Datei konvertieren)
hdiutil convert -format UDRW -o proxmox-ve_*.dmg proxmox-ve_*.iso
ggf musst du hier den Pfad eintragen, wo die Proxmox ISO Datei liegt. Vermutlich liegt die Datei im Download Ordner. Dann heißt der Pfad /Users/DEIN-MAC-USERNAME/Downloads/ Wie du diesen Pfad ganz einfach herausfinden kannst: Ziehe die Datei per Drag und Drop in das Terminal Fenster. Dann wird dir der Dateipfade nämlich automatisch rein geschrieben. Der Befehl sieht dann so aus:
hdiutil convert -format UDRW -o /Users/DEINmacUSERNAME/Downloads/proxmox-ve.dmg /Users/DEINmacUSERNAME/Downloads/proxmox-ve_*.iso
Stecke dann den USB Stick ein und suchen die Disk-Adresse des Sticks im Terminal mit folgendem Befehl
diskutil list
dann USB Stick auswerfen. Anstatt X trägst du die Nummer deines Sticks ein.
diskutil unmountDisk /dev/diskX
Jetzt kannst du den Stick mit der Proxmox-Datei beschreiben
sudo dd if=/Users/DEINmacUSERNAME/Downloads/proxmox-ve.dmg of=/dev/rdiskN bs=1m
Proxmox Installation auf Intel NUC
Stecke den USB Stick in den NUC und drücke den Power-Knopf. Daraufhin wird das Setup-Menü geladen.
Wähle "Install Proxmox VE". Bei der Auswahl der Festplatte kannst du auf "Options" gehen und die Größe der Proxmox Partition anpassen. Bei mir waren dafür 100 GB eingetragen, was einfach zu viel ist. Habe die Größe auf 10GB reduziert. Der Hostname wurde bei mir automatisch vergeben. Im Prinzip kannst du hier nichts falsch machen. Der Guide führt dich durchs Setup. Danach wird die IP-Adresse angezeigt, unter der dein Proxmox-VE-Host erreichbar ist. Beachte hier dass nur der Aufruf über https möglich ist.
https://proxmoxIP:8006/
Proxmox Updaten
Beim Login wird folgende Meldung angezeigt:
Proxmox ist kostenlos, bietet aber auch "Subscriptions" an: ein zusätzliches Service-Programm mit Updates und zusätzlichem professionellem Support. Dieses Angebot richtet sich aber an Unternehmen und ist für uns uninteressant, zumal es nichts kostenlos ist. Da wir aber trotzdem Updates erhalten wollen, müssen wir Proxmox anpassen da es im Auslieferungszustand automatisch auf "Subscription-Updates" eingestellt ist. Die Umstellung auf kostenlose Updates wird hier von Proxmox selbst beschrieben. Die Umstellung ist übrigens völlig legal und auch so von Proxmox vorgesehen. Die kostenlosen Updates sind trotzdem aktuell, nur übernimmt der Support hierfür keine Verantwortung. Ich hatte noch nie Probleme und wüsste auch nicht warum es welche geben sollte.
Die Umstellung ist ganz einfach. Logge dich aufs Proxmox Webinterface ein.
https://DEINEIP:8006/
Klicke dann links auf "pve" und dann auf "Shell (JS)"
Die Datei sources.list bearbeiten
sudo nano /etc/apt/sources.list
und folgenden Inhalt einfügen
deb http://ftp.debian.org/debian stretch main contrib # PVE pve-no-subscription repository provided by proxmox.com, # NOT recommended for production use deb http://download.proxmox.com/debian/pve stretch pve-no-subscription # security updates deb http://security.debian.org stretch/updates main contrib
Ab jetzt kann Proxmox problemlos geupdatet werden: pve auf der linken Seite wählen, auf Updates klicken, dann auf Refresh. Wenn das "upt get" durchgelaufen ist kann man das Fenster schließen und auf "upgrade" klicken. Hier noch mit Y für YES bestätigen - Fertig 🙂
Erste Virtuelle Maschine mit Ubuntu 16.04.3 LTS erstellen
Update: Mittlerweile erstelle ich sogenannte LXC (Linux Container). Ich habe hierüber einen eigenen Blogbeitrag verfasst (hier klicken)
Für FHEM verwende ich Ubuntu, und zwar in der Server Version mit Long Term Support (LTS). Zwar gibt es mittlerweile Ubuntu Server 17, aber ohne LTS - das heißt wo wir bei Version 16 mit LTS 5 Jahre Support durch Sicherheitsupdates erhalten, gibts bei Ubuntu 17 "nur" 9 Monate Support. Alternativ kannst du natürlich auch zu Debian greifen.
Zuerst müssen wir uns die aktuelle Version von Ubuntu herunterladen, dies kannst du auf der offiziellen Homepage machen (Link zur offiziellen Downloadpage). Sobald der Download abgeschlossen ist laden wir die Datei auf unseren Proxmox Server hoch, und zwar so:
- Melde dich beim Proxmox Webinterface an
- Klicke links auf "local (pve)" - Das wählt den internen Speicher vom NUC aus. Alternativ kannst du auch dein NAS mit Proxmox koppeln. Mehr dazu im Punkt "NAS über NFS in Proxmox einbinden"
- Klicke dann auf "Content" und "Upload"
- Klicke auf "Create VM"
- Alle Einstellungen können nach Erstellung der VM noch verändert werden. Nur bei Hard-Disk solltest du dir vorher überlegen wieviel du brauchst, da es zwar nachher möglich ist, man aber Änderungen am Betriebssystem selbst vornehmen muss. Solltest du später den RAM oder die CPU verändern wollen so ist dies ohne Veränderungen am OS möglich.
- Im Feld "General" vergibst du einen Namen für die VM
- Im Feld "OS" wählst du das gerade hochgeladene Ubuntu.iso File
- Im Feld "Hard Disk" kannst du alle Einstellungen so stehen lassen und lediglich die "Disk size (GB)" nach deinen Wünschen anpassen. Für FHEM habe ich 10GB genommen, das reicht
- Im Feld "CPU" kannst du auch alles so lassen, es sei denn du brauchst richtig viel Leistung. Für meine Zoneminder VM habe ich 4 Cores eingetragen
- Im Feld "Memory" kannst du den benötigten Arbeitsspeicher eintragen. Wenn Ballooning aktiviert ist kann sich eine VM mit sehr starker RAM-Beanspruchung kurzzeitig RAM von einer VM leihen, die gerade weniger RAM benötigt. Ich habe diese Einstellung aktiv und noch keinen Vorteil oder Nachteil bemerkt.
- Im Feld "Network" kannst du ebenfalls alles so stehen lassen, es sei denn du setzt VLAN oder ähnliches ein.
- Im Feld "Confirm" nun noch auf "Finish" klicken
- Die neu erstelle VM lässt sich nun links auswählen und über "Start" rechts oben hochfahren.
Du kannst jetzt in die Console wechseln und siehst wie das Ubuntu Installationsmenü geladen wird. Schritt für Schritt:
- Wähle deine Sprache aus und bestätige mit Enter. Ich habe hier English genommen und diese Anleitung basiert auf englisch (Da ich Linux in Englisch leichter zu verstehen finde und man mit den englischen Begriffen leichter Hilfe im Netz findet)
- Wähle "Install Ubuntu Server"
- Wähle im nächsten Fenster deine Installationssprache (bei mir English)
- Bei "Select your location" kannst du United States nehmen
- Bei "Configure your keyboard" wählst du "YES" und drückst bei Aufforderung die Y-Taste auf der Tastatur
- Beim nächsten Fenster bestätigst du mit YES und drückst Ö auf der Tastatur
- Bei der Frage nach é wählst du no, es sei denn deine Tastatur hat diese Taste. Abschließend bestätigst du mit "Continue". Jetzt wird Ubuntu installiert
- Dann musst du einen Hostnamen vergeben. Also der Name mit dem die VM im Netzwerk auftaucht. Ich mache es mir einfach damit ich später alle VMs voneinander unterscheiden kann: Ich vergebe den selben Namen wie die VM. (bspw. FHEM). Mit continue kommst du zum nächsten Fenster
- Im Fenster "Set up users and password" vergibst du zuerst den "Full name for the new user". Dieser kann identisch sein mit dem Username. Bestätigst du mit Continue kommst du zur Vergabe des Usernames und des Passworts. Merk dir diese Daten unbedingt, die brauchst du später für jeden Login.
- Dann wirst du gefragt ob du "Encryption" aktivieren willst. Ich habe diese nicht aktiv.
- Dann wird die Zeitzone festgelegt. Dies geschieht i.d.R. automatisch und du musst nur noch bestätigen. Hat bei mir immer geklappt und wurde automatisch auf Europe/Berlin gesetzt.
- Bei der Frage nach "Partition disks" kannst du entscheiden ob du LVM brauchst oder nicht. Ich habe hier "Guided - use entire disk and set up LVM" genommen. LVM ist ein Logical Volume Manager, oder anders gesagt: Eine Software, die Festplatten und Partitionen zusammenfassen kann, um daraus ein dynamisches logisches Volume zu erstellen. Der Vorteil: Es kann die Größe im Nachhinein und im laufenden Betrieb verändert werden. Außerdem können mehrere Festplatten als ein Volume angezeigt werden.Für FHEM brauchen wir das sicherlich nicht - aber schaden kanns auch nicht 🙂
- Bei den nächsten Tabs einfach immer mit YES bestätigen und die Voreinstellung verwenden (siehe Bilder)
- Proxy bei Bedarf ausfüllen oder einfach leer lassen wenn ihr keinen nutzt.
- Irgendwann werdet ihr nach "Software selection" gefragt. Hier unbedingt den OpenSSH Server installieren, da ihr sonst später keinen SSH Zugriff habt. WICHTIG: Nicht mit Enter auswählen, sondern mit der Leertaste. Wer Enter drückt kommt sofort zum nächsten Fenster und muss SSH später manuell nachinstallieren.
- Abschließend bestätigst du die Installation des GRUB Boostloaders mit "YES"
Nach der Installation vollzieht das System einen Neustart. Jetzt kannst du dich über die Console mit deinem Benutzernamen und Kennwort anmelden und mit der Installation von FHEM oder Homebridge (siehe weiter unten) fortfahren
Installation von FHEM unter Ubuntu 16.04.3 LTS
Hierfür habe ich mir eine neue Virtuelle Maschine angelegt und frisch Ubuntu darauf installiert. Stelle nun eine SSH Verbindung mit deiner VM her oder arbeite über das Proxmox Webinterface und der Konsole deiner VM. Ich würde hier dringend zu SSH raten, da man in der Proxmox Console keine Befehle per copy/paste einfügen kann - zumindest nicht am Mac).
Update der VM
sudo apt update sudo apt upgrade sudo reboot
Installation der für FHEM benötigten Pakete
sudo apt-get -y install perl-base libdevice-serialport-perl libwww-perl libio-socket-ssl-perl libcgi-pm-perl libjson-perl sqlite3 libdbd-sqlite3-perl libtext-diff-perl libtimedate-perl libmail-imapclient-perl libgd-graph-perl libtext-csv-perl libxml-simple-perl liblist-moreutils-perl ttf-liberation libimage-librsvg-perl libgd-text-perl libsocket6-perl libio-socket-inet6-perl libmime-base64-perl libimage-info-perl libusb-1.0-0-dev libnet-server-perl
Herunterladen von FHEM
sudo wget http://fhem.de/fhem-5.8.deb
Das heruntergeladene FHEM Paket installieren
sudo dpkg -i fhem-5.8.deb
FHEM sollte jetzt automatisch gestartet worden sein, und auch nach einem Neustart wird FHEM automatisch mitgestartet. Der Aufruf des Webinterfaces erfolgt über http://IP.DER.VIRTUELLEN.MASCHINE:8083/fhem
Installation von Homebridge unter Ubuntu 16.04.3 LTS
NodeJS installieren
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install libavahi-compat-libdnssd-dev
Homebridge und Homebridge-FHEM (Plugin für FHEM) Installieren
sudo npm install -g --unsafe-perm homebridge
npm install -g homebridge-fhem
Homebridge Konfigurationsdatei erstellen
mkdir /var/homebridge
nano /var/homebridge/config.json
und mit folgendem Inhalt befüllen und danach die IP-Adresse deiner FHEM Installation anpassen. Ggf. Benutzername und Passwort anpassen (falls ihr keine Credentials gesetzt hab kann diese Zeile einfach gelöscht werden). Falls ihr mehrere Homebridge Installationen aktiv habt, einfach die Portnummer ändern.
{ "bridge": { "name": "Homebridge", "username": "CC:22:3D:E3:CE:30", "port": 51826, "pin": "031-45-154" }, "platforms": [ { "platform": "FHEM", "name": "FHEM", "server": "127.0.0.1", "port": "8083", "auth": {"user": "FhemUser", "pass": "XXX"}, "filter": "room=Homekit" } ], "accessories": [] }
Homebridge zum Autostart hinzufügen (bei mir hat nur folgende Methode funktioniert, da der Autostart unter Ubuntu ein wenig anders funktioniert als im FHEM Wiki beschrieben)
sudo nano /etc/default/homebridge
folgenden Inhalt einfügen
HOMEBRIDGE_OPTS=-U /var/homebridge
Dann folgende Datei bearbeiten:
sudo nano /etc/systemd/system/homebridge.service
folgenden Inhalt einfügen
[Unit] Description=Node.js HomeKit Server After=syslog.target network-online.target [Service] Type=simple User=homebridge EnvironmentFile=/etc/default/homebridge ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target
sudo useradd --system homebridge
sudo cp -r ~/.homebridge/persist /var/homebridge
sudo chmod -R 0777 /var/homebridge
sudo systemctl daemon-reload
sudo systemctl enable homebridge
sudo systemctl start homebridge
NAS über NFS in Proxmox einbinden
Eine Möglichkeit, den Speicher seines NAS-Systems in Proxmox einzubinden ist über NFS. Erstelle dir im NAS-Webinterface ein NFS-Share und lege das dann in Proxmox an. Gehe dazu wie folgt vor:
- Klicke im Proxmox Webinterface links auf "Datacenter", dann auf "Storage" und zuletzt auf "Add"
- Fülle die Felder analog zum Bild aus. Achte darauf die IP-Adresse und das "Export" Feld an dein NAS anzupassen.
Um bei deinem QNAP-NAS eine solche Freigabe zu erstellen gehst du wie folgt vor: Systemsteuerung --> Freigabeordner --> Erstellen --> Freigabeordner ... Vergib einen Namen, den Rest der Einstellungen kannst du so stehen lassen. Bearbeite dann die Berechtigungen des Freigabeordners (siehe Bild).
Proxmox: Automatisches Backup und Snapshots einrichten
Wie weiter oben schon beschrieben ist das Backup bzw. die Snapshots Funktion in Proxmox eine wahre Freude. Die kannst bei laufender VM ein Abbild erstellen und jederzeit zu diesem Stand zurückkehren. Das ganze kannst du manuell oder automatisch machen.
Manuell:
- Wähle die zu sichernde VM links aus
- klicke auf "Snapshot" und vergib einen Namen samt Beschreibung und bestätige mit "Take Snapshot"
Automatisch:
- Wähle links "Datacenter" aus und gehe zum Punkt "Backup"
- Klicke auf "Add" und konfiguriere alles nach deinen Wünschen
Fazit
Für mich war es ein großer Schritt ins Unbekannte. Ich habe auf dem QNAP-NAS mal die Virtualization Station bedient und eine VM erstellt, allerdings fühlte sich das letztendlich ganz anders an. Ich war erstaunt wie einfach es war, Proxmox zum Laufen zu bekommen. Man lernt enorm viel, kann auf ein super Wiki und Forum zurückgreifen und wird recht schnell für seinen Aufwand belohnt. Ich will die einfach Backup Verwaltung und den enormen Geschwindigkeitszuwachs nicht mehr missen. Wenn man es erst mal gewohnt ist, für jede Applikation eine neue VM zu erstellen und somit immer den Überblick hat, wo was darauf installiert ist, dann fühlt es sich irgendwie falsch an alle Programme zusammen auf einen Raspberry zu installieren (Auch wenn es bei mir vorher auch jahrelang so funktioniert hat). Der nächste Schritt wäre sicherlich in Richtung Docker. Allerdings sehe ich derzeit keinen Grund dazu, da die Prozessorauslastung auch so extrem gering ist. Und ich muss zugeben dass ich mich für Docker erst enorm einarbeiten müssten. Ich werde es allerdings definitiv probieren, zumal man mit Proxmox einfach eine VM mit Docker installieren kann oder gar gleich auf LXC setzt. Meinen Raspberry setze ich übrigens weiterhin ein. In Preis/Leistung wohl ungeschlagen, setze ich dort eine weitere FHEM Installation mit fhem2fhem ein. Auf dem gleichen System läuft außerdem YAHM, eine virtuelle Homematic CCU2, mit der ich meine Homematic und Homematic IP Geräte steuere und mit FHEM verbinde. Ich werde dazu einen eigenen Beitrag schreiben.
Zusammenfassend bereue ich den Schritt kein bisschen und bin gespannt welche Features vom NUC und Proxmox ich in Zukunft noch entdecken werde. Wenn ihr hier Tipps für mich habt würde ich mich über einen Kommentar freuen.
Ähnliche Beiträge
- Proxmox: LXC Linux Container erstellen
- deCONZ: Hue-Bridge auf dem Raspberry Pi emulieren
- FreeNAS / TrueNAS für PLEX im HP Microserver Gen8 + Steuerung durch FHEM
- HomeMatic CCU2 mit YAHM auf Raspberry Pi 3
- Max2Play als Multiroom Audiosystem
- Lichtwecker in FHEM und mit Alexa steuern
- Vergleich: RGBW LED Stripe Controller für FHEM
- Proxmox: USB Passthrough für LXC Container (Z-Wave UZB1)
- Kostenloses FHEM Backup in die Cloud (z.B. Dropbox)
- QNAP NAS mit SNMP in FHEM einbinden
Hallo,
sehr schönes Thema! Mich würde Interessieren wie du die USB Sachen zu FHEM durchgereicht hast.
LG Ingo
Hallo Ingo,
das ganze war nicht so ganz einfach, ich habe mich aber an folgendem Tutorial orientiert:https://pve.proxmox.com/wiki/USB_Devices_in_Virtual_Machines
Mittlerweile habe ich nur noch einen USB Adapter zu FHEM durchgereicht – der Funktioniert perfekt. Aufgrund der Reichweite habe ich die restlichen Geräte über SER2NET an einem Raspberry angebunden.
lg
Danke für das tolle Tutorial!
Ich habe grade nen NUC mit RAM und SSD gekauft.
Will versuchen das Proxmox auf die integrierte 16GB Intel Optane zu installieren.
Könntest du mal zu deiner Umsetzung von SER2NET schreiben? Das klingt sehr interessant.
Grüße Dave
Hallo Dave, gute Wahl 🙂 Bin gespannt ob alles auf die Optane passt. Bei Ser2Net habe ich mich an folgendem Tutorial orientiert: https://community.openhab.org/t/share-z-wave-dongle-over-ip-usb-over-ip-using-ser2net-socat-guide/34895
Geht aber wohl leider nicht mit Bluetooth.
lg
Hi,
kannst du mir bei evtl weiterhelfen?
Ich habe jetzt Proxmox und ne Kopie meines FHEM auf einem LXC laufen.
Soweit so wundervoll 😉
Ich habe testweise einen Arduino Nano (SignalDUINO) angeschlossen und habe ihn scheinbar erfolgreich an den LXC weitergeleitet.
Wenn ich per Konsole in dem LXC schaue finde ich: Bus 001 Device 003: ID 0403:6001 Name…..
Jetzt weiß ich nur nicht, wie ich das Gerät in FHEM anlege, bisher habe ich das immer per /dev/serial/by-id/… gemacht aber das ist hier scheinbar nicht vorhanden.
Stattdessen habe ich /dev/tty, tty1 und tty2 zur Verfügung. Aber was ist jetzt was?
Grüße Dave
Hallo Dave,
wahrscheinlich hast du schon versucht das Gerät mit dem neuen Pfad anzulegen. Werden bei deinem Arduino noch weitere USB Geräte erzeugt die man durchreichen könnte? Habe im Moment leider keinen Nano hier um das zu testen – sorry
lg, Emanuel
Hi,
ich komm mit dem Problem nicht weiter, bin aber mit den ganzen USB-Dongles sowieso nicht ganz zufrieden.
Ich werde mir jetzt über alternativen Gedanken machen wie ich meine noch vorhandenen Dongles umbauen zu LAN-Geräten.
Hallo, hier ist mein „post-installation script for Proxmox“ vielleicht ist es für den einen oder anderen hilfreich…
#!/bin/bash
#
# Check if user is root
#
if [ $(id -u) != „0“ ]; then
echo „Error: You must be root to run this script, please use the root user to install the software.“
exit 1
fi
if [ ! -f /etc/debian_version ]; then
echo „Unsupported Linux Distribution. Prepared for Debian“
exit 1
fi
################################################################################
#
# post-installation script for Proxmox
#
################################################################################
#
# Assumptions: proxmox 5.2 installed
#
################################################################################
#
# THERE ARE NO USER CONFIGURABLE OPTIONS IN THIS SCRIPT
#
################################################################################
echo -e ‚\033[33m——Setup Locales to en_US.UTF-8——\033[33m‘
echo -e „\033[0m“
dpkg-reconfigure locales && update-locale LANG=en_US.UTF-8 && locale-gen –purge –no-archive && update-initramfs -u -k all
echo -e ‚\033[33m—-Setup Apt-Sources and Upgrade System—-\033[33m‘
echo -e „\033[0m“
## disable enterprise proxmox repo
echo -e „#deb https://enterprise.proxmox.com/debian stretch pve-enterprise\n“ > /etc/apt/sources.list.d/pve-enterprise.list
## enable public proxmox repo
echo -e „deb http://download.proxmox.com/debian stretch pve-no-subscription\n“ > /etc/apt/sources.list.d/pve-public-repo.list
## Add non-free to sources
sed -i „s/main contrib/main non-free contrib/g“ /etc/apt/sources.list
## Install the latest ceph provided by proxmox
echo „deb http://download.proxmox.com/debian/ceph-luminous stretch main“ > /etc/apt/sources.list.d/ceph.list
## Refresh the package lists & Fix no public key error for debian repo
apt-get update && apt-get install -y debian-archive-keyring
echo -e ‚\033[33m—-Update proxmox and install various system utils—-\033[33m‘
echo -e „\033[0m“
apt-get -y dist-upgrade && pveam update
## Fix no public key error for debian repo
apt-get install -y debian-archive-keyring
## Install openvswitch for a virtual internal network
apt-get install -y openvswitch-switch
## Install zfs support, appears to be missing on some Proxmox installs.
apt-get install -y zfsutils-linux
## Install missing ksmtuned
apt-get install -y ksmtuned && systemctl enable ksmtuned
## Install ceph support
#echo „Y“ | pveceph install
echo -e ‚\033[33m—-Install common system utilities—-\033[33m‘
echo -e „\033[0m“
apt install -y intel-microcode acpi acpid acpi-support cpufrequtils
apt install -y whois omping wget axel nano pigz net-tools htop iptraf iotop iftop iperf screen unzip zip
apt install -y software-properties-common curl dos2unix dialog mlocate build-essential git sudo
#snmpd snmp-mibs-downloader
echo -e ‚\033[33m—-Setup SystemD Service—-\033[33m‘
echo -e „\033[0m“
# Remove conflicting utilities
apt-get purge -y ntp openntpd chrony
## tmp.mount
cp /usr/share/systemd/tmp.mount /etc/systemd/system/
systemctl enable tmp.mount && systemctl start tmp.mount
## fstrim timer
cp /usr/share/doc/util-linux/examples/fstrim.{service,timer} /etc/systemd/system
systemctl enable fstrim.timer && systemctl start fstrim.timer
## fstrim.service
cat > /etc/systemd/system/fstrim.service < /etc/systemd/timesyncd.conf < /etc/systemd/system/kexec-pve.service <> /root/.bash_profile
# rc-local
cat > /etc/systemd/system/rc-local.service < /etc/rc.local < /sys/block/sda/queue/read_ahead_kb
#echo 256 > /sys/block/sda/queue/nr_requests
echo ‚1500‘ > ‚/proc/sys/vm/dirty_writeback_centisecs‘
exit 0
EOF
chmod +x /etc/rc.local
systemctl enable rc-local && systemctl start rc-local.service
## Disable portmapper / rpcbind (security)
systemctl disable rpcbind && systemctl stop rpcbind
echo -e ‚\033[33m—-Setup udev rules—-\033[33m‘
echo -e „\033[0m“
cat > /etc/udev/rules.d/60-sched.rules < /etc/sysctl.conf <> /etc/initramfs-tools/modules
echo lz4_compress >> /etc/initramfs-tools/modules
update-initramfs -u
echo -e ‚\033[33m—-Setup Grub—-\033[33m‘
echo -e „\033[0m“
cp /etc/default/grub /etc/default/grub.old
sed -i ’s/GRUB_CMDLINE_LINUX_DEFAULT=“quiet“/GRUB_CMDLINE_LINUX_DEFAULT=“acpi=force zswap.enabled=1 zswap.compressor=lz4″/g‘ /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT=“ipv6.disable=1 acpi=force pcie_aspm=force nmi_watchdog=0″
sed -i ’s/#GRUB_GFXMODE=640×480/GRUB_GFXMODE=1920x1080x32/g‘ /etc/default/grub
update-grub
echo -e ‚\033[33m—-Set pigz to replace gzip, 2x faster gzip compression—-\033[33m‘
echo -e „\033[0m“
cat > /bin/pigzwrapper < /etc/fail2ban/filter.d/proxmox.conf <<EOF
[Definition]
failregex = pvedaemon\[.*authentication failure; rhost= user=.* msg=.*
ignoreregex =
EOF
cat > /etc/fail2ban/jail.d/proxmox < /etc/cron.daily/proxmox-nosub < /proc/sys/fs/inotify/max_user_watches
echo „fs.inotify.max_user_watches=1048576“ >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
echo -e ‚\033[33m—-Increase max FD limit / ulimit—-\033[33m‘
echo -e „\033[0m“
cat <> /etc/security/limits.conf
* soft nproc 131072
* hard nproc 131072
* soft nofile 131072
* hard nofile 131072
root soft nproc 131072
root hard nproc 131072
root soft nofile 131072
root hard nofile 131072
EOF
echo -e ‚\033[33m—-Increase kernel max Key limit—-\033[33m‘
echo -e „\033[0m“
cat < /etc/sysctl.d/60-maxkeys.conf
kernel.keys.root_maxkeys=1000000
kernel.keys.maxkeys=1000000
EOF
echo -e ‚\033[33m—-Remove no longer required packages and purge old cached updates—-\033[33m‘
echo -e „\033[0m“
apt autoremove -y && apt autoclean -y
## Script Finish
echo -e ‚\033[1;33m Finished….please restart the system \033[0m‘
Hallo,
kann ich direkt auf ein Verzeichnis einer Gast-VM auf einer anderen Gast-VM zugreifen (beides Debian 9)?
Hintergrund ist, ich will mit inotify2 ein fremdes Verzeichnis überwachen. Um aus Fhem heraus eingehende SMS mit Gammu zu realisieren.
Gruß
Ron
Hallo, das müsste funkionieren. Du kannst bei Gast-VM A eine Freigabe (z.B. Samba) einrichten und mit der Gast-VM B darauf zugreifen. Gibt aber viele Möglichkeiten das zu realisieren. lg
Hallo Emanuel,
habe deine Anleitung zu meiner Aufgabe ge,acht und auch alles so umgesetzt. Erste hürde war eine einbindung vom Usb Adapter, der geht aber nun inzwischen.
Da ich alles was fhem speichern möchte auf meinem NAS auslagere habe ich früher über die /etc/fstab einen Laufwerk vom NAS eingehängt.
Nun versuche ich schon 3 Tage das hier auch hinzubekommen.
Stand heute:
Frischer Container, nutzer angelegt, rc.local (mount -a) hinzugefügt und /etc/fstab meine Daten eingetragen.
Reboot –> Netzlaufwerk sofort da…
sudo apt-get update + sudo apt-get upgrade —>Netzlaufwerk wird nicht mehr eingebunden….(irgendwas pasiert beim update)
Über Hilfe würde ich mich sehr freuen…
Rico
Hallo Rico, was hast du denn für eine Betriebssystem? Und ist es eine VM oder ein LXC?
lg
Hallo, ich habe proxmox so wie in deiner Anleitung angelegt und in einer VM den iobroker zum laufen bekommen.
Das alles auf einem Intel NUC 6CAYH Mini-PC J3455 mit 240 GB SSD.
für proxmox habe ich 20 GB auf der Platte zugewiesen. Wie kann ich nun den Rest der Platte nutzen.
Ich habe dort schon mit cfdisk auf /def/sda eine weitere Partitionen mit 150 GB und Type: Linux Filesystem einrichtete und mit mkfs.ext4 /dev/sda4 formatieren möchte bekomme ich folgende Fehlermeldung „The file /dev/sda4 does not exist and no size was specified.“.
Auf die 150 GB möchte ich meine VM usw. speichern.
Was mache ich Falsch und oder wie mache ich es richtig.
lg
Erstmal Danke für diese tolle Seite.
Ich habe mich heute auch mal versucht Proxmox auf meinen NUK zu bringen.
Aber leider bin ich nicht weit gekommen. Bin bisher noch sehr neu unter Linux.
Installiert ist ProxMox.
Ich kann mich per WebGui auch einloggen.
Laut Deiner Anleitung soll ich nun „Proxmox Updaten“.
Dazu wollte ich die von Dir beschriebene Umstellung auf kostenlose Updates machen.
Also auf die WebGui eingeloggt.
Links auf pve
Aber ich sehe dort nur den Punkt „Shell“
Der Punkt „Shell JS“ ist nicht vorhanden.
Ich habe versucht unter „Shell“ die Zeile:
sudo nano /etc/apt/sources.list einzutragen.
Aber dort kommt nur: -bash: sudo: command not found
Wie bekomme ich den Punkt „Shell JS“?
Danke für die Hilfe.
LG Kai
Hey Kai,
tatsächlich ist seit einem neueren Update die Shell JS weg. Der Befehl sollte aber dennoch funktionieren. Probiere es mal ohne sudo
lg, Emanuel
Hallo Emanuel,
erstmal danke für die tolle Seite. Das hat mir alles sehr geholfen zu erkennen wie ich es machen kann, nach dem tot meines Cubietrucks.
Ich habe nun eine VM LXC erstellt und FHEM installiert. Das Funktioniert im eigenen Netz prima. Nun habe ich wie immer den Port in der FritzBox frei gegeben. (Natürlich auf der richtigen IP) aber außerhalb habe ich trotzdem keinen Zugriff. Hast du eventuell eine Idee wo ich suchen kann?
Danke dir und Grüße
Tim
Servus Tim,
hat deine VM LXC eine eigene IP? Findest du im Terminal mit ifconfig heraus
lg
Jaaa, wer lesen kann ist klar im Vorteil. Es lag an FHEM, FHEM hat einen externen Zugriff nicht zugelassen 🙂
Super Tutorial !!
Bin jetzt, nachdem mein RASPI, zu langsam geworden ist, beim NUC gelandet, dabei gefällt mir das ProxMox Prinzip sehr gut, da ich dann verschiedene Systeme für FHEM, NextCloud und Traccar unabhängig laufen, backupen, updaten kann.
Allerdings hab ich jeweils Probleme mit den VMs mit oder ohne Container.
Installation der Linux Versionen in Containern ? Ich bekomme dann keinen NFS Zugriff auf meine NAS hin.
Selbst die im Netz angegeben Infos, die lxc-default-with-mounting um mount fstype=nfs zu erweitern hilft mir nicht.
Daher versuche ich jetzt mit Linux VMs ohne Container, da lässt sich das NAS Verzeichnis mounten, aber da laufe ich in das Problem, dass ich mit der Installation eines standard Linux Ubunte kein Copy/Paste in der VM Shell nutzen kann. Das ist dann auch wieder total unkomfortabel.
Wichtig ist mir die NAS Verbindung, da ich die Daten z.B. von FHEM kopieren möchte und auch die Möglichkeit Copy/Paste, um z.B. komfortabel die entsprechende Befehle in die Shell übertragen zu können.
Kennst du eine Lösung, mit der Beides möglich wäre ?
Hey Holger,
die integrierte Shell in Proxmox nutze ich kaum, ich stelle immer eine Verbindung über SSH her um dort komfortabel Copy/Paste nutzen zu können. Hoffe das hat dir geholfen, auf dem Mac verwende ich das integrierte Terminal. Für Windows gibt es z.B. PuTTY
lg
Hi,
bin jetzt auch dabei auf Proxmox umzusteigen. Soweit läuft alles, ich hänge aber bei der Anpassung der sources.list. D.h. angepasst habe ich sie, bekomme aber immer noch eine Fehlermeldung, dass ich keine gültige Subscription hätte.
Im Log steht auch nach wie vor etwas von Enterprise
starting apt-get update
Ign:1 http://ftp.debian.org/debian stretch InRelease
Hit:2 http://security.debian.org stretch/updates InRelease
Hit:3 http://ftp.debian.org/debian stretch Release
Ign:4 https://enterprise.proxmox.com/debian/pve stretch InRelease
Ign:5 https://enterprise.proxmox.com/debian/pve stretch Release
Ign:6 https://enterprise.proxmox.com/debian/pve stretch/pve-enterprise amd64 Packages
Ign:7 https://enterprise.proxmox.com/debian/pve stretch/pve-enterprise all Packages
Geht natürlich noch weiter, ist nur ein Ausschnitt.
Endet dann mit:
Err:6 https://enterprise.proxmox.com/debian/pve stretch/pve-enterprise amd64 Packages
401 Unauthorized
Ign:7 https://enterprise.proxmox.com/debian/pve stretch/pve-enterprise all Packages
Ign:8 https://enterprise.proxmox.com/debian/pve stretch/pve-enterprise Translation-en
Hit:10 http://download.proxmox.com/debian/pve stretch InRelease
Reading package lists…
W: The repository ‚https://enterprise.proxmox.com/debian/pve stretch Release‘ does not have a Release file.
E: Failed to fetch https://enterprise.proxmox.com/debian/pve/dists/stretch/pve-enterprise/binary-amd64/Packages 401 Unauthorized
E: Some index files failed to download. They have been ignored, or old ones used instead.
TASK ERROR: command ‚apt-get update‘ failed: exit code 100
Was mache ich falsch?
LG A
OK, habs dann doch noch gefunden. In der /etc/apt/sources.list.d/pve-enterprise.list musste
#deb https://enterprise.proxmox.com/debian/pve stretch pve-enterprise
auskommentiert werden. Danach ging es.
Wenn ich jetzt diese Anleitung und das Tut zu den LXC Containern kombiniere, soll ich Proxmox dann den gesamten Platten Platz zuweisen, wenn ich die SnapShots auf mein NAS legen möchte?