Proxmox Control Panel Documentation

Proxmox Panel


Einleitung

Dieses Produkt erfordert ein gewisses Level an Expertise. Bei Fragen sind wir über Ticket oder E-Mail erreichbar.


Danke für den Kauf dieses Produkts. Du bist super!
Du hast eine Lebenslange Lizenz des Produkts erhalten und direkt Support der Entwickler

Diese Dokumentation soll dir helfen, das Produkt zu installieren und passend für dich einzurichten

Voraussetzungen

Du brauchst die folgenden Sachen um das Produkt zu installieren:

  1. Web Browser for testing (eg: Google Chrome or Mozilla Firefox)
  2. Einen Server:
    1. Basis-Server: (s.h. Anleitung hier)
  3. Einen Server mit Proxmox 6.1 Installiert

Installation #nach oben

Lass uns Anfangen das CP zu installieren. In dieser Anleitung nutzen wir einen Server mit Debian 10, es sollte aber mit möglicherweise kleinen Änderungen auch auf anderen Betriebssystemen funktionieren.

Wir werden die folgenden Schritte ausführen:

  1. Runterladen und entpacken
  2. Datenbank importieren
  3. Config bearbeiten
  4. Abhängigkeiten installieren

Runterladen und entpacken

Wir gehen in den /var/www/html-Order (nutze cd). Deinen Download-code findest du im CIS unter dem Reiter "Produkte" (https://bennetgallein.de/cis/products)

                                    root@server:/var/www/html# sudo apt install unzip && wget --prefer-family=IPv4 https://bennetgallein.de/api/download-key/...
                                

Nach dem runterladen, bennene die Datei um:

                                    root@server:/var/www/html# mv <file> cp.zip
                                

Und entpacke sie:

                                    root@server:/var/www/html# unzip cp.zip
                                

Datenbank importieren

Durch die Basiseinrichtung haben wir bereits einen Nutzer für das CP erstellt.

Wir gehen jetzt wieder über das Terminal in die mysql shell.

                                    root@server:/# mysql -u root
                                

Wenn du in der Basiseinrichtung ein Passwort für den root-Nutzer gesetzt hast, nutze diesen Befehl und gib das Passwort ein wenn gefordert:

                                    root@server:/# mysql -u root -p
                                

Du solltest jetzt soetwas sehen:

                                    MariaDB [(none)]>
                                

Jetzt können wir die Datenbank erstellen:

                                    MariaDB [(none)]> CREATE DATABASE PMCP;
                                    Query OK, 1 row affected (0.01 sec)

                                    MariaDB [(none)]>
                                

Das war's auch schon. Nutze exit; um die Datenbank wieder zu verlassen.
Als nächstes importieren wir die Datenbank mit dem folgenden Befehl

                                    root@server:/# mysql -u root -p PMCP < /var/www/html/database.sql
                                

Abhängigkeitn installieren

Jetzt installieren wir die Abhängigkeiten, indem wir das mitgelieferte Installations-script ausführen

                                    root@server:/var/www/html/# chmod +x ./bin/install.sh && sudo ./bin/install.sh
                                

Dies wird alle Abhängigkeiten installieren, die das CP benötigt. Wenn nach einem Nutzernamen gefragt wird, stelle sicher, dass die IP-Adresse des Servers in der Lizenz im CIS steht.

Lade nun die Sprachdatein runter.

                                    root@server:/var/www/html/# chmod +x ./bin/download_language_files.sh && sudo ./bin/download_language_files.sh
                                

Config bearbeiten

Jetzt wollen wir die config einmal grundlegend bearbeiten, damit wir auf das Panel zugreifen k&oouml;nnen. Es müssen nur die unten genannten Einstellungen gemacht werden, alles weiter lässt sich später direkt im CP einstellen.

                                    root@server:/var/www/html# nano config.json
                                

Die Tabelle unten zeigt die key-value Paare für jeden config-Eintrag, die du jetzt setzten musst.

Schlüssel Beispiel Wert
APP_URL "/" Dies ist die Basis-URL der App. Wenn du es auf yourdomain.com/ laufen haben möchtest, gib / ein, andernfalls einen Pfad wie z.B. /Proxmox/. Das würde heißen, dass das CP in dem Ordner /var/www/html/Proxmox/ liegt.
DB_HOST "localhost" Der Datenbank Server. localhost oder 127.0.0.1 wenn du das Tutorial befolgt hast.
DB_USER "root" Der Datenbank Nutzer.
DB_PASSWORD "root" Das Passwort zu dem Datenbanknutzer in DB_USER. "" wenn kein Passwort bei der Installation gesetzt wurde
DB_NAME "PMCP" Der Datenbank Name. Wenn du das Tutorial befolgt hast, gib PMCP an
LANGUAGE "de" Die Sprache welche genutzt werden soll.

Speicher alles ab wenn du fertig bist indem du ctrl + x drückst und dann mit Y bestätigst.

Erster Login

Jetzt, da alles installiert ist, kannst du die Seite in deinem Browser öffnen.

Du solltest einen Login screen sehen:

Klicke auf registriern und erstelle dir einen Nutzer. Melde dich dann mit diesem wieder an.

Jetzt, navigiere zu den Einstellungen und dann zu Allgemein.

Füge die URL zu deinem Logo in das Logo-Feld und klicke speichern.

Proxmox verbinden

Jetzt wollen wir das Panel so konfigurieren, dass es mit unserem Proxmox server funktioniert.

Setze die Proxmox IP auf die IP-Addresse von deinem Proxmox Server, Proxmox user zu dem Nutzernamen über welchen du dich auch auf dem Proxmox server anmeldest und Proxmox passwort auf das Passwort von dem Nutzer. Die Proxmox Node ist der Server auf dem die images für die VMs liegen. In meinem Fall ist dies dev-01 (im Screenshot makiert), also schreibe ich das da rein. Wenn du mehrere Nodes in einem Cluster hast, müssen alle Nodes auf den Storage der VMs zugriff haben. Andernfalls können keine VMs auf der Node erstellt werden. Ich habe zum testen das eingebaute CEPH von Proxmox genommen und das hat super funktioniert.

Proxmox gibt uns die Möglichkeit zwischen Linked- und Full-clones zu unterscheiden. Bei Full-clones kopieren wir die komplette Festplatte der Vorlage, was dann heisst, dass wir die Vorlage löschen können ohne die einzelnen VMs löschen zu müssen.
Dies hat aber zur Folge, dass Full-clones mehr Speicherplatz auf der Festplatte verbrauchen und etwas länger zum erstellen brauchen.
Welche dieser Beiden Option genutzt werden soll lässt sich mit der "Full clones?" Einstellung ändern. Angehakt heisst, dass volle Clones gemacht werden.

Limits setzen

Um zu kontrollieren wie viele Resourcen einer Node für VMs genutzt werden haben wir die Option Limits zu setzen.

In dem unten stehenden Bild kann man sehen, dass ich der Node dev-03 ein Limit von 90% gebe.
Wenn alle Nodes die gleichen Specs haben heisst das, dass dev-03 mehr Resourcen für VMs nutzen kann als dev-01 und dev-02.

Wenn du eine neue Node zum cluster hinzugefügt hast, kannst du dessen Limit setzten indem du den Namen in node-name zusammen mit dem Limit eingibst und "Speichern" klickst..

E-Mail Einstellungen

Das Panel versendet E-Mails zu Benachrichtigungen und wenn der Server abläuft oder kurz davor ist. Deswegen ist es wichtig, dass die Einstellungen hierfür korrekt sind.

Wenn du keinen E-Mail Server hast (order pflegen möchtest, kannst du dir hier einen kaufen: Hosted Mail).

Dies sind die Sachen, welche du einstellen kannst.

E-Mail Server Die Adresse/IP des SMTP-Server über den E-Mail versendet werden sollen
E-Mail Server Port Der SMTP-Port
E-Mail Server Verschlüßelung Die Verschlüßelung welche genutzt werden soll
E-Mail Nutzer Nutzername zur Anmeldung am SMTP-Server
E-Mail Passwort Passwort für den Nutzer
E-Mail Senderadresse Die E-Mail Adresse von welcher die E-Mails gesendet werden sollen
E-Mail Sendername Der Absendername (wird dem Empfänder angezeigt)
E-Mail Antwortadresse Eine seperate Antwort-Adresse welche genutzt wird, wenn der Empfänger auf "Antworten" klickt
E-Mail Antwortsname Der anzeigte Name dieser Adresse

Wenn du dir nicht sicher bist was deine Einstellungen sind, kannst du versuchen sie automatisch erkennen zu lassen.

In dem ersten Feld kannst die E-Mailadresse eintragen von welcher aus du senden möchtest. Das CP versucht dann die Einstellungen zu laden. Mit "Übernehmen" kannst du dann die Einstellungen anwenden.

Mit dem Mail-Test kannst du jederzeit deine Einstellungen testen. Vorher speichern und dann absenden und wenn alles funktioniert bekommst du eine Test-Email an die E-Mail Adresse welche in deinem Account hinterlegt ist.

Invoice

Jetzt wollen wir die Rechnungsinformationen richtig setzten.

INVOICE_1 bis INVOICE_4 sind die Zeilen für die Adresse in der Rechnung. Wenn du die MwSt ausweisen musst, checke die Box und schreibe den Steuersatz als Prozentzahl rein. (Bsp.: 16)

Preise

Als nächtes wollen wir die Preise richtig einstellen.

Wie zu sehen ist, habe ich den Basis-Preis für CPU auf 2 gesetzt und die Standard-Menge auf 1. Das heißt, dass niedrigste was ein Kunde wählen kann, ist ein Kern, was dann 2 Euro kostet.

Als nächtes habe ich den Preis für jeden extra Kern auf 50 cent gesetzt. Das heißt wenn der Kunde 2 CPUs wählt, zahlt er 2,50 € Die Maximale Menge an Kernen auswälbar ist auf 8 gesetzt. Proxmox kann keine VMs mit 8 Kernen erstellen wenn die CPU auf dem Host nur 4 Kerne hat, die Maximale Menge darf als nicht größer als die Anzahl der Kerne vom Host sein!

Wenn ein Kunde sich einen Server mit 4 Kernen aussucht, wird der Preis also so berechnet: 2 € + 3 * 0.50 € = 3.50 €. Das gleiche Prinzip gilt für HDD und RAM.

IP Adressen

IP Addressen müssen manuell eingetragen werden, damit sie bei der VM-Erstellung zugewiesen werden können.

Dies ist die Übersicht alle IP-Adressen, über den Knopf oben rechts können neue hinzugefügt werden.

Der Dialog fordert eine IP-Adresse, eine Netzmaske und ein Gateway. Dies ermöglicht dir, mehrere IP-Adresse auf einmal hinzuzufügen

Das Panel ist nicht in der Lage VMs zu erstellen wenn keine IP-Adressen mehr frei sind!

Hetzner (und wahrscheinlich andere)

In eine brige-configuration braucht proxmox eine MAC-Adresse auf dem Netzwerkadapter, damit Proxmox die Anfragen dementsprechend routen kann. Diese wird nicht automatisch bei der VM-Erstellung eingetragen, wesswegen das Feld bei dem hinzufügen der Adresse auch leer gelassen werden kann.

Wenn die oben makierte Checkbox aktiviert ist, wird das Panel nach dem erstellen der VM den Netzwerkadapter bearbeiten und die MAC aus der IP-Adresse hinzufügen.

PayPal

Als nächtes müssen wir Kunden einen Weg geben Guthaben auf ihren Account zu laden. Dies ist nicht kompliziert, wir brauchen nur eine Application bei PayPal und müssen dann die Client-ID und das Secret kopieren.

Geh zum PayPal Developer Dashboard und logge dich mit deinem PayPal Account ein.

Als nächtes, klicke auf den Tab "Live" und dann "Create app":

Gebe der App einen Namen und du solltest die Client-ID und das Secret sehen (Secret muss ausgeklappt werden).

Jetzt kopiere diese Daten in die Einstellungen und stelle den PayPal Modus auf "production". Kunden können jetzt Über PayPal Guthaben aufladen.

Stripe

Stripe ist ein Zahlungsanbieter für primär Kartenzahlungen. In dieser Kurzanleitung wollen wir zeigen wo man die entsprechenden Zugangsdaten bekommt und welche Sachen man einstellen muss.

Voraussetzungen:

  1. Ein verifizierter Stripe-Account
  2. Administrator-Zugang zum Proxmox-Panel & zum Stripe Dashboard

Als erstes melden wir uns bei Stripe an & navigieren zu "Developers" > "API keys" wie auf dem Bild unten makiert ist.

Dort sehen wir dann auch schon unsere Keys. Der "Publisheable key" ist im Panel der "Stripe Client"-Key. Der "Secret key" ist der "Stripe Secret". Diese beiden Key müssen kopieren und im Panel gespeichert werden.

Danach wollen wir eine sogenannte Webhook erstellen, damit wir erfolgreiche Zahlungen auch annehmen könenn. Hierfür navigieren wir zu "Developers" > "Webhooks".

Hier klicken wir jetzt auf "Add endpoint" bei "Endpoints receiving events from your account".

Als URL geben wir jetzt die URL von unserem Panel + "/api/stripe-webhook" an. Diese URL ist essenziell wichtig. Wenn das Panel normalerweise über cp.test.com erreichbar ist, lautet die URL für dieses Feld cp.test.com/api/stripe-webhook. Wenn das CP in einem Unterorder installiert ist und damit normalerweise über test.com/CP/ zu erreich ist, muss die URL jetzt test.com/CP/api/stripe-webhook sein.

Als Beschreibung kann man irgendwas nehmen. Als Version sollte immer die aktuellste genommen werden.

Bei Events brauchen wir nur "checkout.session.completed". Anschließend bestätigen wir mit "Add endpoint".

Wenn wir nun auf die Webhook klicken, können wir uns das "Signing secret" kopieren, welches genutzt wird um die Anfragen an der Webhook zu validieren. Dieses muss in das "Stripe Webhook" Feld im CP kopiert werden.

Mollie

Mollie ist ein Zahlungsanbieter für alle möglichen Zahlungarten. In dieser Kurzanleitung wollen wir zeigen wo man die entsprechenden Zugangsdaten bekommt und welche Sachen man einstellen muss.

Voraussetzungen:

  1. Ein verifizierter Mollie-Account mit irgendwelches Zahlungsarten aktiviert
  2. Administrator-Zugang zum Proxmox-Panel & zum Mollie Dashboard

Logge dich bei Mollie ein und navigiere in der sidebar zu "Entwickler -> API Schlüßel". Dort findest du einen Test-Key und einen Production-Key.

Da wir nun unsere Zugangsdaten haben, können wir diesen nun im CP eintragen. Mit speichern werden die Änderungn übernommen und jetzt kann man Mollie als Zahlungsart hinzufügen und einzelne Methoden aktivieren.

Zusätzliche Software

Apache kann nur eine Anfrage zur Zeit verarbeiten. Wenn diese Anfrage etwas länger laden sollte, sorgt dies dafür, dass keine anderen Anfragen bearbeitet werden können. In diesem Abschnitt wollen wir uns einmal einen Lösungsweg für dieses Problem anschauen.

Wir werden auf PHP-FPM zurückgreifen um mehrere Anfragen auf einmal bearbeiten zu können. Hierf¨r sind zusätzliche Pakete und Einstellungen nötig.

Als erstes wollen wir die neuen Pakete installieren und diese aktivieren. Dies geht mit dem folgenden Befehl:

                                    root@server:/var/www/html# sudo apt install php7.3-fpm
                                    root@server:/var/www/html# sudo a2enmod proxy_fcgi setenvif && a2enconf php7.3-fpm
                                

Nun müssen wir die .htaccess anpassen, welche mit dem Panel installiert wurde.
Dafür gehen wir in den Installationsordner (nach Anteilung /var/www/html) und fügen folgenden Absatz am Ende der Datei ein;

                                    <FilesMatch \.php$>
                                        # 2.4.10+ can proxy to unix socket
                                        SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"
                                    </FilesMatch>
                                

Dadurch haben wir jetzt PHP-FPM erfolgreich eingstellt.

VNC Terminals

VNC terminals können genutzt werden um dem Kunden Zugriff aus seinen Server zu geben, auch wenn SSH deaktiviert oder aus anderen Gründen nicht erreichbar ist.

Grundlegende Voraussetzungen:
  • - Der Proxmox-Server muss über seinen FQDN erreichbar sein. Ich nutze zum testen die intere Domain dev.intern und mein Proxmox-Server liegt auf dev-01.dev.intern.
  • - Das SSL-Zertifikat des Proxmox-Server muss von Browsern als vertrauenswürdig erkannt werden. Am einfachsten ist hier Let's Encrypt (s.h Proxmox Dokumentation), dies ist auch übers die GUI konfigurierbar.
  • - Der Proxmox-Server muss auf der gleichen Stammdomain liegen wie das CP. Zum nutzen des Terminals muss eine Domain vorhanden sein. Das heisst, wenn der Proxmox-Server auf dev-01.dev.intern liegt, muss das CP auch irgendwo auf dev.intern liegen. Bei mir liegt es auf cp.dev.intern, kann aber ebenso auf dev.intern liegen

Wenn alle der oben genannten Anforderungen erfüllt sind, können wir nun in Proxmox einen Nutzer anlegen über welchen dann die Zugriffe auf das Terminal möglich werden.

Als erstes erstellen wir eine Gruppe "VNC". Alle Namen die ich hier benutze sind Platzhalter und können über die Einstellungen jederzeit geändert werden.

Jetzt erstellen wir eine Rolle. Wichtig hierbei ist, dass die Rolle nur die Rechte VM.Console hat. Da dieser Nutzer für alle VNC-Verbindungen genutzt wird und somit öffentlich ist, sollte dieser so wenig Rechte wie möglich haben.

Jetzt erstellen wir noch den Nutzer. Hierfür muss der Proxmox VE Authentication Server genutzt werden, da wir so keinen Nutzer auf dem Linux Server anlegen müssen.

Auch packen wir den neuen Nutzer gleich in die VNC-Gruppe welche wir als erstes erstellt haben.

Da wir nun alles auf der Proxmox-Seite eingestellt haben können wir zu den Einstellungen im CP wechseln.

  • VNC Nutzer: Der Name des Nutzer welchen wir eben angelegt haben.
  • VNC Passwort: Das gesetzte Passwort für den Nutzer.
  • VNC Gruppe: Der Name der Gruppe welche wir erstellt haben.
  • VNC Rolle: Der Name der Rolle welche wir erstellt haben.
  • VNC Domain: Die Basis-Domain welche oben erklärt wurde.

Nun sollten die VNC-Terminals funktionieren. Wer die einrichtung vorgenommen hat, nachdem schon Server erstellt wurden, kann mit php bin/vnc-permission-helper.php den Servern die richtigen Rechte geben.

Proxmox Templates

Damit Kunden ein Betriebssystemen bei der Erstellung ihrer Server auswählen können, müssen auf dem Proxmox Host VM-Templates erstellt werden.

Templates sind im Grunde cloud-init basierte images, welche nur zu eine Proxmox-Template konvertiert werden.

Ich werde hier zeigen wie man eine Debian 10 Template einrichtet. Ich benutze für fast alle Schritte das Terminal.

Eine detailiertere Anleitung mit mehr Informationen findet sich hier: (nur auf Englisch) https://docs.powerhost.io/?docs=proxmox-cloud-init-template-guide

Als erstes melde ich mich auf meinem Proxmox Host Über SSH an.

                                    root@dev-01:~# wget https://cloud.debian.org/images/cloud/buster/20200803-347/debian-10-generic-amd64-20200803-347.qcow2
                                    root@dev-01:~# qm create 9001 --name "debian-10-cloudinit-template" --memory 2048 --net0 virtio,bridge=vmbr0
                                    root@dev-01:~# qm importdisk 9001 debian-10-generic-amd64-20200803-347.qcow2 local-lvm
                                    root@dev-01:~# qm set 9001 --scsihw virtio-scsi-pci --scsi0 local-lvm:9001/vm-9001-disk-0.raw
                                    root@dev-01:~# qm set 9001 --ide2 local-lvm:cloudinit
                                    root@dev-01:~# qm set 9001 --boot c --bootdisk scsi0
                                    root@dev-01:~# qm set 9001 --serial0 socket --vga serial0
                                    root@dev-01:~# qm template 9001
                                

Als erstes laden wir das Debian 10 Cloudimage vom Debian-CDN runter. Debian ist nicht der einzige Anbieter welcher solche Vorlagen anbietet, es sollte einfach sein diese auch für andere Anbieter zu finden.
Danach erstellen wir eine VM mit der ID 9001 (die ID kann random sein, ich nutze aber den 9000+ Bereich, da es unrealistisch ist, dass ich jemals so viele VMs erstellen werde).
Danach importieren wir das image in local-lvm, welches Proxmox als Speicherort nutzt. Im letzten Schritt convertieren wir die VM in eine Template, sodass wir diese in Proxmox nutzen können.

Wir wollen einen sauberen Namen in der Auswahlliste. Dafür müssen wir den Namen der Template anpassen.

Das Panel ersetzt alle "-" mit Leerzeichen, um also "Debian 10" zu erhalten, müssen wir die Template "Debian-10" nenne.


Module

Module Installieren und aktivieren

Module können direkt über das Interface installiert werden. Hierfür benötigt man nur seinen Download-Schlüßel, welchen man im CIS findet.

Es ist trotzdem geraten vor dem installieren einmal die Beschreibung für das Modul anzuschauen, in besonderen Situation kann ein SSH-Zugang zu dem Server benötigt werden.

LXC Module

Dieses Modul fügt die Möglichkeit hinzu LXC-Container zu bestellen. (Shop Link)

Installiere das Modul, indem du deinen Download-Key wie oben beschrieben in das Feld auf der Admin-Einstellungen Seite einfügst. Das Modul wird dann im Hintergrund runtergeladen und entpackt.

Danach kannst du das Module aktivieren, dabei wird geprüft ob die notwendigen Datenbanktabellen bereit importiert wurden. Ist dies nicht der Fall, wird das automatisch erledigt.

Konfiguration

Um das Module nutzen zu können, bzw. um Container damit erstellen zu können, müseen die Preiseinstellungen vorgenommen sein.

Konfiguration

Folgende Felder bedeuten folgendes:

  • Storage für LXC-Templates: Dies ist der Proxmox-storage auf dem die LXC-Templates liegen. Von hier aus werden die möglichen Images bei der Bestellung geladen.
  • Ziel-Storage: Dies ist der Proxmox-storage wo die Container dann ihren Speicher haben.
  • Container Interface-Geschwindigkeit: Dies ist die Geschwindigkeit des Netzwerkadapters des Containers.

Diese beiden Angaben kann man trennen, muss man aber nicht. Ich nutze in dem screenshot storage-fs für meine images, da dies ein ceph-filesystem ist und somit auch auf meinen anderen Nodes verfügbar ist.

Die Felder für die Preise sind synchrom zu den KVM-Preisen.