Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168#!/usr/bin/env fish# Deploy grab worker with automatic DNS configuration# Based on the nanos/conductor.mjs pattern
set -e
echo "๐ Deploying grab worker with automatic DNS setup..."echo ""
# Load environment variables from vaultset VAULT_DIR /workspaces/aesthetic-computer/aesthetic-computer-vault/grabif test -f $VAULT_DIR/.env source $VAULT_DIR/.env echo "โ
Loaded environment variables from vault"else echo "โ ๏ธ Warning: No .env file found in vault" echo " Continuing with system environment variables..."end
echo ""
# Step 1: Deploy the workerecho "๐ฆ Step 1: Deploying worker to Cloudflare..."cd /workspaces/aesthetic-computer/grabnpx wrangler deploy
echo ""echo "โ
Worker deployed successfully!"echo ""
# Step 2: Configure DNS via Cloudflare APIecho "๐ Step 2: Configuring DNS (CNAME record)..."
# Check for required environment variablesif not set -q CLOUDFLARE_EMAIL echo "โ Error: CLOUDFLARE_EMAIL not set" echo " Please add to $VAULT_DIR/.env" exit 1end
if not set -q CLOUDFLARE_API_TOKEN echo "โ Error: CLOUDFLARE_API_TOKEN not set" echo " Please add to $VAULT_DIR/.env" exit 1end
# Cloudflare configurationset ZONE_ID "a23b54e8877a833a1cf8db7765bce3ca"set SUBDOMAIN "grab"set FULL_DOMAIN "grab.aesthetic.computer"set TARGET "aesthetic-grab.aesthetic-computer.workers.dev"
echo " Zone: aesthetic.computer ($ZONE_ID)"echo " Creating: $FULL_DOMAIN โ $TARGET"echo ""
# Step 2a: Check if DNS record already existsecho " Checking for existing DNS record..."set CHECK_RESPONSE (curl -s -X GET \ "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?type=CNAME&name=$FULL_DOMAIN" \ -H "X-Auth-Email: $CLOUDFLARE_EMAIL" \ -H "X-Auth-Key: $CLOUDFLARE_API_TOKEN" \ -H "Content-Type: application/json")
set RECORD_ID (echo $CHECK_RESPONSE | jq -r '.result[0].id // empty')
# Step 2b: Create or update DNS recordif test -n "$RECORD_ID" echo " ๐ก Updating existing CNAME record (ID: $RECORD_ID)..." set DNS_RESPONSE (curl -s -X PUT \ "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ -H "X-Auth-Email: $CLOUDFLARE_EMAIL" \ -H "X-Auth-Key: $CLOUDFLARE_API_TOKEN" \ -H "Content-Type: application/json" \ --data "{ \"type\": \"CNAME\", \"name\": \"$SUBDOMAIN\", \"content\": \"$TARGET\", \"ttl\": 1, \"proxied\": true }")else echo " ๐ก Creating new CNAME record..." set DNS_RESPONSE (curl -s -X POST \ "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \ -H "X-Auth-Email: $CLOUDFLARE_EMAIL" \ -H "X-Auth-Key: $CLOUDFLARE_API_TOKEN" \ -H "Content-Type: application/json" \ --data "{ \"type\": \"CNAME\", \"name\": \"$SUBDOMAIN\", \"content\": \"$TARGET\", \"ttl\": 1, \"proxied\": true }")end
# Check if DNS operation was successfulset DNS_SUCCESS (echo $DNS_RESPONSE | jq -r '.success')
if test "$DNS_SUCCESS" = "true" echo " โ
DNS record configured successfully!"else echo " โ DNS configuration failed:" echo $DNS_RESPONSE | jq -r '.errors[]?.message // "Unknown error"' echo "" echo " You can manually configure via:" echo " https://dash.cloudflare.com/$ZONE_ID/aesthetic.computer/dns/records" exit 1end
echo ""
# Step 3: Wait for DNS propagationecho "โณ Step 3: Waiting for DNS propagation..."echo " This usually takes 30-60 seconds..."echo ""
sleep 5
# Try to verify DNS is workingset MAX_ATTEMPTS 12set ATTEMPT 1
while test $ATTEMPT -le $MAX_ATTEMPTS echo -n " Attempt $ATTEMPT/$MAX_ATTEMPTS: " set HTTP_CODE (curl -s -o /dev/null -w "%{http_code}" "https://$FULL_DOMAIN/icon/128x128/prompt.png" 2>/dev/null) if test "$HTTP_CODE" = "200" echo "โ
DNS working!" break else echo "โณ Waiting... (HTTP $HTTP_CODE)" if test $ATTEMPT -eq $MAX_ATTEMPTS echo "" echo " โ ๏ธ DNS may still be propagating. Manual check:" echo " dig $FULL_DOMAIN" echo " curl -I https://$FULL_DOMAIN/icon/128x128/prompt.png" else sleep 5 end end set ATTEMPT (math $ATTEMPT + 1)end
echo ""
# Step 4: Success summaryecho "โจ Deployment complete!"echo ""echo "๐ Deployment Summary:"echo " Worker URL: https://aesthetic-grab.aesthetic-computer.workers.dev"echo " Custom URL: https://$FULL_DOMAIN"echo " DNS Record: $FULL_DOMAIN โ $TARGET (CNAME, Proxied)"echo ""echo "๐งช Test Commands:"echo " curl -I \"https://$FULL_DOMAIN/icon/128x128/prompt.png\""echo " curl -I \"https://$FULL_DOMAIN/preview/1200x630/prompt.png\""echo ""echo "๐ Next Steps:"echo " 1. Test screenshot generation with various pieces"echo " 2. Monitor logs: npx wrangler tail"echo " 3. Check Cloudflare dashboard for errors"echo " 4. Validate production integration on aesthetic.computer"echo ""