Native install on Ubuntu, Debian, Fedora, and Arch. Covers NVIDIA CUDA and AMD ROCm setup, headless server deployment, systemd auto-start, and Nginx reverse proxy. Includes a systemd unit file generator and a GPU troubleshooting tool.
Same four things everywhere — Python 3.11+, pip, git, curl — but the package manager commands differ. Pick your distro:
On Ubuntu 20.04 or Debian 11, Python 3.11 isn't in the default repo — add the deadsnakes PPA first:
On RHEL/AlmaLinux 9, enable the EPEL repo first if Python 3.11 isn't found:
Arch ships Python 3.12+ now — Odysseus AI works with 3.12, but if you hit dependency issues, install 3.11 from the AUR:
These commands work on all supported distros after the prerequisites above. Run them as your regular user — not as root.
The official install script detects your GPU (NVIDIA CUDA, AMD ROCm, or CPU fallback) and sets up Ollama as a systemd service automatically.
Skip this step if you're using cloud API providers only (OpenAI, Anthropic, etc.).
The launcher creates a Python virtual environment, installs dependencies, and starts Odysseus AI on port 7000. Save the one-time admin password it prints.
First run takes 2–5 minutes to install Python dependencies. Watch for "Uvicorn running on http://0.0.0.0:7000" — that's your signal it's ready.
From any browser on the machine:
Log in as admin with the password from step III. In Settings → Providers, add your Ollama endpoint (http://localhost:11434/v1) or any cloud API key.
Odysseus AI itself is backend-agnostic — it talks to Ollama's OpenAI-compatible endpoint regardless of whether CUDA or ROCm is underneath. The GPU setup is entirely in the Ollama layer.
RTX 2000 series and newer. Requires driver 525+ and CUDA Toolkit 12.
If Ollama's response mentions CUDA or the GPU name, you're accelerated. If it says CPU, the driver install didn't complete — see the diagnostic tool below.
RX 6000 series (RDNA 2) and newer. Requires ROCm 6.x.
HSA_OVERRIDE_GFX_VERSION is needed for some RX 7000 cards that aren't yet in the default ROCm whitelist. Use 10.3.0 for RX 6000 series.
Installing Odysseus AI on a remote Linux server with no desktop environment — a home lab box, a VPS, a rack server. The core install is identical; the difference is how you access it and keep it running.
By default ./start.sh binds to 0.0.0.0:7000, so it's reachable from the network immediately after launch. Run it in a persistent session so it survives your SSH disconnect:
Replace localhost with your server's local IP address:
Odysseus AI doesn't ship HTTPS or strong rate-limiting out of the box. If your server has a public IP, put Nginx in front with TLS first — the next section covers this. Using a VPN (WireGuard, Tailscale) to reach your home server is a cleaner option than opening a firewall port.
A systemd service makes Odysseus AI start at boot, restart on crash, and integrate with systemctl and journalctl. This generator creates the correct unit file for your exact install path and user.
Fill in three fields. Copy the output to ~/.config/systemd/user/odysseus.service, then enable it with the commands shown.
For any deployment reachable from outside your LAN. Nginx handles TLS termination; Odysseus AI stays on localhost and never sees raw HTTPS traffic.
Certbot rewrites the config to redirect HTTP to HTTPS and auto-renews the cert via a systemd timer. After this Odysseus AI is available at https://odysseus.yourdomain.com with a valid cert and no browser warnings.
Run nvidia-smi, rocm-smi, or ollama run llama3.2:3b "test" 2>&1, copy the failing lines, and paste below.
Matches 10 common Linux GPU acceleration failures for Odysseus AI / Ollama.
// landfall checklist
http://localhost:7000 opens the Odysseus AI login pagenvidia-smi or rocm-smi shows your GPUsudo reboot test)The driver is installed but the kernel module isn't loaded — usually after a kernel update without a reboot, or a Secure Boot blockage.
Your distro doesn't have Python 3.11 in the default repos, or Python wasn't added to PATH after install.
CUDA installed but Ollama can't see it. Usually the NVIDIA driver version is below 525, or Ollama was installed before the driver.
A previous Odysseus AI process didn't exit cleanly, or another service holds 7000.
Newer RDNA 3 cards sometimes aren't in the default ROCm whitelist. Override the GFX version.
The unit file has a path or user mismatch — the most common generator mistake is a relative path instead of absolute.
sudo ubuntu-drivers autoinstall, reboot, then install Ollama via curl -fsSL https://ollama.com/install.sh | sh. Ollama auto-detects CUDA. Then clone Odysseus AI and run ./start.sh — it connects to Ollama's endpoint and inherits the GPU acceleration automatically../start.sh inside tmux or screen to keep it alive after SSH disconnect, or use the systemd service for proper auto-start. Access the UI from any browser at http://server-ip:7000. For internet-facing deployments, put Nginx with Certbot TLS in front.odysseus.service file for ~/.config/systemd/user/ (user scope) or /etc/systemd/system/ (system scope). Enable it with systemctl --user enable --now odysseus. Check status with systemctl --user status odysseus and logs with journalctl --user -u odysseus -f.git pull to fetch updates, then run ./start.sh again — it detects changes to requirements.txt and upgrades the venv. If you're running a systemd service, restart it: systemctl --user restart odysseus. Your database, uploaded files, and settings survive updates.docker compose up. The Docker guide covers both paths.