DigitalOcean
by @rexlunae
Manage DigitalOcean resources via API — Droplets (create/destroy/resize/power), DNS zones and records, Spaces (object storage), Databases, Firewalls, Load Balancers, Kubernetes, and account/billing info.
clawhub install digitalocean📖 About This Skill
name: digitalocean description: Manage DigitalOcean resources via API — Droplets (create/destroy/resize/power), DNS zones and records, Spaces (object storage), Databases, Firewalls, Load Balancers, Kubernetes, and account/billing info.
DigitalOcean API Skill
Control DigitalOcean infrastructure programmatically: droplets, DNS, databases, storage, networking.
Authentication
API token required. Get one from: https://cloud.digitalocean.com/account/api/tokens
Store in ~/.config/digitalocean/token (just the token, no newline):
mkdir -p ~/.config/digitalocean
echo -n "YOUR_API_TOKEN" > ~/.config/digitalocean/token
chmod 600 ~/.config/digitalocean/token
Quick Reference
Droplets (VMs)
# List all droplets
python3 scripts/digitalocean.py droplets listGet droplet details
python3 scripts/digitalocean.py droplets get Create droplet
python3 scripts/digitalocean.py droplets create --region nyc1 --size s-1vcpu-1gb --image ubuntu-24-04-x64Power actions
python3 scripts/digitalocean.py droplets power-on
python3 scripts/digitalocean.py droplets power-off
python3 scripts/digitalocean.py droplets reboot Resize droplet
python3 scripts/digitalocean.py droplets resize --size s-2vcpu-4gbSnapshot
python3 scripts/digitalocean.py droplets snapshot --name "backup-2024"Destroy droplet
python3 scripts/digitalocean.py droplets destroy
DNS Management
# List domains
python3 scripts/digitalocean.py dns listGet domain records
python3 scripts/digitalocean.py dns records Add record
python3 scripts/digitalocean.py dns add --type A --name www --data 1.2.3.4 --ttl 300Update record
python3 scripts/digitalocean.py dns update --data 5.6.7.8Delete record
python3 scripts/digitalocean.py dns delete Add domain
python3 scripts/digitalocean.py dns create
Firewalls
# List firewalls
python3 scripts/digitalocean.py firewalls listCreate firewall
python3 scripts/digitalocean.py firewalls create --inbound tcp:22:0.0.0.0/0 --inbound tcp:80:0.0.0.0/0 --inbound tcp:443:0.0.0.0/0Add droplet to firewall
python3 scripts/digitalocean.py firewalls add-droplet
Spaces (Object Storage)
# List spaces (requires spaces key)
python3 scripts/digitalocean.py spaces listCreate space
python3 scripts/digitalocean.py spaces create --region nyc3
Databases
# List database clusters
python3 scripts/digitalocean.py databases listGet database details
python3 scripts/digitalocean.py databases get
Account & Billing
# Account info
python3 scripts/digitalocean.py accountBalance
python3 scripts/digitalocean.py billing balanceBilling history
python3 scripts/digitalocean.py billing history
SSH Keys
# List SSH keys
python3 scripts/digitalocean.py ssh-keys listAdd SSH key
python3 scripts/digitalocean.py ssh-keys add --key "ssh-ed25519 AAAA..."
Images & Snapshots
# List available images
python3 scripts/digitalocean.py images listList your snapshots
python3 scripts/digitalocean.py images snapshotsDelete snapshot
python3 scripts/digitalocean.py images delete
Regions & Sizes
# List regions
python3 scripts/digitalocean.py regionsList droplet sizes
python3 scripts/digitalocean.py sizes
DNS Record Types
Supported record types:
A — IPv4 addressAAAA — IPv6 addressCNAME — Canonical name (alias)MX — Mail exchange (requires priority)TXT — Text recordNS — NameserverSRV — Service recordCAA — Certificate Authority AuthorizationCommon Workflows
Deploy a New Server
# 1. Create droplet
python3 scripts/digitalocean.py droplets create myserver --region nyc1 --size s-1vcpu-2gb --image ubuntu-24-04-x64 --ssh-keys 2. Get IP address
python3 scripts/digitalocean.py droplets get 3. Add DNS record
python3 scripts/digitalocean.py dns add mydomain.com --type A --name @ --data 4. Set up firewall
python3 scripts/digitalocean.py firewalls create web-server --inbound tcp:22:0.0.0.0/0 --inbound tcp:80:0.0.0.0/0 --inbound tcp:443:0.0.0.0/0
python3 scripts/digitalocean.py firewalls add-droplet
Migrate DNS to DigitalOcean
# 1. Add domain
python3 scripts/digitalocean.py dns create example.com2. Add records
python3 scripts/digitalocean.py dns add example.com --type A --name @ --data 1.2.3.4
python3 scripts/digitalocean.py dns add example.com --type CNAME --name www --data example.com.3. Update nameservers at registrar to:
ns1.digitalocean.com
ns2.digitalocean.com
ns3.digitalocean.com
Direct API Access
For operations not covered by the script:
TOKEN=$(cat ~/.config/digitalocean/token)
curl -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://api.digitalocean.com/v2/droplets
API Documentation
Common Droplet Sizes
| Slug | vCPUs | RAM | Disk | Price/mo | |------|-------|-----|------|----------| | s-1vcpu-512mb-10gb | 1 | 512MB | 10GB | $4 | | s-1vcpu-1gb | 1 | 1GB | 25GB | $6 | | s-1vcpu-2gb | 1 | 2GB | 50GB | $12 | | s-2vcpu-2gb | 2 | 2GB | 60GB | $18 | | s-2vcpu-4gb | 2 | 4GB | 80GB | $24 | | s-4vcpu-8gb | 4 | 8GB | 160GB | $48 |
Common Regions
| Slug | Location | |------|----------| | nyc1, nyc3 | New York | | sfo3 | San Francisco | | ams3 | Amsterdam | | sgp1 | Singapore | | lon1 | London | | fra1 | Frankfurt | | tor1 | Toronto | | blr1 | Bangalore | | syd1 | Sydney |