TL;DR
DigitalOcean APIs steuern Droplets, Volumes, Firewalls, Load Balancer, Kubernetes-Cluster und mehr. Authentifizieren Sie sich mit persönlichen Zugriffstokens, senden Sie Requests an api.digitalocean.com/v2 und beachten Sie Ratenlimits. Für Tests empfiehlt sich Apidog, um Konfigurationen zu validieren, Infrastruktur-Bereitstellungen zu prüfen und Automatisierungs-Workflows zu dokumentieren.
Einführung
DigitalOcean vereinfacht Cloud Computing. Während AWS und GCP Hunderte von Diensten anbieten, konzentriert sich DigitalOcean auf das Wesentliche: Compute (Droplets), Storage (Volumes), Networking (Floating IPs, Firewalls), verwaltetes Kubernetes und die App-Plattform. Die API ist entsprechend übersichtlich.
Als Entwickler nutzen Sie die DigitalOcean API für:
- Automatisiertes Hochfahren von Entwicklungsumgebungen
- Verwaltung von Kubernetes-Clustern
- Infrastructure-as-Code mit Terraform oder Pulumi
- CI/CD-Pipeline-Bereitstellungen
- Multi-Region-Deployments
💡 Tipp: Mit Apidog können Sie API-Aufrufe testen, Infrastruktur-Konfigurationen als Vorlagen speichern und kollaborativ an Bereitstellungs-Workflows arbeiten.
Authentifizierung
Persönliche Zugriffstokens
- Navigieren Sie im DigitalOcean Dashboard zu API → Neues Token generieren.
- Benennen Sie das Token und legen Sie die Gültigkeitsdauer fest.
- Kopieren und sicher speichern.
Verwendung des Tokens:
curl -X GET "https://api.digitalocean.com/v2/account" \
-H "Authorization: Bearer YOUR_TOKEN"
Antwortformat
{
"account": {
"droplet_limit": 25,
"email": "you@example.com",
"name": "Your Name",
"uuid": "abc123xyz",
"email_verified": true,
"status": "active"
}
}
Droplets (virtuelle Maschinen)
Alle Droplets auflisten
curl -X GET "https://api.digitalocean.com/v2/droplets" \
-H "Authorization: Bearer YOUR_TOKEN"
Ein Droplet erstellen
curl -X POST "https://api.digitalocean.com/v2/droplets" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-droplet",
"region": "nyc1",
"size": "s-2vcpu-4gb",
"image": "ubuntu-20-04-x64",
"ssh_keys": ["ssh-rsa AAAA..."],
"backups": false,
"ipv6": true,
"tags": ["web", "production"]
}'
Beliebte Größen:
-
s-1vcpu-1gb— 1 vCPU, 1 GB RAM (5 $/Monat) -
s-2vcpu-2gb— 2 vCPU, 2 GB RAM (10 $/Monat) -
s-2vcpu-4gb— 2 vCPU, 4 GB RAM (20 $/Monat) -
s-4vcpu-8gb— 4 vCPU, 8 GB RAM (40 $/Monat)
Regionen:
-
nyc1,nyc3— New York -
sfo3— San Francisco -
ams3— Amsterdam -
sgp1— Singapur
Droplet-Details abrufen
curl -X GET "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Ein Droplet löschen
curl -X DELETE "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Droplet-Aktionen
Neustart:
curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "reboot"
}'
Größe ändern:
curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "resize",
"size": "s-4vcpu-8gb"
}'
Snapshot:
curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "snapshot",
"name": "my-snapshot"
}'
Volumes (Block-Speicher)
Ein Volume erstellen
curl -X POST "https://api.digitalocean.com/v2/volumes" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"size_gigabytes": 100,
"name": "my-volume",
"region": "nyc1",
"description": "Data volume for web servers"
}'
Volume an Droplet anhängen
curl -X POST "https://api.digitalocean.com/v2/volumes/VOLUME_ID/actions" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "attach",
"droplet_id": DROPLET_ID
}'
Volumes auflisten
curl -X GET "https://api.digitalocean.com/v2/volumes" \
-H "Authorization: Bearer YOUR_TOKEN"
Netzwerk
Floating IPs auflisten
curl -X GET "https://api.digitalocean.com/v2/floating_ips" \
-H "Authorization: Bearer YOUR_TOKEN"
Floating IP zuweisen
curl -X POST "https://api.digitalocean.com/v2/floating_ips" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"droplet_id": DROPLET_ID,
"region": "nyc1"
}'
Firewall erstellen
curl -X POST "https://api.digitalocean.com/v2/firewalls" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "web-firewall",
"inbound_rules": [
{
"protocol": "tcp",
"ports": "80",
"sources": {
"addresses": ["0.0.0.0/0"]
}
},
{
"protocol": "tcp",
"ports": "443",
"sources": {
"addresses": ["0.0.0.0/0"]
}
},
{
"protocol": "tcp",
"ports": "22",
"sources": {
"addresses": ["your-ip/32"]
}
}
],
"outbound_rules": [
{
"protocol": "tcp",
"ports": "80",
"destinations": {
"addresses": ["0.0.0.0/0"]
}
}
],
"droplet_ids": [DROPLET_ID]
}'
Load Balancer
Einen Load Balancer erstellen
curl -X POST "https://api.digitalocean.com/v2/load_balancers" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-lb",
"region": "nyc1",
"algorithm": "round_robin",
"health_check": {
"protocol": "http",
"port": 80,
"path": "/",
"check_interval_seconds": 10,
"response_timeout_seconds": 5,
"healthy_threshold": 3,
"unhealthy_threshold": 3
},
"forwarding_rules": [
{
"entry_protocol": "http",
"entry_port": 80,
"target_protocol": "http",
"target_port": 80
},
{
"entry_protocol": "https",
"entry_port": 443,
"target_protocol": "https",
"target_port": 443,
"tls_passthrough": true
}
],
"droplet_ids": [DROPLET_ID_1, DROPLET_ID_2]
}'
Kubernetes-Cluster
Einen Kubernetes-Cluster erstellen
curl -X POST "https://api.digitalocean.com/v2/kubernetes/clusters" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-cluster",
"region": "nyc1",
"version": "1.28",
"node_pools": [
{
"name": "worker-pool",
"size": "s-2vcpu-4gb",
"count": 3,
"auto_scale": true,
"min_nodes": 2,
"max_nodes": 6
}
]
}'
Node-Pools auflisten
curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools" \
-H "Authorization: Bearer YOUR_TOKEN"
Node-Pool skalieren
curl -X PUT "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools/POOL_ID" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"count": 5
}'
Cluster löschen
curl -X DELETE "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Testen mit Apidog
Die Bereitstellung von Infrastruktur kann teuer sein. Testen Sie vor dem Anlegen von Ressourcen Ihre Konfigurationen gründlich.
1. Umgebung einrichten
DIGITALOCEAN_TOKEN: your_token
BASE_URL: https://api.digitalocean.com/v2
DEFAULT_REGION: nyc1
DEFAULT_SIZE: s-2vcpu-4gb
2. Antworten validieren
pm.test('Droplet created successfully', () => {
const response = pm.response.json()
pm.expect(response.droplet).to.have.property('id')
pm.expect(response.droplet.status).to.eql('new')
})
pm.test('Token is valid', () => {
const response = pm.response.json()
pm.expect(response.account).to.exist
pm.expect(response.account.status).to.eql('active')
})
3. Dry-Run-Konzepte
DigitalOcean bietet keinen echten Dry-Run. Sie können aber Eingaben vorab validieren:
const validRegions = ['nyc1', 'sfo3', 'ams3', 'sgp1']
const validSizes = ['s-1vcpu-1gb', 's-2vcpu-2gb', 's-2vcpu-4gb']
pm.test('Region is valid', () => {
const requestBody = JSON.parse(pm.request.body.raw)
pm.expect(validRegions).to.include(requestBody.region)
})
pm.test('Size is valid', () => {
const requestBody = JSON.parse(pm.request.body.raw)
pm.expect(validSizes).to.include(requestBody.size)
})
Testen Sie DigitalOcean Infrastruktur-APIs mit Apidog – kostenlos.
Häufige Fehler und Behebungen
401 Nicht autorisiert
Ursache: Ungültiges oder abgelaufenes Token.
Behebung: Neues Token im Dashboard generieren. Format des Authorization-Headers prüfen.
422 Unverarbeitbare Entität
Ursache: Ungültige Parameter (z. B. falsche Region, Größe, Image).
Behebung: API-Dokumentation prüfen. Häufige Fehler:
- Region unterstützt die angeforderte Größe nicht
- Image-ID existiert nicht
- Droplet-Limit erreicht
429 Zu viele Anfragen
Ursache: Ratenlimit überschritten (Standard: 2000 Requests/Stunde).
Behebung: Backoff implementieren:
async function doRequest(url, options, retries = 3) {
for (let i = 0; i < retries; i++) {
const response = await fetch(url, options)
if (response.status === 429) {
await sleep(Math.pow(2, i) * 1000)
continue
}
return response
}
throw new Error('Rate limited')
}
Droplet-Limit erreicht
Ursache: Zu viele Droplets im Konto.
Behebung: Nicht genutzte Droplets löschen oder Support für Limiterhöhung kontaktieren.
Alternativen und Vergleiche
| Funktion | DigitalOcean | AWS | GCP |
|---|---|---|---|
| Droplet-Größen | Fest | Benutzerdefiniert | Benutzerdefiniert |
| Kubernetes | Verwaltetes DOKS | EKS | GKE |
| Objektspeicher | Spaces | S3 | Cloud Storage |
| Block-Speicher | Volumes | EBS | Persistent Disk |
| Load Balancer | Integriert | ELB | Cloud Load Balancing |
| Kostenlose Stufe | 200 $ Guthaben | Begrenzt | 300 $ Guthaben |
| API-Einfachheit | ★★★★★ | ★★☆☆☆ | ★★★☆☆ |
DigitalOcean punktet bei Einfachheit – die API ist übersichtlich, die meisten Vorgänge funktionieren ohne komplexe Abhängigkeiten.
Praxisfälle
Entwicklungsumgebungen:
Ein Startup erstellt automatisiert für jeden Branch eine eigene Umgebung. Jeder Pull Request erzeugt über die API ein Droplet mit aktuellem Code. Nach dem Merge wird das Droplet zerstört. Entwickler testen damit produktionsnah ohne manuellen Aufwand.
Automatisch skalierende Webserver:
Eine Webanwendung überwacht die Auslastung. Steigt die CPU-Last über 70 %, erstellt die API neue Droplets und bindet sie in den Load Balancer ein. Sinkt die Last, werden Droplets entfernt. So bleiben die Kosten niedrig und die Performance hoch.
Datenbank-Cluster:
Ein verwalteter Datenbankdienst nutzt Volumes für Primär- und Replikadaten. Die API übernimmt Replikation, Backup-Planung und Failover-Konfiguration automatisch.
Fazit
Das haben Sie gelernt:
- Authentifizierung mit persönlichen Zugriffstokens
- Programmatisches Erstellen und Verwalten von Droplets
- Arbeiten mit Volumes für persistenten Speicher
- Konfiguration von Firewalls und Load Balancern
- Verwaltung von Kubernetes-Clustern
- Testen von Infrastruktur mit Apidog vor der Bereitstellung
FAQ
Wie viel kostet ein Droplet?
Ab 5 $/Monat für 1 vCPU/1 GB. Aktuelle Preise auf der Preisseite prüfen. Abrechnung pro Stunde ist möglich.
Kann ich SSH-Schlüssel mit über die API erstellten Droplets verwenden?
Ja, SSH-Schlüssel-Fingerprint im ssh_keys-Array beim Erstellen des Droplets angeben.
Was ist der Unterschied zwischen Volumes und Spaces?
Volumes = Block-Speicher, die an Droplets gehängt werden. Spaces = Objektspeicher (vergleichbar mit S3). Volumes für Datenbanken, Spaces für Dateien.
Wie erhalte ich die Kubernetes-Konfiguration?
curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/kubeconfig" \
-H "Authorization: Bearer YOUR_TOKEN"
Kann ich ein Droplet skalieren?
Ja, Größenänderung per API. Downgrades erfordern ein Abschalten. Upgrades gehen meist live.
Was ist der Unterschied zwischen Backups und Snapshots?
Backups sind automatische wöchentliche/tägliche Sicherungen, Snapshots sind manuell erstellbare Images.
Wie lange dauert es, Droplets zu erstellen?
In der Regel 30–60 Sekunden, je nach Region und Größe.
Kann ich Terraform mit DigitalOcean verwenden?
Ja, offizieller Terraform-Provider ist verfügbar – ideal für Infrastruktur als Code.

Top comments (0)