Vorschaubild für den Artikel über Proxmox auf einem Intel NUC

Intel NUC: Proxmox mit Ubuntu VM für FHEM

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

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:

  1. Etcher downloaden (hier), und installieren.
  2. Proxmox ISO downloaden (hier)
  3. USB-Stick und Image-Datei auswählen und beschreiben lassen 🙂

Etcher Einstellungen um einen USB Stick mit Proxmox zu erstellen

Etcher erstellt vollautomatisch einen bootbaren USB Stick unter Mac und Windows

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: 

Textmeldung "You dont have a valid subscription"

Meldung beim Login im Proxmox Webinterface

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/

Proxmox Login Oberfläche

Proxmox Login mit Standardbenutzer "root" und dem von dir während der Installation vergebenen Passworts

Klicke dann links auf "pve" und dann auf "Shell (JS)"  

Proxmox JS Shell im Webinterface

Mit der JS Shell im Proxmox Webinterace kannst du "copy/paste" benutzen, in der normalen Shell hat das bei mir nicht funktioniert

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: 

  1. Melde dich beim Proxmox Webinterface an
  2. 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"
  3. Klicke dann auf "Content" und "Upload"
    Proxmox Webinterface zum Hochladen vom Betriebssystem

    Klicke links auf local (pve), dann auf "Content" und dann auf "Upload"

  4. Klicke auf "Create VM"
    Proxmox Webinterface

    Klicke auf Create Virtual Machine im eine neue VM zu erstellen

  5. 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.
  6. Im Feld "General" vergibst du einen Namen für die VM
  7. Im Feld "OS" wählst du das gerade hochgeladene Ubuntu.iso File
  8. 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
  9. 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
  10. 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. 
  11. Im Feld "Network" kannst du ebenfalls alles so stehen lassen, es sei denn du setzt VLAN oder ähnliches ein.
  12. Im Feld "Confirm" nun noch auf "Finish" klicken
  13. 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:

  1. 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)
  2. Wähle "Install Ubuntu Server"
  3. Wähle im nächsten Fenster deine Installationssprache (bei mir English)
  4. Bei "Select your location" kannst du United States nehmen
  5. Bei "Configure your keyboard" wählst du "YES" und drückst bei Aufforderung die Y-Taste auf der Tastatur
  6. Beim nächsten Fenster bestätigst du mit YES und drückst Ö auf der Tastatur
  7. 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
  8. 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
  9. 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.
  10. Dann wirst du gefragt ob du "Encryption" aktivieren willst. Ich habe diese nicht aktiv.
  11. 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.
  12. 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 🙂
  13. Bei den nächsten Tabs einfach immer mit YES bestätigen und die Voreinstellung verwenden (siehe Bilder)
  14. Proxy bei Bedarf ausfüllen oder einfach leer lassen wenn ihr keinen nutzt.
  15. 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.
  16. 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:

  1. Klicke im Proxmox Webinterface links auf "Datacenter", dann auf "Storage" und zuletzt auf "Add"
    Proxmox Webinterface mit NFS-Share

    Klicke auf "Datacenter", dann auf "Storage", dann auf "Add"

  2. 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).

QNAP Webinterface

Klicke auf "Erstellen" (1.), dann auf "Freigabeordner" (2.) und erstelle einen neuen Freigabeordner. Klicke dann auf 3. um die Berechtigungen zu bearbeiten

Klicke oben ins Feld wo "Benutzer- und Gruppenberechtigungen" steht und Wähle "NFS-Hostzugriff" aus. Trage dann die Daten wie im Fenster 5 zu sehen ein

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:

  1. Wähle die zu sichernde VM links aus
  2. klicke auf "Snapshot" und vergib einen Namen samt Beschreibung und bestätige mit "Take Snapshot"

Proxmox Webinterface: Snapshot

Um einen Snapshot einer laufenden VM zu erzeugen gehe wie auf dem Bild gezeigt vor

Automatisch:

  1. Wähle links "Datacenter" aus und gehe zum Punkt "Backup"
  2. Klicke auf "Add" und konfiguriere alles nach deinen Wünschen

Proxmox Webinterface: Automatische Backups

Um automatische Snapshots laufender VMs zu erzeugen gehe wie auf dem Bild gezeigt vor

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. 

Über den Author

Emanuel

teilt seine Begeisterung im Bereich Technik, DIY und Hausautomatisierung gerne auf seinem Blog coldcorner.de

Abonnieren
Benachrichtige mich bei
23 Kommentare
Ältester
Neuster Am meisten bewertet
Inline Feedbacks
View all comments
Ingo
5 Jahre zuvor

Hallo,
sehr schönes Thema! Mich würde Interessieren wie du die USB Sachen zu FHEM durchgereicht hast.
LG Ingo

Davedeluxe
Reply to  Emanuel
5 Jahre zuvor

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

Dave
5 Jahre zuvor

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

Dave
Reply to  Emanuel
5 Jahre zuvor

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.

zulumann
5 Jahre zuvor

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‘

Ron
5 Jahre zuvor

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

Rico
5 Jahre zuvor

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

5 Jahre zuvor

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

Kai
5 Jahre zuvor

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

Tim
5 Jahre zuvor

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

Tim
Reply to  Emanuel
5 Jahre zuvor

Jaaa, wer lesen kann ist klar im Vorteil. Es lag an FHEM, FHEM hat einen externen Zugriff nicht zugelassen 🙂

Holger
5 Jahre zuvor

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 ?

Arne
4 Jahre zuvor

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

Arne
Reply to  Arne
4 Jahre zuvor

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.

Christian
2 Jahre zuvor

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?