Monorepo for Aesthetic.Computer
aesthetic.computer
1#!/usr/bin/env fish
2# Setup Cloudflare CNAME for at-blobs.aesthetic.computer → DigitalOcean Space
3# Provides a cleaner CDN URL for tape videos and thumbnails
4
5echo "🌐 Setting up CDN domain for at-blobs Space..."
6echo ""
7
8# Load environment variables from vault (directly set them)
9set -gx CLOUDFLARE_ACCOUNT_ID "a23b54e8877a833a1cf8db7765bce3ca"
10set -gx CLOUDFLARE_EMAIL "me@jas.life"
11set -gx CLOUDFLARE_API_KEY "0346704765b61e560b36592010c98a23bc2c6"
12set -gx ZONE_ID "da794a6ae8f17b80424907f81ed0db7c"
13
14echo "✅ Loaded Cloudflare credentials"
15echo ""
16
17# Cloudflare configuration
18set SUBDOMAIN "at-blobs"
19set FULL_DOMAIN "at-blobs.aesthetic.computer"
20set TARGET "at-blobs-aesthetic-computer.sfo3.cdn.digitaloceanspaces.com"
21
22echo " Zone: aesthetic.computer ($ZONE_ID)"
23echo " Creating: $FULL_DOMAIN → $TARGET"
24echo ""
25
26# Check if DNS record already exists
27echo " Checking for existing DNS record..."
28set CHECK_RESPONSE (curl -s -X GET \
29 "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?type=CNAME&name=$FULL_DOMAIN" \
30 -H "X-Auth-Email: $CLOUDFLARE_EMAIL" \
31 -H "X-Auth-Key: $CLOUDFLARE_API_KEY" \
32 -H "Content-Type: application/json")
33
34set RECORD_ID (echo $CHECK_RESPONSE | jq -r '.result[0].id // empty')
35
36if test -n "$RECORD_ID"
37 echo " Found existing record: $RECORD_ID"
38 echo " Updating..."
39
40 set UPDATE_RESPONSE (curl -s -X PUT \
41 "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
42 -H "X-Auth-Email: $CLOUDFLARE_EMAIL" \
43 -H "X-Auth-Key: $CLOUDFLARE_API_KEY" \
44 -H "Content-Type: application/json" \
45 --data "{
46 \"type\": \"CNAME\",
47 \"name\": \"$SUBDOMAIN\",
48 \"content\": \"$TARGET\",
49 \"ttl\": 1,
50 \"proxied\": true
51 }")
52
53 if echo $UPDATE_RESPONSE | jq -e '.success' > /dev/null
54 echo " ✅ DNS record updated!"
55 else
56 echo " ❌ Failed to update DNS record"
57 echo $UPDATE_RESPONSE | jq
58 exit 1
59 end
60else
61 echo " No existing record found. Creating new..."
62
63 set CREATE_RESPONSE (curl -s -X POST \
64 "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
65 -H "X-Auth-Email: $CLOUDFLARE_EMAIL" \
66 -H "X-Auth-Key: $CLOUDFLARE_API_KEY" \
67 -H "Content-Type: application/json" \
68 --data "{
69 \"type\": \"CNAME\",
70 \"name\": \"$SUBDOMAIN\",
71 \"content\": \"$TARGET\",
72 \"ttl\": 1,
73 \"proxied\": true
74 }")
75
76 if echo $CREATE_RESPONSE | jq -e '.success' > /dev/null
77 echo " ✅ DNS record created!"
78 else
79 echo " ❌ Failed to create DNS record"
80 echo $CREATE_RESPONSE | jq
81 exit 1
82 end
83end
84
85echo ""
86echo "✅ CDN domain configured successfully!"
87echo ""
88echo "📋 Summary:"
89echo " Domain: https://$FULL_DOMAIN"
90echo " Target: $TARGET"
91echo " Proxied: Yes (Cloudflare CDN)"
92echo " SSL: Automatic (Cloudflare Universal SSL)"
93echo ""
94echo "🔗 Manage DNS:"
95echo " https://dash.cloudflare.com/$ZONE_ID/aesthetic.computer/dns/records"
96echo ""
97echo "⏱️ Note: DNS propagation may take a few minutes"
98echo " Test with: curl -I https://$FULL_DOMAIN/tapes/"