mcpField
A
app-platform-networking

app-platform-networking

github.com/digitalocean-labsCloud & DevOps3892 installsUpdated 4d ago
Repository

About app-platform-networking

A skill for configuring networking on DigitalOcean App Platform, aimed at developers managing domains, routing, and service connectivity. It covers CORS, VPCs, and egress IPs, with configuration references and troubleshooting guidance.

Key features

  1. 01Custom domain and DNS setup
  2. 02Path and subdomain routing
  3. 03CORS configuration reference
  4. 04VPC and trusted-source setup
  5. 05Dedicated egress IP configuration
  6. 06Networking troubleshooting guidance

Use cases

  1. 01Route multiple services under one domain
  2. 02Configure cross-subdomain API requests
  3. 03Connect to databases securely over a VPC
  4. 04Allowlist egress IPs in a firewall

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/digitalocean-labs/do-app-platform-skills --skill app-platform-networking

After installing, type/app-platform-networkingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

README.md
reference/
complete-patterns.md
cors-configuration.md
domains-dns.md
ingress-routing.md
static-ips-egress.md
vpc-trusted-sources.md

Details

From the project README

App Platform Networking Skill

Configure domains, routing, CORS, VPC, static IPs, and inter-service communication.

Quick Decision

What networking do you need?
├── Custom domain?
│   └── YES → See domains-dns.md
│
├── Multiple services on one domain?
│   ├── Different paths (/api, /app) → Path-based routing
│   └── Different subdomains (api.*, app.*) → Subdomain routing
│
├── Frontend calling API across origins?
│   └── YES → CORS configuration
│
├── Secure database connectivity?
│   └── YES → VPC + trusted sources
│
└── Need static outbound IP?
    └── YES → Dedicated egress

When to Use

ScenarioNeed This Skill
Starter domain onlyNo
Custom domainYes
Multiple services, different pathsYes
Multiple subdomainsYes
Cross-subdomain API calls (CORS)Yes
Secure database access via VPCYes
Firewall allowlisting (egress IP)Yes

Quick Reference

FeatureApp Spec FieldExample
Custom domaindomains[].domainexample.com
Wildcarddomains[].wildcardtrue
Path routingingress.rules[].match.path.prefix/api
Subdomain routingingress.rules[].match.authority.exactapi.example.com
CORSingress.rules[].corsSee reference
VPCvpc.idUUID
Dedicated egressegress.typeDEDICATED_IP

Path-Based Routing (Quick Start)

ingress:
  rules:
    - component: { name: api }
      match: { path: { prefix: /api } }

    - component: { name: frontend }
      match: { path: { prefix: / } }

Rule order matters: Specific rules first.

Full guide: See ingress-routing.md


Subdomain Routing (Quick Start)

domains:
  - domain: example.com
    type: PRIMARY
    wildcard: true
    zone: example.com

ingress:
  rules:
    - component: { name: api }
      match:
        authority: { exact: api.example.com }
        path: { prefix: / }

    - component: { name: app }
      match:
        authority: { exact: app.example.com }
        path: { prefix: / }

Full guide: See domains-dns.md


CORS (Quick Start)

ingress:
  rules:
    - component: { name: api }
      match: { path: { prefix: /api } }
      cors:
        allow_origins:
          - exact: https://app.example.com
        allow_methods: [GET, POST, PUT, DELETE, OPTIONS]
        allow_headers: [Content-Type, Authorization]
        allow_credentials: true

Note: With allow_credentials: true, use exact origins only (no regex).

Full guide: See cors-configuration.md


VPC + Trusted Sources (Quick Start)

vpc:
  id: your-vpc-uuid

VPC CIDR whitelisting (recommended):

doctl vpcs get $VPC_ID --format IPRange  # e.g., 10.126.0.0/20
doctl databases firewalls append $CLUSTER_ID --rule ip_addr:10.126.0.0/20
SetupTrusted Source Rule
Public onlyapp:$APP_ID
VPC enabledip_addr:<vpc-cidr>

Critical: Bindable variables return PUBLIC hostnames even with VPC. Use private URLs:

doctl databases connection --private <cluster-id> --format URI

Full guide: See vpc-trusted-sources.md


Reference Files


Common Issues

IssueFix
Domain not resolvingCheck DNS records, allow 72h propagation
SSL certificate errorAdd CAA records for letsencrypt.org + pki.goog
CORS preflight failsAdd OPTIONS to allow_methods
VPC connection refusedUse VPC CIDR whitelisting, not app-based rules
Wrong component servesReorder rules (specific first)

Integration with Other Skills

  • → designer: Add domains/ingress to app spec
  • → troubleshooting: Debug DNS, CORS, VPC issues
  • → postgres: VPC connectivity for managed databases
  • → deployment: Deploy networking changes

Comments

Markdown supported