securityprivacytailscale
Odysseus Security & Safe Defaults
Odysseus is a powerful admin workspace — not a public chatbot. Start local, stay authenticated, and expand access only when you mean to.
Golden rule
Default to localhost only. Odysseus can run shell commands, read files, and hold API tokens — don't expose it like a consumer app.
Safe defaults checklist
- ✓Access via localhost first (7000 Docker/Windows, 7860 on Mac start-macos.sh)
- ✓Change the admin password after first login in Settings
- ✓Keep AUTH_ENABLED=true; leave LOCALHOST_BYPASS=false outside pure local experiments
- ✓Prefer Tailscale / VPN or a reverse proxy — not raw port forwards
- ✗Do not expose raw Odysseus port to the public internet
- ✗Do not expose ChromaDB, SearXNG, ntfy, or Ollama ports publicly
- ✗Never paste API keys into random websites or fake installers
LAN, Tailscale & APP_BIND
Prefer a private mesh VPN (e.g. Tailscale) over opening ports on your router. Put HTTPS at a reverse proxy when you leave loopback. Verify against the official setup guide before production.
Docker (.env)
terminal
# Docker — keep loopback by default (safe).
# Only change when you intentionally need LAN / reverse-proxy access.
# In .env:
APP_BIND=127.0.0.1
APP_PORT=7000
# Intentional LAN / proxy (trusted network only):
# APP_BIND=0.0.0.0
# Then put HTTPS + auth in front (Caddy, nginx, Cloudflare Access, etc.)
# Set SECURE_COOKIES=true when serving through HTTPS.macOS + Tailscale
terminal
# macOS native (start-macos.sh) — default is http://127.0.0.1:7860
# Trusted Tailscale / LAN only:
ODYSSEUS_HOST=0.0.0.0 ./start-macos.sh
# Then open http://<tailscale-ip>:7860
# Keep AUTH_ENABLED=true. Do not port-forward 7860 to the public internet.Windows native
terminal
# Windows native launcher binds 127.0.0.1 by default.
# Editing APP_BIND in .env alone does NOT change the launcher bind.
# Trusted LAN / Tailscale only:
powershell -ExecutionPolicy Bypass -File .\launch-windows.ps1 -BindHost 0.0.0.0
# Keep auth on. Prefer Tailscale over opening the port on your router.Clipboard / copy buttons often fail over plain http:// Tailscale IPs — browsers require a secure origin. Use HTTPS (mkcert / reverse proxy) or access via localhost on the host.
Privacy boundary
Local-first ≠ offline-only. Here's what can leave your machine:
| Feature | Stays local | May leave machine |
|---|---|---|
| Local Ollama / Cookbook chat | Prompts stay on your machine | Nothing, if no cloud API is configured |
| Cloud API (OpenAI, etc.) | Settings stored locally | Prompts sent to your configured provider |
| Deep research / web search | Reports saved locally | Queries may hit external search APIs |
| Agents, shell, MCP tools | Runs on your hardware | Connected tools may receive context you send |
Related guides
FAQ