Skip to main content
You can self-host the entire Floe stack independently of floe.one. The setup uses Docker Compose so the full stack comes up with a single command.

What you are hosting

The signaling server brokers WebRTC connection setup (offer, answer, ICE candidates) and issues short-lived TURN credentials. File data never passes through it. Transfers go peer-to-peer over encrypted WebRTC data channels. TURN is optional and only relays (still encrypted) traffic when a direct connection is not possible.

Components

Those are the ports inside the containers. In production you normally put both behind a single domain, so your users never see either one. See Reverse Proxy.

Contents

Quick Start

Get the stack running with Docker Compose in minutes.

Container Images

The prebuilt images on ghcr.io: tags, pinning a version or digest, and supported architectures.

Configuration

Environment variable reference for all settings.

Reverse Proxy

Serve the client and signaling server from one domain, with Caddy and nginx examples.

Production Deployment

HTTPS, custom domains, and the two-subdomain layout.

TURN Relay

Use Cloudflare’s managed TURN or add coturn to support peers behind strict NAT or CGNAT.

Operations

Day-to-day commands, updates, and health checks.