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
Option 1: Simple Static Site (Recommended for MVP)
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/):
-
Go to Zero Trust Access Applications
-
Create new application:
- Application name:
BlueFly Agents Platform - Application domain:
blueflyagents.com - Session duration: 24 hours
- Application name:
-
Configure Policy:
- Policy name:
Protect All Routes Except Root - Action: Allow
- Include:
- Path:
/*(all paths)
- Path:
- Exclude:
- Path:
/(root only - public)
- Path:
- Require:
- Email:
your-email@domain.com(your email only) - OR: Email domain:
@yourdomain.com(if you want team access)
- Email:
- Policy name:
-
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>© 2026 BlueFly Agents. All rights reserved.</p> </footer> </body> </html>
Deployment Options
Option A: Simple Node.js Server (Recommended for MVP)
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
-
Create project directory:
cd /Users/flux423/Sites/LLM mkdir blueflyagents-landing cd blueflyagents-landing -
Initialize project:
npm init -y npm install --save-dev @types/node -
Create basic structure:
mkdir -p public/css public/assets # Create index.html, server.js, etc.
Phase 2: Cloudflare Configuration
- Update Cloudflare Tunnel config (add root domain route)
- Set up Cloudflare Access policy (protect all routes except
/) - Test access:
https://blueflyagents.com/should be publichttps://blueflyagents.com/adminshould require auth
Phase 3: Deploy
-
Local testing:
node server.js # Test locally: http://localhost:8080 -
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
- Cloudflare Access: Protects all routes except root
- WAF Rules: Enable Cloudflare WAF for DDoS protection
- Rate Limiting: Configure rate limits in Cloudflare
- SSL/TLS: Cloudflare handles SSL termination
- 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
- Create landing page project
- Set up Cloudflare Tunnel route for root domain
- Configure Cloudflare Access policy
- Deploy landing page server
- Test public access vs protected routes
- Document in main infrastructure docs