Odysseus serves plain HTTP on its app port. HTTPS termination is handled outside the app — either by passing it directly withDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/pewdiepie-archdaemon/odysseus/llms.txt
Use this file to discover all available pages before exploring further.
uvicorn’s built-in SSL support (suitable for LAN/Tailscale with mkcert), or by placing a reverse proxy or private access gateway in front of it. This page covers both patterns, plus the security settings you should enable before making Odysseus accessible beyond your local machine.
Default Binding
By default, Docker Compose and the native launchers bind Odysseus to127.0.0.1 — only the local machine can reach it. To make Odysseus reachable from other devices, change the bind address:
Security Checklist Before Going Beyond Localhost
Enable these settings in.env before binding to 0.0.0.0:
| Variable | Recommended value | Purpose |
|---|---|---|
AUTH_ENABLED | true | Require login. This is the default; do not disable it. |
LOCALHOST_BYPASS | false | Disable the development-only auth bypass for loopback requests. This is the default. |
SECURE_COOKIES | true | Mark session cookies as Secure. Set this when Odysseus is served through HTTPS at a trusted proxy or private access gateway. |
Option 1 — mkcert for LAN / Tailscale (Self-Signed CA)
mkcert generates locally-trusted TLS certificates signed by a CA it installs into your system and browser trust stores. This is well-suited for home-lab and Tailscale setups where you control all the devices.Generate a certificate for your IPs and hostnames
Replace the example IPs and hostnames with your actual LAN IP and/or Tailscale IP:Both
cert.pem and key.pem will be created in the current directory. Keep key.pem private.Start uvicorn with the certificate
https://192.168.1.100:7000 (or your Tailscale IP) from any device that trusts the mkcert CA.Trust the CA on other devices
Devices that browse to Odysseus need to trust the mkcert root CA. The CA certificate is at the path printed by
mkcert -CAROOT.iOS / iPadOS:- Email yourself the
rootCA.pemfile (rename torootCA.crtif needed). - Tap the attachment on your iPhone/iPad — iOS will prompt to install the configuration profile.
- Go to Settings → General → VPN & Device Management and install the profile.
- Go to Settings → General → About → Certificate Trust Settings and enable full trust for the mkcert CA.
.pem, then Settings → Security → Install a certificate → CA certificate.Windows: Double-click rootCA.pem → Install Certificate → Local Machine → Trusted Root Certification Authorities.Other Linux machines: Copy rootCA.pem to /usr/local/share/ca-certificates/mkcert-rootCA.crt and run sudo update-ca-certificates.Option 2 — Reverse Proxy
The typical production or private-network pattern is:- Keep Odysseus on loopback:
127.0.0.1:7000 - Terminate HTTPS at a trusted reverse proxy or private access gateway
- The proxy forwards requests to
http://127.0.0.1:7000
Caddy
Automatic HTTPS via Let’s Encrypt. Minimal config:
reverse_proxy 127.0.0.1:7000.nginx
Widely deployed. Use
proxy_pass http://127.0.0.1:7000; with a standard SSL server block.Traefik
Label-based config with automatic certificate management. Works well alongside Docker.
Cloudflare Access / Tunnel
Zero-trust access without opening any inbound ports. Cloudflare issues the TLS certificate and enforces identity before traffic reaches Odysseus.
.env:
SECURE_COOKIES=true is important here — it tells Odysseus to set the Secure flag on session cookies so they are only transmitted over the HTTPS connection the proxy provides.
Internal-Only Ports
Keep all bundled service ports internal. Expose only the Odysseus web/API entrypoint through your trusted proxy or access layer.| Port | Service | Notes |
|---|---|---|
7000 | Odysseus | Expose only via reverse proxy or access gateway |
8080 | SearXNG | Keep internal-only |
8091 | ntfy | Keep internal-only; can optionally bind to a Tailscale IP via NTFY_BIND |
8100 | ChromaDB (host port) | Keep internal-only |
11434 | Ollama | Keep internal-only |
8000–8020 | Common local model/provider APIs | Keep internal-only |
127.0.0.1 by default. If you need ntfy accessible from other devices (for mobile push notifications), you can bind it to your Tailscale IP specifically:
CORS and Allowed Origins
If you access Odysseus from a hostname or port that differs from the default, add it to theALLOWED_ORIGINS list in .env:
localhost and 127.0.0.1 only.