Sharing & Mobile Access
Tunneling with outport share
outport share tunnels your HTTP services to public URLs via Cloudflare quick tunnels. Requires cloudflared (brew install cloudflared).
outport share # tunnel all HTTP services
outport share web # tunnel a specific serviceThe command blocks until you press Ctrl+C.
Each hostname gets its own tunnel — if a service has named aliases, each alias is tunneled independently alongside the primary hostname. All tunnels route through the local proxy so host-based routing works correctly. The maximum number of concurrent tunnels is controlled by the tunnels.max setting (default 8).
Note that wildcard subdomain routing (subdomains: true) is local-only — tunnels use explicit hostnames, not wildcards. If you need a specific subdomain reachable through a tunnel, add it as an explicit alias.
While sharing, .env files are rewritten so computed values using ${service.url} resolve to the tunnel URLs automatically. CORS origins, API base URLs, and other cross-service values just work. Values using ${service.url:direct} stay as localhost (server-to-server calls still go direct). On exit, .env files revert to local URLs. Restart your services after starting and stopping outport share.
QR codes for mobile access
outport qr generates QR codes so you can open your services on a phone or tablet over the local network.
outport qr # QR codes for all HTTP services (LAN URLs)
outport qr --tunnel # QR codes using tunnel URLs insteadThe dashboard at https://outport.test also shows QR codes for each service — tap the QR icon next to any service to scan it.
Tunnel troubleshooting
502 Bad Gateway
The tunnel connected but nothing is listening on the local port. Make sure the service is actually running on the port shown in outport share output.
Vite blocks the tunnel hostname
If you see "Blocked request" and a message about server.allowedHosts, add .trycloudflare.com to your Vite config:
// vite.config.ts
server: {
allowedHosts: [".test", ".trycloudflare.com"]
}Rails blocks the tunnel hostname
If you see a red "Blocked hosts" error page, Rails is rejecting the .trycloudflare.com hostname. Add it to your config/environments/development.rb:
config.hosts << ".trycloudflare.com"Restart your Rails server after adding this.