Tunnels!

AI Generated slop diagrams

Block

flowchart LR
    subgraph Internet
        User[("👤 User\n(Browser)")]
        Google["🔐 Google OAuth\n(Authentication)"]
        CF["☁️ Cloudflare Edge\n(1.appfarms.org)"]
    end

    subgraph Docker["Docker Network (proxy-net)"]
        subgraph Cloudflared["cloudflared container"]
            Tunnel["Cloudflare Tunnel\n(config.yml)"]
        end
        
        subgraph OAuth2["oauth2-proxy container"]
            Proxy["OAuth2 Proxy\n(:4180)"]
            EmailList[("📄 authorized_gmails.txt")]
        end
    end

    subgraph HomeLab["Home Lab Network"]
        Backend["🖥️ Backend Service\n(192.168.1.244)"]
    end

    User -->|"1. HTTPS Request"| CF
    CF <-->|"2. Secure Tunnel"| Tunnel
    Tunnel -->|"3. HTTP"| Proxy
    Proxy <-->|"4. OAuth Flow"| Google
    Proxy -->|"5. Check Email"| EmailList
    EmailList -->|"6. Authorized?"| Proxy
    Proxy -->|"7. Proxy Request"| Backend
    Backend -->|"8. Response"| Proxy

    style User fill:#e1f5fe
    style Google fill:#fff3e0
    style CF fill:#f3e5f5
    style Tunnel fill:#e8f5e9
    style Proxy fill:#fff8e1
    style EmailList fill:#fce4ec
    style Backend fill:#e0f2f1

Sequence Diagram

sequenceDiagram
    participant Browser as 🌐 Web Browser
    participant CF as ☁️ Cloudflare Edge<br/>(1.appfarms.org)
    participant Tunnel as 🐳 cloudflared<br/>Docker Container
    participant OAuth as 🔐 oauth2-proxy<br/>Docker Container
    participant Google as 🔑 Google OAuth
    participant Pi as 🍓 Raspberry Pi<br/>(192.168.1.244)
    participant SDR as 📻 RTL-SDR
    participant Antenna as 📡 Diamond X50A<br/>VHF/UHF Antenna

    Note over Browser,Antenna: Initial Authentication Flow
    
    Browser->>CF: HTTPS request to 1.appfarms.org
    CF->>Tunnel: Route through secure tunnel
    Tunnel->>OAuth: Forward to :4180
    OAuth->>Browser: Redirect to Google login
    Browser->>Google: Authenticate with Google
    Google->>Browser: Return OAuth token
    Browser->>OAuth: Present OAuth token
    
    Note over OAuth: Check email against<br/>authorized_gmails.txt
    
    alt Email Authorized
        OAuth->>Browser: Set session cookie
        
        Note over Browser,Antenna: Authenticated Data Flow
        
        Browser->>CF: Request SDR data
        CF->>Tunnel: Tunnel request
        Tunnel->>OAuth: Forward request
        OAuth->>Pi: Proxy to backend
        Pi->>SDR: Query SDR device
        SDR->>Antenna: Receive RF signals
        Antenna-->>SDR: VHF/UHF signals (144-148MHz, 420-450MHz)
        SDR-->>Pi: Digital IQ samples
        Pi-->>OAuth: Return data/waterfall
        OAuth-->>Tunnel: Response
        Tunnel-->>CF: Tunnel response
        CF-->>Browser: Display SDR interface
        
    else Email Not Authorized
        OAuth-->>Browser: 403 Forbidden
    end

    Note over Browser,Antenna: All traffic encrypted end-to-end<br/>No ports exposed to internet