Files
blackroad-infra/scripts/deploy/deploy-cloudflare-tunnels.sh
Alexa Amundson d34d588dd0 Sync 134 infrastructure scripts and dashboard from local
94 deployment scripts, 32 setup scripts, 8 operational utilities
(cloudflare, docker, k3s, railway, tailscale, ssh, dns, network),
and Next.js infrastructure dashboard.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 01:12:37 -06:00

104 lines
4.2 KiB
Bash

#!/bin/bash
# ============================================================================
# BLACKROAD OS, INC. - PROPRIETARY AND CONFIDENTIAL
# Copyright (c) 2024-2026 BlackRoad OS, Inc. All Rights Reserved.
#
# This code is the intellectual property of BlackRoad OS, Inc.
# AI-assisted development does not transfer ownership to AI providers.
# Unauthorized use, copying, or distribution is prohibited.
# NOT licensed for AI training or data extraction.
# ============================================================================
# Deploy Cloudflare Tunnel configs for TTS and Monitoring services
# Uses cloudflared tunnel route dns commands
set -e
PINK='\033[38;5;205m'
AMBER='\033[38;5;214m'
BLUE='\033[38;5;69m'
GREEN='\033[38;5;82m'
RESET='\033[0m'
echo -e "${PINK}╔═══════════════════════════════════════════════════════════╗${RESET}"
echo -e "${PINK}║ 🌐 BlackRoad Cloudflare Tunnel Deployment ║${RESET}"
echo -e "${PINK}╚═══════════════════════════════════════════════════════════╝${RESET}"
echo ""
# Create tunnel config for octavia user space
TUNNEL_CONFIG="$HOME/.cloudflared/config.yml"
echo -e "${BLUE}📝 Creating tunnel config at: $TUNNEL_CONFIG${RESET}"
# Create directory
ssh octavia "mkdir -p ~/.cloudflared"
# Generate tunnel config
cat > /tmp/cloudflared-config.yml << 'EOF'
tunnel: blackroad-octavia
credentials-file: /home/operator/.cloudflared/credentials.json
ingress:
# TTS API
- hostname: tts.blackroad.io
service: http://localhost:5001
originRequest:
noTLSVerify: true
# Monitoring Dashboard
- hostname: monitor.blackroad.io
service: http://localhost:5002
originRequest:
noTLSVerify: true
# Website
- hostname: www.blackroad.io
service: http://localhost:80
originRequest:
noTLSVerify: true
# Catch-all
- service: http_status:404
EOF
echo -e "${GREEN}✅ Tunnel config created${RESET}"
echo ""
# Copy config to octavia
scp /tmp/cloudflared-config.yml octavia:~/.cloudflared/config.yml
echo -e "${GREEN}✅ Config deployed to octavia${RESET}"
echo ""
# Show DNS records needed
echo -e "${AMBER}╔═══════════════════════════════════════════════════════════╗${RESET}"
echo -e "${AMBER}║ 📋 DNS Records Needed (Cloudflare Dashboard) ║${RESET}"
echo -e "${AMBER}╚═══════════════════════════════════════════════════════════╝${RESET}"
echo ""
echo "Type: CNAME | Name: tts | Target: <tunnel-id>.cfargotunnel.com"
echo "Type: CNAME | Name: monitor | Target: <tunnel-id>.cfargotunnel.com"
echo "Type: CNAME | Name: www | Target: <tunnel-id>.cfargotunnel.com"
echo ""
# Test local services
echo -e "${BLUE}🧪 Testing local services...${RESET}"
echo ""
echo -n "TTS API (5001): "
ssh octavia "curl -s http://localhost:5001/health | jq -r .status 2>/dev/null || echo 'FAIL'"
echo -n "Monitor API (5002): "
ssh octavia "curl -s http://localhost:5002/health | jq -r .status 2>/dev/null || echo 'FAIL'"
echo -n "Nginx (80): "
ssh octavia "curl -s -o /dev/null -w '%{http_code}' http://localhost:80 2>/dev/null"
echo ""
echo ""
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════╗${RESET}"
echo -e "${GREEN}║ ✅ Tunnel Config Deployed! ║${RESET}"
echo -e "${GREEN}╚═══════════════════════════════════════════════════════════╝${RESET}"
echo ""
echo "Next steps:"
echo "1. Get tunnel ID: ssh octavia 'cloudflared tunnel list'"
echo "2. Add DNS records in Cloudflare dashboard"
echo "3. Restart: ssh octavia 'systemctl --user restart cloudflared'"
echo ""