Skip to main content

BlueFlyAgents.com Landing Page Setup

BlueFlyAgents.com Landing Page Setup

Domain: blueflyagents.com
Purpose: Public landing page with Cloudflare Access protection for all other routes
Status: Planning


Architecture Overview

Public (No Auth Required):
  blueflyagents.com/           Landing page (public)

Protected (Cloudflare Access Required):
  blueflyagents.com/*           All other routes (requires authentication)
  blueflyagents.com/admin/*    Admin dashboard
  blueflyagents.com/api/*      API endpoints (if needed)

Project Structure

Project Location: Create new project blueflyagents-landing in root

/Users/flux423/Sites/LLM/blueflyagents-landing/
 public/
    index.html           # Landing page
    css/
       styles.css
    assets/
        logo.svg
 package.json
 README.md

Tech Stack:

  • Simple HTML/CSS/JavaScript
  • No build step required
  • Can be served via nginx or simple Node.js server

Option 2: Next.js Static Site (If you want React)

Project Location: Create new project blueflyagents-landing in root

/Users/flux423/Sites/LLM/blueflyagents-landing/
 app/
    page.tsx             # Landing page
 public/
    assets/
 package.json
 next.config.js

Tech Stack:

  • Next.js 14+ (App Router)
  • Static export for simple deployment
  • TypeScript

Cloudflare Configuration

1. Cloudflare Tunnel Route

Add to ~/.cloudflared/config.yml:

tunnel: f6da7bdf-d0f8-4796-a804-afb7984bbe11 credentials-file: ~/.cloudflared/f6da7bdf-d0f8-4796-a804-afb7984bbe11.json ingress: # Public landing page (no auth) - hostname: blueflyagents.com path: / service: http://localhost:8080 # Landing page server # Protected routes (Cloudflare Access will handle auth) - hostname: blueflyagents.com path: /admin/* service: http://localhost:8080 originRequest: access: required: true teamName: blueflyagents audTag: "your-access-tag" - hostname: blueflyagents.com path: /api/* service: http://localhost:8080 originRequest: access: required: true teamName: blueflyagents audTag: "your-access-tag" # Existing subdomain routes - hostname: mesh.bluefly.internal service: http://agent-mesh.tailcf98b3.ts.net:3005 - hostname: api.blueflyagents.com service: http://agent-mesh.tailcf98b3.ts.net:3005 # Catch-all (must be last) - service: http_status:404

2. Cloudflare Access Policy Setup

In Cloudflare Dashboard (https://one.dash.cloudflare.com/):

  1. Go to Zero Trust Access Applications

  2. Create new application:

    • Application name: BlueFly Agents Platform
    • Application domain: blueflyagents.com
    • Session duration: 24 hours
  3. Configure Policy:

    • Policy name: Protect All Routes Except Root
    • Action: Allow
    • Include:
      • Path: /* (all paths)
    • Exclude:
      • Path: / (root only - public)
    • Require:
      • Email: your-email@domain.com (your email only)
      • OR: Email domain: @yourdomain.com (if you want team access)
  4. Additional Settings:

    • Enable WAF for DDoS protection
    • Enable Bot Fight Mode for bot protection
    • Set Security Level to Medium or High

Landing Page Content Suggestions

Minimal Landing Page

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>BlueFly Agents - Enterprise AI Agent Platform</title> <meta name="description" content="Enterprise AI agent orchestration platform with OSSA compliance"> <link rel="stylesheet" href="/css/styles.css"> </head> <body> <header> <h1>BlueFly Agents</h1> <p>Enterprise AI Agent Platform</p> </header> <main> <section> <h2>About</h2> <p>BlueFly Agents is an enterprise-grade AI agent orchestration platform built on OSSA (Open Standard for Scalable Agents).</p> </section> <section> <h2>Platform Services</h2> <ul> <li>Agent Mesh - Multi-agent coordination</li> <li>Agent Router - LLM gateway and routing</li> <li>Agent Brain - Vector database and knowledge graphs</li> <li>Agent Tracer - Observability and distributed tracing</li> </ul> </section> <section> <h2>Contact</h2> <p>For access, please contact the platform administrator.</p> </section> </main> <footer> <p>&copy; 2026 BlueFly Agents. All rights reserved.</p> </footer> </body> </html>

Deployment Options

File: server.js

const http = require('http'); const fs = require('fs'); const path = require('path'); const PORT = 8080; const PUBLIC_DIR = path.join(__dirname, 'public'); const server = http.createServer((req, res) => { // Only serve root path publicly if (req.url === '/' || req.url === '/index.html') { const filePath = path.join(PUBLIC_DIR, 'index.html'); fs.readFile(filePath, (err, data) => { if (err) { res.writeHead(500); res.end('Error loading page'); return; } res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(data); }); } else { // All other routes require Cloudflare Access res.writeHead(403); res.end('Access Denied'); } }); server.listen(PORT, () => { console.log(`Landing page server running on port ${PORT}`); });

Run: node server.js

Option B: Nginx (If deploying to always-on infrastructure)

Config: /etc/nginx/sites-available/blueflyagents

server { listen 8080; server_name blueflyagents.com; root /var/www/blueflyagents/public; index index.html; location = / { try_files /index.html =404; } location / { return 403; } }

Option C: Docker Container

Dockerfile:

FROM nginx:alpine COPY public/ /usr/share/nginx/html/ EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]

Implementation Steps

Phase 1: Create Landing Page Project

  1. Create project directory:

    cd /Users/flux423/Sites/LLM mkdir blueflyagents-landing cd blueflyagents-landing
  2. Initialize project:

    npm init -y npm install --save-dev @types/node
  3. Create basic structure:

    mkdir -p public/css public/assets # Create index.html, server.js, etc.

Phase 2: Cloudflare Configuration

  1. Update Cloudflare Tunnel config (add root domain route)
  2. Set up Cloudflare Access policy (protect all routes except /)
  3. Test access:
    • https://blueflyagents.com/ should be public
    • https://blueflyagents.com/admin should require auth

Phase 3: Deploy

  1. Local testing:

    node server.js # Test locally: http://localhost:8080
  2. Deploy to always-on infrastructure:

    • Deploy to Vast.ai instance or dedicated server
    • Run on port 8080 (or update Cloudflare Tunnel config)
    • Use systemd or PM2 for process management

Security Considerations

  1. Cloudflare Access: Protects all routes except root
  2. WAF Rules: Enable Cloudflare WAF for DDoS protection
  3. Rate Limiting: Configure rate limits in Cloudflare
  4. SSL/TLS: Cloudflare handles SSL termination
  5. No Secrets: Landing page should not expose any sensitive information

Monitoring

  • Cloudflare Analytics: Monitor traffic to landing page
  • Access Logs: Review Cloudflare Access logs for authentication attempts
  • Uptime Monitoring: Set up monitoring for landing page availability

Next Steps

  1. Create landing page project
  2. Set up Cloudflare Tunnel route for root domain
  3. Configure Cloudflare Access policy
  4. Deploy landing page server
  5. Test public access vs protected routes
  6. Document in main infrastructure docs