---
title: CloudStack
description: Apache CloudStack an NexCMP anbinden: Spezifische Domain, Account und API-Key mit cmk erstellen, dann im Setup-Assistenten oder Admin-Bereich eingeben.
url: https://nexcmp.com/de/docs/infrastructure/cloudstack/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# CloudStack

> **Where in the admin:** Infrastructure › Cloud provider › CloudStack › API connection (`/infra/cloudstack?tab=connect`). Die erste Verbindung kann auch im [setup wizard](https://nexcmp.com/de/docs/getting-started/setup-wizard/) (Schritt 2) hergestellt werden.

## Funktion {#what-it-does}

NexCMP verkauft virtuelle Maschinen, die auf Ihrer Apache CloudStack-Cloud laufen. Die Software bereitgestellt, startet, stoppt, skaliert, erstellt Snapshots und löscht VMs über die CloudStack-API, vergibt öffentliche IP-Adressen aus der Zone, liest Nutzungsdaten für Abrechnung und Bandbreite aus und zeigt Kapazität sowie Status in der Admin-Konsole an. CloudStack bleibt die maßgebliche Datenquelle für die Hypervisors; NexCMP bildet das Storefront, die Abrechnung und das Portal darüber.

Verwenden Sie diese Seite, wenn CloudStack Ihre Hauptquelle für VMs ist (oder sein wird). Eine zweite Quelle daneben finden Sie unter [Proxmox VE](https://nexcmp.com/de/docs/infrastructure/proxmox/).

## Anforderungen {#requirements}

| Komponente | Anforderung |
|---|---|
| CloudStack-Version | 4.23 ist die getestete Version. Die VM-Konsole benötigt 4.18 oder neuer, und die Live-CPU/RAM-Skalierung einer laufenden VM erfordert 4.23 mit KVM. |
| Zonentyp | Eine Zone mit mindestens einem Gastnetzwerk für Kunden-VMs und einem öffentlichen IP-Bereich mit freien Adressen. |
| Hypervisor | KVM ist der getestete Hypervisor. |
| Konto | Eine für NexCMP erstellte **dedizierte Domain und ein dediziertes Konto**. Verwenden Sie niemals den ROOT-Administrator-Schlüssel. |
| API-Erreichbarkeit | Der Panel-Server muss die API-URL des Management-Servers (`https://cloudstack.example.com/client/api`) über HTTP(S) erreichen können. Die VM-Konsole, Bandbreite und Kubernetes-Funktionen nutzen denselben Endpunkt. |
| Optionaler Nur-Lese-Schlüssel | Ein zweiter Nur-Lese-Schlüssel ermöglicht der Admin-Konsole die Anzeige von Hosts, Speicher, System-VMs und öffentlichen IP-Bereichen. Für den VM-Verkauf nicht erforderlich. |
| Öffentliche IP | Freie öffentliche IPv4-Adressen in der Zone. Das Präfix, das NexCMP verkaufen darf, wird unter Sales IP pools konfiguriert. |
| Vorlagen | Mindestens eine bereite, passwortaktivierte Template und ein Service-Offering, die Ihr Account sehen kann. Siehe [Templates](https://nexcmp.com/de/docs/infrastructure/templates/). |
| Storage | Primärer Storage für die Volumes des Accounts und sekundärer Storage, falls Sie Snapshots oder Images verkaufen. |
| Abhängig von | Nichts. Kubernetes, Private Cloud, Images und Bandbreite hängen von dieser Seite ab. |

::: warning Verwenden Sie nicht den ROOT-Administrator-Key
Erstellen Sie eine dedizierte Domain und einen Account für NexCMP. Der Key greift dann nur auf diese Domain zu, und ein geleakter Key kann den Rest Ihrer Cloud nicht berühren. Der Setup-Assistent prüft zudem, ob das von Ihnen gewählte Netzwerk zur Zone **und** zu dem Account gehört, dem der Key gehört.
:::

## Infrastruktur vorbereiten {#prepare-the-infrastructure}

Die Befehle verwenden [CloudMonkey](https://cloudstack.apache.org/) (`cmk`), angemeldet als CloudStack-Administrator. Ersetzen Sie die Beispieldynamiken und die Platzhalter in spitzen Klammern.

### Einen dedizierten Account und API-Key erstellen {#create-a-dedicated-account-and-api-key}

1. Erstellen Sie die Domain, die alles enthalten soll, was NexCMP gehört.

   ```bash
   cmk create domain name=nexcmp
   ```

   Notieren Sie die `id` in der Ausgabe; sie wird unten als `<domain-id>` verwendet.

2. Finden Sie die Rolle, die Sie dem Account zuweisen möchten.

   ```bash
   cmk list roles type=DomainAdmin filter=id,name
   ```

   | Rolle | Wann zu wählen |
   |---|---|
   | **Domain Admin** (empfohlen) | Vollständiger Funktionsumfang: VMs, Netzwerke, Projekte für Kubernetes, VPC, Images. Die Reichweite endet bei der `nexcmp`-Domain. |
   | User | Nur VM-Lebenszyklus. Ein normaler User kann VMs nicht expungeln, es sei denn, die globale Einstellung `allow.user.expunge.recover.vm` ist true; NexCMP stoppt die VM dann und CloudStack expungelt sie nach `expunge.delay`. |

3. Erstellen Sie den Account und dessen ersten User. Verwenden Sie ein langes, zufälliges Passwort; es wird nie wieder eingegeben.

   ```bash
   cmk create account name=nexcmp-api username=nexcmp-api \
     password='CHANGE-ME-LONG-RANDOM' email=ops@example.com \
     firstname=NexCMP lastname=API roleid=<role-id> domainid=<domain-id>
   ```

4. Generieren Sie das API-Key-Paar für den neuen User.

   ```bash
   cmk list users domainid=<domain-id> username=nexcmp-api filter=id,username
   cmk generate userkeys id=<user-id>
   ```

   Kopieren Sie `apikey` und `secretkey`. Das sind der **API key** und der **Secret key**, die Sie in NexCMP eingeben. NexCMP speichert diese verschlüsselt und zeigt danach nur die letzten vier Zeichen an.

5. Stellen Sie sicher, dass die Domain keine restriktiven Ressourcenlimits aufweist (Instanzen, Volumes, öffentliche IPs, Netzwerke, Snapshots, Templates, Projekte).

   ```bash
   cmk list resourcelimits domainid=<domain-id>
   ```

### Das Gastnetzwerk für Kunden-VMs erstellen {#create-the-guest-network-for-customer-vms}

Kunden-VMs werden in einem Gastnetzwerk bereitgestellt, das zum neuen Account gehört. Ein isoliertes Netzwerk mit einem Virtual Router (VR) und den Diensten Static NAT, Firewall und Port Forwarding funktioniert gut, da NexCMP jeder VM über Static NAT eine öffentliche IP zuweist.

```bash
cmk list networkofferings state=Enabled guestiptype=Isolated filter=id,name
cmk create network name=customers displaytext=customers zoneid=<zone-id> \
  networkofferingid=<offering-id> account=nexcmp-api domainid=<domain-id>
```

Überprüfen Sie die Standard-Egress-Richtlinie des Offerings: Wenn diese auf „deny“ steht, haben Kunden-VMs keinen Outbound-Zugriff, bis Firewall-Egress-Regeln hinzugefügt werden.

### Offerings und Templates sichtbar machen {#make-offerings-and-templates-visible}

- **Service offerings** und **network offerings** müssen öffentlich oder der `nexcmp`-Domain zugewiesen sein, da der Account sie sonst nicht auflisten oder verwenden kann.
- Registrieren oder teilen Sie mindestens ein Template (siehe [Templates](https://nexcmp.com/de/docs/infrastructure/templates/)). NexCMP listet Templates auf, die bereit und featured sind.

### Optional: Read-Only-Key für Infrastrukturseiten {#optional-read-only-key-for-infrastructure-pages}

Die Tabs **Capacity**, **Host**, **Storage** und **System VM** sowie die Liste der öffentlichen IP-Bereiche verwenden einen zweiten Key, der nur Lesezugriff auf sechs Befehle benötigt. Erstellen Sie eine eingeschränkte Rolle, anstatt einen vollständigen Administratoren-Key wiederzuverwenden:

```bash
cmk create role name=nexcmp-readonly type=Admin
# <role-id> is the id printed above
for api in listHosts listCapacity listSystemVms listVlanIpRanges listClusters listStoragePools; do
  cmk create rolepermission roleid=<role-id> rule=$api permission=allow
done
cmk create rolepermission roleid=<role-id> rule='*' permission=deny
```

Erstellen Sie dann einen Account mit dieser Rolle (in der ROOT-Domain, da zonengeweit Daten gelesen werden), generieren Sie dessen Keys wie in Schritt 4 und geben Sie diese im nächsten Abschnitt als **RO API key** ein.

### Den Netzwerkpfad prüfen {#check-the-network-path}

Vom Panel-Server aus:

```bash
curl -fsS -o /dev/null -w '%{http_code}\n' https://cloudstack.example.com/client/api
```

Jede HTTP-Antwort (selbst 4xx) beweist, dass der Port erreichbar ist. Ein Timeout bedeutet ein Firewall- oder DNS-Problem auf Ihrer Seite.

## In NexCMP verbinden {#connect-in-nexcmp}

### Im Installationsassistenten {#in-the-setup-wizard}

Schritt 2 des [setup wizard](https://nexcmp.com/de/docs/getting-started/setup-wizard/) fragt nach denselben Werten. **Test connection** listet die Zonen und Netzwerke auf, die der Schlüssel sehen kann; wählen Sie die Zone und das Gastnetzwerk, einen Anzeigenamen für die Zone sowie das Land aus und klicken Sie dann auf **Save CloudStack**. Der Assistent lehnt ein Netzwerk ab, das sich nicht in dieser Zone befindet oder für den Schlüssel nicht sichtbar ist.

![Assistentenschritt 2 mit ausgefüllter CloudStack API-URL und Schlüsseln sowie nach Test connection ausgewählter Zone und ausgewähltem Netzwerk](https://nexcmp.com/de/docs/images/infrastructure/cloudstack-01-wizard-step.webp)

### Später in der Admin-Konsole {#later-in-the-admin-console}

1. Öffnen Sie **Infrastructure › Cloud provider › CloudStack** und wählen Sie den Tab **API connection**.
2. Füllen Sie die Karte **Connection** aus:

   | Feld | Beispielwert |
   |---|---|
   | Endpoint API | `https://cloudstack.example.com/client/api` |
   | API key (Schreibzugriff) | `XXXX` (leer lassen, um den gespeicherten Schlüssel beizubehalten) |
   | Secret key | `XXXX` |
   | RO-API-Schlüssel / RO-Geheimschlüssel | optional, vom Konto mit Lesezugriff |
   | Zone ID | die UUID Ihrer Zone |

      ![Der API-Verbindungs-Tab mit einem Beispiel-Endpoint und maskierten Schlüsseln](https://nexcmp.com/de/docs/images/infrastructure/cloudstack-02-connect-form.webp)

3. Klicken Sie vor dem Speichern auf **Test connection**. Dadurch werden die von Ihnen eingegebenen Schlüssel getestet, ohne sie zu speichern: den Schreibschlüssel mit `listZones` und `listCapabilities` sowie den Schlüssel mit Lesezugriff mit `listSystemVms`.


4. Klicken Sie auf **Save connection**. Lassen Sie **Enable CloudStack connection** eingeschaltet; das Ausschalten sorgt dafür, dass der Worker alle CloudStack-Jobs stoppt, ohne Daten zu verlieren.
5. Öffnen Sie **Services › Virtual Machines › Policy › Provisioning**, um das Standard-Gastnetzwerk, benutzerdefinierte Angebote und das Standard-Schlüsselpaar für neue VMs festzulegen.

      ![VM-Richtlinie (Policy), Tab Provisioning, mit der Standard-Netzwerk-ID](https://nexcmp.com/de/docs/images/infrastructure/cloudstack-04-provisioning.webp)

6. Öffnen Sie **Infrastructure › Cloud provider › Sales IP pools** und legen Sie unter **Configure sales ranges** die Option **Sellable IP range prefixes** (zum Beispiel `203.0.113.`) sowie **Excluded IP prefixes** fest, falls bestimmte Adressen in der Zone niemals verkauft werden dürfen. Lassen Sie das Präfix leer, um jede freie Adresse zuzulassen.

      ![Verkaufs-IP-Pools mit dem verkäuflichen Präfix 203.0.113. gesetzt](https://nexcmp.com/de/docs/images/infrastructure/cloudstack-05-sales-ip-pool.webp)

### Was NexCMP liest und schreibt {#what-nexcmp-reads-and-writes}

| Bereich | Liest | Änderungen |
|---|---|---|
| VMs | Liste, Status, Nutzungsverlauf, Konsolen-Endpoint | Bereitstellen, Starten, Stoppen, Neustarten, Neuinstallieren, Löschen, Skalieren, Passwort- und SSH-Key-Zurücksetzung |
| Datenträger und Snapshots | Volumes, VM-Snapshots, Backups | Erstellen, Anhängen, Trennen, Größe ändern, Löschen, Snapshot, Wiederherstellen |
| Netzwerk | Netzwerke, Router, öffentliche IPs, Firewall, Portweiterleitung, Load-Balancer-Regeln | Öffentliche IPs zuweisen und freigeben, statisches NAT, Firewall, Portweiterleitung, Egress-Regeln, Netzwerke und ACLs für Private Cloud |
| Katalog | Dienst-, Datenträger- und Netzwerkangebote, Templates, ISOs, Betriebssystemtypen | Templates und ISOs (Images) registrieren und löschen, Dienstangebote beim Erstellen benutzerdefinierter Tarife |
| Kubernetes | Unterstützte Versionen, Cluster, Konfiguration | Projekte, Ressourcenlimits, Netzwerke, Cluster (Modul Kubernetes) |
| Schlüssel mit Lesezugriff | Hosts, Cluster, Storage Pools, System-VMs, Kapazität, VLAN-IP-Bereiche | Keine |

### Live-CPU und -RAM sowie Bandbreite {#live-cpu-and-ram-and-bandwidth}

- **Hot-Plug.** Eine laufende VM kann nur dann ohne Neustart in der Größe angepasst werden, wenn deren Template dies erlaubt (dynamisch skalierbar) und das Gastbetriebssystem neue CPUs und RAM online nimmt. NexCMP aktiviert Auto Scaling für Templates, deren Name auf `vN` endet mit N von 6 oder mehr, oder wenn Sie es manuell im Feld **vCPU/RAM-Hot-Plug** des Templates festlegen. Siehe [Templates](https://nexcmp.com/de/docs/infrastructure/templates/).
- **Bandbreitenquelle.** Mit den Standardeinstellungen misst NexCMP den Traffic anhand der CloudStack-VM-Statistiken (`listVirtualMachinesUsageHistory`, alle 5 Minuten abgefragt und pro VM-Netzwerkschnittstelle summiert). Die Werte beinhalten Traffic zwischen VMs und können daher etwas höher sein als von einem Edge-Router gezählt. Lassen Sie die Erfassung der CloudStack-VM-Statistiken eingeschaltet; Lücken, die länger als die Statistikvorhaltung sind, werden übersprungen. Siehe [Bandbreite](https://nexcmp.com/de/docs/catalog/bandwidth/).

## Verifizierung {#verify}

1. **Test connection** gibt "Write key: OK" zusammen mit Ihrer Zone und der CloudStack-Version zurück.
2. **Infrastructure › Cloud provider › Providers** zeigt den Provider als aktiv mit einem kürzlichen Testzeitpunkt an. Das Dashboard-Zustandspanel zeigt nicht mehr "CloudStack: not connected".
3. **Sales IP pools** listet freie Adressen auf (aktualisiert sich etwa einmal pro Minute).
4. Bestellen Sie eine kleine VM über das Kundenportal oder die Admin-Konsole und prüfen Sie, ob sie den Status Running erreicht, eine öffentliche IP hat und ob Sie die Konsole öffnen können.

## Grenzwerte und Hinweise {#limits-and-notes}

- In dieser NexCMP-Release kann ein CloudStack-Cluster verbunden werden. Der Dialog **Add cloud provider** kann die Schlüssel eines zweiten Clusters testen, diese jedoch nicht speichern.
- Eine CloudStack-Zone ist mit der Standardzone von NexCMP verknüpft; ein CloudStack mit mehreren Zonen ist auf die von Ihnen eingegebene Zone beschränkt, sodass VMs, IPs und Netzwerke anderer Zonen ignoriert werden.
- Das Löschen des Gastnetzwerks in CloudStack führt dazu, dass jede neue Bereitstellung fehlschlägt. Die Admin-Konsole zeigt einen roten Hinweis, wenn das Netzwerk verschwindet.
- Anmeldeinformationen verlassen niemals den Server. Die API gibt nur die letzten vier Zeichen zurück.

## Fehlerbehebung {#troubleshooting}

| Symptom | Ursache | Behebung |
|---|---|---|
| `listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature` | Falscher API-Schlüssel oder -Secret, Schlüssel von einem anderen Benutzer oder ein Zeitproblem auf dem Panel-Server | Generieren Sie die Schlüssel mit `cmk generate userkeys` neu und fügen Sie beide ein. Überprüfen Sie die Uhrzeit des Panel-Servers. |
| Test: `listZones: …` oder Timeout | Der Panel-Server kann die API-URL nicht erreichen | Überprüfen Sie DNS, Firewall und den exakten `/client/api`-Pfad. |
| Assistent: "network not found in that zone for this API key" | Das gewählte Netzwerk gehört zu einem anderen Account oder einer anderen Zone | Erstellen Sie das Netzwerk im dedizierten Account (siehe oben) und führen Sie **Test connection** erneut aus. |
| Assistent: "pick a zone and a network" | Test nicht ausgeführt oder keine Zone bzw. kein Netzwerk ausgewählt | Klicken Sie auf **Test connection** und wählen Sie beide Listen aus. |
| "CloudStack-Schlüssel nicht konfiguriert" (Banner) | Noch kein Schlüssel gespeichert ("Connect later") | Füllen Sie die Verbindungskarte aus, **Save connection** und danach **Test connection**. |
| Banner "CloudStack connection is OFF" | Der Schalter **Enable CloudStack connection** ist ausgeschaltet | Schalten Sie ihn ein und speichern Sie. |
| Schreibgeschützter Schlüssel: "unusable …" im Test | Fehlende Rollenberechtigung oder falscher Account | Überprüfen Sie die sechs erlaubten Befehle und stellen Sie sicher, dass sich der Account in der ROOT-Domain befindet. |
| "Zone public IP ranges not measured yet" oder "no public IP ranges declared" | Kein schreibgeschützter Schlüssel oder die Zone besitzt tatsächlich keinen öffentlichen Bereich | Fügen Sie den Nur-Lese-Schlüssel hinzu oder fügen Sie einen öffentlichen IP-Bereich in CloudStack hinzu. |
| "Pool leer — 60 Sek. auf vmd-Synchronisierung warten" | Die IP-Liste wird einmal pro Minute vom Worker aktualisiert. | Warten Sie eine Minute und laden Sie die Seite neu. |
| "Keine freien IPs im Bereich 203.0.113. verfügbar" | Alle Adressen im verkäuflichen Präfix sind belegt. | Fügen Sie Adressen zur Zone hinzu, vergrößern Sie das Präfix oder geben Sie nicht genutzte IPs frei. |
| "Netzwerkdaten konnten nicht abgerufen werden (CloudStack antwortet nicht oder Schlüssel hat keine Berechtigungen)" | Schlüssel hat den Zugriff verloren oder CloudStack ist nicht erreichbar. | Führen Sie **Test connection** aus; prüfen Sie, ob das Konto aktiviert ist. |
| "Gastnetzwerk existiert NICHT" | Das Netzwerk wurde in CloudStack gelöscht. | Erstellen Sie das Netzwerk neu und legen Sie es unter Provisioning als Standard fest. |


