Files
blackroad-infra/scripts/setup-dns.sh
Alexa Amundson 521e19bcbf Add 10 deployment and infrastructure scripts
- Pi cluster deployment for fleet management
- Cloudflare worker and DNS deployment
- Full service deployment orchestration
- Tunnel and VPN setup (Cloudflare, Tailscale)
- K3s and Docker setup for container orchestration
- Pi fleet management for hardware nodes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:10:30 -06:00

92 lines
2.8 KiB
Bash

#!/bin/bash
# Cloudflare DNS Setup for blackroad.io → Railway
# Run this AFTER Railway services are deployed
set -e
CF_TOKEN='yP5h0HvsXX0BpHLs01tLmgtTbQurIKPL4YnQfIwy'
CF_ZONE='848cf0b18d51e0170e0d1537aec3505a'
echo "☁️ Setting up Cloudflare DNS for blackroad.io..."
# Function to create/update DNS record
create_dns_record() {
local name="$1"
local target="$2"
local proxy="${3:-true}"
echo " 📝 Creating CNAME: ${name}.blackroad.io → $target"
# Check if record exists
EXISTING=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE}/dns_records?name=${name}.blackroad.io" \
-H "Authorization: Bearer ${CF_TOKEN}" \
-H "Content-Type: application/json")
RECORD_ID=$(echo "$EXISTING" | jq -r '.result[0].id // empty')
if [ -n "$RECORD_ID" ]; then
# Update existing record
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/${CF_ZONE}/dns_records/${RECORD_ID}" \
-H "Authorization: Bearer ${CF_TOKEN}" \
-H "Content-Type: application/json" \
-d "{
\"type\": \"CNAME\",
\"name\": \"${name}\",
\"content\": \"${target}\",
\"proxied\": ${proxy},
\"ttl\": 1
}" | jq -r '.success'
else
# Create new record
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/${CF_ZONE}/dns_records" \
-H "Authorization: Bearer ${CF_TOKEN}" \
-H "Content-Type: application/json" \
-d "{
\"type\": \"CNAME\",
\"name\": \"${name}\",
\"content\": \"${target}\",
\"proxied\": ${proxy},
\"ttl\": 1
}" | jq -r '.success'
fi
}
echo ""
echo "⚠️ IMPORTANT: Get your Railway domains first!"
echo ""
echo "Go to Railway dashboard and copy the domains for each service:"
echo " web service → something like: web-production.up.railway.app"
echo " api service → something like: api-production.up.railway.app"
echo ""
read -p "Enter the Railway domain for WEB (e.g., web-production.up.railway.app): " WEB_DOMAIN
read -p "Enter the Railway domain for API (e.g., api-production.up.railway.app): " API_DOMAIN
echo ""
echo "🚀 Creating DNS records..."
# Create www subdomain
create_dns_record "www" "$WEB_DOMAIN" "true"
# Create root domain
create_dns_record "@" "$WEB_DOMAIN" "true"
# Create api subdomain
create_dns_record "api" "$API_DOMAIN" "true"
# Optional: app subdomain (if you want app.blackroad.io)
# create_dns_record "app" "$WEB_DOMAIN" "true"
echo ""
echo "✅ DNS records created successfully!"
echo ""
echo "🔗 Your domains should be live shortly:"
echo " https://www.blackroad.io"
echo " https://blackroad.io"
echo " https://api.blackroad.io"
echo ""
echo "⏱ DNS propagation may take 5-10 minutes"
echo "🔒 SSL certificates will be auto-generated by Railway"
echo ""
echo "📋 Next: Test your endpoints!"