본문으로 건너뛰기
cccskills
무료GitHub에 공개

fastly-domain-v1-activation

Fix "Fastly error: unknown domain" 500 errors when custom domains return "Domain Not Found" despite being created with domain-v1 CLI. Use when: (1) fastly domain-v1 create succeeds but domain returns 500, (2) Domain shows activated:false in API response, (3) Classic domain API returns "deprecated" error, (4) Custom domain works on edgecompute.app but not on your domain. Covers Fastly Compute domain setup post-September 2025.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md5.0 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Fastly Domain-v1 Activation for Compute Services

Problem

After creating a custom domain with fastly domain-v1 create --fqdn example.com --service-id XXX, the domain returns a 500 error: "Fastly error: unknown domain: example.com. Please check that this domain has been added to a service." The edgecompute.app URL works fine.

Context / Trigger Conditions

  • Classic domain API returns: "The classic domains APIs are deprecated. Please use the domain management API"
  • fastly domain-v1 create succeeds with domain-id and service-id
  • HTTP request to custom domain returns 500 "Domain Not Found"
  • Checking domain via API shows "activated": false, "verified": false
  • The auto-generated edgecompute.app domain works correctly

Solution

Step 1: Create the domain (if not already done)

fastly domain-v1 create --fqdn example.com --service-id YOUR_SERVICE_ID

Step 2: Create TLS subscription for HTTPS

fastly tls-subscription create --domain example.com

Step 3: Get DNS configuration requirements

curl -s -H "Fastly-Key: $(fastly profile token)" \
  "https://api.fastly.com/tls/subscriptions/SUBSCRIPTION_ID?include=tls_authorizations" | jq

Look for the challenges array in the response. You'll see options like:

  • managed-http-a: A records pointing to Fastly IPs (use for apex domains)
  • managed-http-cname: CNAME to x.sni.global.fastly.net (use for subdomains)
  • managed-dns: ACME challenge CNAME for _acme-challenge.example.com

Step 4: Configure DNS

For apex domains, add A records:

example.com → 151.101.1.242
example.com → 151.101.65.242
example.com → 151.101.129.242
example.com → 151.101.193.242

For subdomains, use CNAME:

www.example.com → x.sni.global.fastly.net

Step 5: Wait for automatic activation

Once DNS propagates, Fastly automatically:

  1. Verifies domain ownership via HTTP challenge
  2. Sets verified: true
  3. Sets activated: true
  4. Issues TLS certificate (state changes from "pending" to "issued")

This typically happens within 1-5 minutes after DNS propagation.

Step 6: Verify activation status

# Check domain status
curl -s -H "Fastly-Key: $(fastly profile token)" \
  "https://api.fastly.com/domain-management/v1/domains/DOMAIN_ID" | jq

# Should show:
# "activated": true,
# "verified": true

# Check TLS status
fastly tls-subscription describe --id SUBSCRIPTION_ID
# State should be "issued"

Verification

# Test HTTP (should redirect to HTTPS)
curl -I http://example.com
# Expected: 308 Permanent Redirect to https://

# Test HTTPS
curl -s https://example.com | head -20
# Expected: Your site content

Example

# 1. Create KV store and link to service
fastly kv-store create --name my-content
fastly resource-link create --resource-id KV_STORE_ID --service-id SERVICE_ID --version latest --autoclone

# 2. Build and deploy
fastly compute publish

# 3. Add custom domain
fastly domain-v1 create --fqdn mysite.com --service-id SERVICE_ID
# Output: Created domain 'mysite.com' (domain-id: ABC123, service-id: XYZ789)

# 4. Set up TLS
fastly tls-subscription create --domain mysite.com
# Output: Created TLS Subscription 'SUB123' (Authority: certainly, Common Name: mysite.com)

# 5. Configure DNS with A records (apex) or CNAME (subdomain)
# 6. Wait ~2-5 minutes for verification
# 7. Site is live at https://mysite.com

Notes

  • Post-September 2025: The fastly domain create command (classic API) is deprecated. Use fastly domain-v1 instead.
  • No manual activation: Unlike classic domains, domain-v1 domains activate automatically after DNS verification. There's no explicit "activate" API call.
  • Service version independence: Domain-v1 creates "versionless domains" that aren't tied to a specific service version. You don't need to clone/activate versions to add domains.
  • TLS is separate: Domain creation and TLS certificate management are separate operations. You can have a domain without TLS (HTTP only) but most setups want both.
  • Fastly IPs are global: The A record IPs (151.101.x.242) are Fastly's anycast addresses and route to the nearest edge node.

References

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Fix ArgoCD ExternalSecret deployment failing with "namespace X is not permitted in project Y". Use when: (1) ExternalSecret shows OutOfSync in ArgoCD but won't sync, (2) ArgoCD application status shows "namespace X is not permitted in project 'infrastructure'", (3) ExternalSecret targets a namespace managed by a different ArgoCD project, (4) Using apps-of-apps pattern with separate infrastructure and application projects.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

divinevideo/divine-mobile2652026년 10월 23일 업데이트

Art direction for any content — reads text, PDF, Word, HTML, PPT, then proposes 2-3 creative directions with photography style, mood, and visual language. After selection, generates AI image prompts and visual briefs section-by-section. Use when the user shares content and needs visual direction, image sourcing, or creative direction for any material.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

divinevideo/divine-mobile2652026년 10월 23일 업데이트

Fix "Null check operator used on a null value" errors when an object is set to null during an async await. Use when: (1) Object reference is nullified while awaiting, (2) Code accesses object with ! after await returns, (3) Cancel/dispose operations run concurrently with async operations on same object. Solution: capture local reference before await.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

divinevideo/divine-mobile2652026년 10월 23일 업데이트

Add custom metadata headers (x-amz-meta-*) to AWS v4 signed requests for GCS S3-compatible API. Use when: (1) Adding custom metadata to GCS uploads via S3 API, (2) Getting signature mismatch errors after adding new headers, (3) x-amz-meta-* headers being ignored or causing 403 errors. Custom headers MUST be included in canonical headers and signed headers list.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

divinevideo/divine-mobile2652026년 10월 23일 업데이트

Fix password/secret authentication failures caused by trailing newlines when creating Google Cloud secrets (or similar) with bash here-strings. Use when: (1) Password authentication fails with correct password, (2) Secret created with `<<< "value"` syntax, (3) Error like "password authentication failed" or "invalid token" despite correct value. Bash here-strings (`<<<`) add a trailing newline that corrupts secrets.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

divinevideo/divine-mobile2652026년 10월 23일 업데이트

Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp). Use when: (1) Media moderation, transcoding, or analysis silently skips files from Blossom or content-addressed storage servers, (2) URL extraction from Nostr event tags (imeta, r tags) drops URLs without recognized extensions, (3) CDN fallback URLs append .mp4 but the actual server uses extensionless content-addressed paths like /{sha256}. Common in Nostr video events (kind 34236) where different clients use different URL formats.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

divinevideo/divine-mobile2652026년 10월 23일 업데이트

divinevideo의 스킬 모두 보기

이 스킬의 문제 신고