docs: Add comprehensive deployment guide and Railway DNS configuration

## Deployment Guide (DEPLOYMENT_GUIDE.md)
- Complete Railway custom domain setup (17 domains configured)
- Cloudflare DNS configuration instructions (Terraform + manual)
- GitHub secrets configuration for CI/CD
- Service deployment steps and verification checklist
- Architecture overview diagram
- Troubleshooting guide

## Cloudflare DNS (infra/cloudflare/dns-records-railway.tf)
- Updated with actual Railway CNAME targets from custom domains
- 12 subdomains for blackroad.systems
- 5 subdomains for blackroad.io
- All records configured as proxied CNAMEs

## Deploy Keys (infra/secrets/DEPLOY_KEYS.md)
- Generated ed25519 deploy keys for satellite repos
- Setup instructions for enabling deploy keys
- Security notes and key regeneration guide

## Railway Custom Domains Configured
- api.blackroad.systems → wghu19q0.up.railway.app
- core.blackroad.systems → panyy677.up.railway.app
- infra.blackroad.systems → xmky2kqn.up.railway.app
- app.blackroad.io → qydv7efz.up.railway.app
- + 13 more subdomains

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Alexa Louise
2025-11-29 13:49:35 -06:00
parent 591f64cb60
commit a62d44a637
3 changed files with 712 additions and 0 deletions

View File

@@ -0,0 +1,254 @@
# BlackRoad OS - Cloudflare DNS Configuration (Railway CNAMEs)
# Updated with actual Railway custom domain targets
#
# Usage:
# terraform init
# terraform plan
# terraform apply
#
# Prerequisites:
# - CLOUDFLARE_API_TOKEN environment variable set
# - Zone IDs for each domain
terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "~> 4.0"
}
}
}
# Variables
variable "cloudflare_api_token" {
description = "Cloudflare API token"
type = string
sensitive = true
}
variable "zone_id_blackroad_systems" {
description = "Zone ID for blackroad.systems"
type = string
}
variable "zone_id_blackroad_io" {
description = "Zone ID for blackroad.io"
type = string
}
# Provider
provider "cloudflare" {
api_token = var.cloudflare_api_token
}
# =============================================================================
# blackroad.systems DNS Records (Enterprise)
# Railway custom domain CNAMEs - Updated 2025-11-29
# =============================================================================
# API Gateway
resource "cloudflare_record" "api_systems" {
zone_id = var.zone_id_blackroad_systems
name = "api"
value = "wghu19q0.up.railway.app"
type = "CNAME"
proxied = true
comment = "API Gateway - blackroad-os-api-gateway"
}
# Core API
resource "cloudflare_record" "core_systems" {
zone_id = var.zone_id_blackroad_systems
name = "core"
value = "panyy677.up.railway.app"
type = "CNAME"
proxied = true
comment = "Core API - blackroad-os-core"
}
# Infrastructure
resource "cloudflare_record" "infra_systems" {
zone_id = var.zone_id_blackroad_systems
name = "infra"
value = "xmky2kqn.up.railway.app"
type = "CNAME"
proxied = true
comment = "Infrastructure - blackroad-os-infra"
}
# Documentation
resource "cloudflare_record" "docs_systems" {
zone_id = var.zone_id_blackroad_systems
name = "docs"
value = "xz8ar3k7.up.railway.app"
type = "CNAME"
proxied = true
comment = "Documentation - blackroad-os-docs"
}
# Console (Master)
resource "cloudflare_record" "console_systems" {
zone_id = var.zone_id_blackroad_systems
name = "console"
value = "alxh5zmf.up.railway.app"
type = "CNAME"
proxied = true
comment = "Console - blackroad-os-master"
}
# Demo
resource "cloudflare_record" "demo_systems" {
zone_id = var.zone_id_blackroad_systems
name = "demo"
value = "828zo5g8.up.railway.app"
type = "CNAME"
proxied = true
comment = "Demo - blackroad-os-demo"
}
# Archive
resource "cloudflare_record" "archive_systems" {
zone_id = var.zone_id_blackroad_systems
name = "archive"
value = "6339jp4b.up.railway.app"
type = "CNAME"
proxied = true
comment = "Archive - blackroad-os-archive"
}
# Research
resource "cloudflare_record" "research_systems" {
zone_id = var.zone_id_blackroad_systems
name = "research"
value = "3rlozcvl.up.railway.app"
type = "CNAME"
proxied = true
comment = "Research - blackroad-os-research"
}
# Finance Pack
resource "cloudflare_record" "finance_systems" {
zone_id = var.zone_id_blackroad_systems
name = "finance"
value = "70iyk36h.up.railway.app"
type = "CNAME"
proxied = true
comment = "Finance Pack - blackroad-os-pack-finance"
}
# Legal Pack
resource "cloudflare_record" "legal_systems" {
zone_id = var.zone_id_blackroad_systems
name = "legal"
value = "4zx90bq2.up.railway.app"
type = "CNAME"
proxied = true
comment = "Legal Pack - blackroad-os-pack-legal"
}
# Research Lab Pack
resource "cloudflare_record" "lab_systems" {
zone_id = var.zone_id_blackroad_systems
name = "lab"
value = "rf5v4b68.up.railway.app"
type = "CNAME"
proxied = true
comment = "Research Lab - blackroad-os-pack-research-lab"
}
# DevOps Pack
resource "cloudflare_record" "devops_systems" {
zone_id = var.zone_id_blackroad_systems
name = "devops"
value = "gjsw3tvq.up.railway.app"
type = "CNAME"
proxied = true
comment = "DevOps Pack - blackroad-os-pack-infra-devops"
}
# =============================================================================
# blackroad.io DNS Records (Consumer)
# =============================================================================
# Main App
resource "cloudflare_record" "app_io" {
zone_id = var.zone_id_blackroad_io
name = "app"
value = "qydv7efz.up.railway.app"
type = "CNAME"
proxied = true
comment = "Main App - blackroad-os-web"
}
# Home/Landing
resource "cloudflare_record" "home_io" {
zone_id = var.zone_id_blackroad_io
name = "home"
value = "e5zobwvo.up.railway.app"
type = "CNAME"
proxied = true
comment = "Home - blackroad-os-home"
}
# Public API
resource "cloudflare_record" "api_io" {
zone_id = var.zone_id_blackroad_io
name = "api"
value = "ulwsu2c6.up.railway.app"
type = "CNAME"
proxied = true
comment = "Public API - blackroad-os-api"
}
# OS Interface
resource "cloudflare_record" "os_io" {
zone_id = var.zone_id_blackroad_io
name = "os"
value = "ay7xf8lw.up.railway.app"
type = "CNAME"
proxied = true
comment = "OS Interface - blackroad-os"
}
# Creator Studio
resource "cloudflare_record" "creator_io" {
zone_id = var.zone_id_blackroad_io
name = "creator"
value = "z1imx63q.up.railway.app"
type = "CNAME"
proxied = true
comment = "Creator Studio - blackroad-os-pack-creator-studio"
}
# =============================================================================
# Outputs
# =============================================================================
output "blackroad_systems_records" {
value = {
api = "api.blackroad.systems → ${cloudflare_record.api_systems.value}"
core = "core.blackroad.systems → ${cloudflare_record.core_systems.value}"
infra = "infra.blackroad.systems → ${cloudflare_record.infra_systems.value}"
docs = "docs.blackroad.systems → ${cloudflare_record.docs_systems.value}"
console = "console.blackroad.systems → ${cloudflare_record.console_systems.value}"
demo = "demo.blackroad.systems → ${cloudflare_record.demo_systems.value}"
archive = "archive.blackroad.systems → ${cloudflare_record.archive_systems.value}"
research = "research.blackroad.systems → ${cloudflare_record.research_systems.value}"
finance = "finance.blackroad.systems → ${cloudflare_record.finance_systems.value}"
legal = "legal.blackroad.systems → ${cloudflare_record.legal_systems.value}"
lab = "lab.blackroad.systems → ${cloudflare_record.lab_systems.value}"
devops = "devops.blackroad.systems → ${cloudflare_record.devops_systems.value}"
}
description = "All blackroad.systems DNS records"
}
output "blackroad_io_records" {
value = {
app = "app.blackroad.io → ${cloudflare_record.app_io.value}"
home = "home.blackroad.io → ${cloudflare_record.home_io.value}"
api = "api.blackroad.io → ${cloudflare_record.api_io.value}"
os = "os.blackroad.io → ${cloudflare_record.os_io.value}"
creator = "creator.blackroad.io → ${cloudflare_record.creator_io.value}"
}
description = "All blackroad.io DNS records"
}