Bare-metal Ubuntu AI workstation running Ollama for local LLM inference.
| Field | Value |
|---|---|
| IP | 10.0.2.19 (static via systemd-networkd) |
| SSH | ssh cortex |
| OS | Ubuntu 26.04 LTS |
| Hostname | cortex (formerly: argus) |
| Credentials | Vaultwarden → Infrastructure collection |
| Updated | 2026-06-12 |
Cortex is a bare-metal workstation dedicated to AI inference. It is not managed through Proxmox — it is a standalone Ubuntu machine on the LAN. Ollama runs as a systemd service for local LLM inference. Docker is installed but no containers are currently running. Open WebUI has not yet been deployed.
| Component | Detail |
|---|---|
| CPU | AMD Ryzen (Strix Halo platform), 24 cores |
| RAM | 30 GB |
| Disk | 935 GB SSD (~61 GB used) |
| GPU | AMD Radeon 880M/890M iGPU (/dev/dri/renderD128) |
| NPU | AMD Strix Halo Neural Processing Unit |
| NIC | Realtek RTL8125 2.5GbE (enp195s0) |
GPU: ROCm is not installed. Ollama runs CPU-only. GPU acceleration is a future hardening item.
ssh cortex # [email protected] via ~/.ssh/cortex key
No public URL. Ollama API is available on the LAN at http://10.0.2.19:11434.
Installed directly on the host — not in Docker. Managed as a systemd service.
# Check service status
ssh cortex 'systemctl status ollama'
# Check API is responding
ssh cortex 'curl -s http://localhost:11434/api/version'
# List installed models
ssh cortex 'ollama list'
# Pull a model (example)
ssh cortex 'ollama pull llama3.2'
# Run a model interactively (SSH in first)
ssh cortex
ollama run llama3.2
# Remove a model
ssh cortex 'ollama rm llama3.2'
| Detail | Value |
|---|---|
| API port | 11434 |
| Service user | ollama (group: ollama) |
| Unit file | /etc/systemd/system/ollama.service |
| Model storage | /usr/share/ollama/.ollama/models/ |
Docker is installed. When Open WebUI is deployed, use:
ssh cortex
docker run -d \
--name open-webui \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui:/app/backend/data \
--restart always \
ghcr.io/open-webui/open-webui:main
Then add an NPM proxy host: ai.pittsfamily.me → http://10.0.2.19:3000.
# View the unit file
ssh cortex 'cat /etc/systemd/system/ollama.service'
# Reload and restart after unit file changes
ssh cortex 'sudo systemctl daemon-reload && sudo systemctl restart ollama'
# Follow logs live
ssh cortex 'journalctl -u ollama -f'
# Last 50 log lines
ssh cortex 'journalctl -u ollama -n 50 --no-pager'
# View config
ssh cortex 'cat /etc/systemd/network/10-enp195s0.network'
# Verify IP
ssh cortex 'ip addr show enp195s0'
Settings: IP 10.0.2.19/24, gateway 10.0.2.1, DNS 10.0.2.15 (Pi-hole).
# Root filesystem
ssh cortex 'df -h /'
# Ollama model storage
ssh cortex 'du -sh /usr/share/ollama/.ollama/models/'
# Per-model breakdown
ssh cortex 'ollama list'
# Step 1: Stop the service
ssh cortex 'sudo systemctl stop ollama'
# Step 2: Run the installer (updates in-place)
ssh cortex 'curl -fsSL https://ollama.com/install.sh | sudo sh'
# Step 3: Start service
ssh cortex 'sudo systemctl start ollama'
# Step 4: Confirm version
ssh cortex 'ollama --version'
ssh cortex 'curl -s http://localhost:11434/api/version'
ssh cortex 'sudo apt update && sudo apt upgrade -y'
# List running containers
ssh cortex 'docker ps'
# View Open WebUI logs
ssh cortex 'docker logs open-webui --tail 50'
# Restart Open WebUI
ssh cortex 'docker restart open-webui'
# Update Open WebUI
ssh cortex 'docker pull ghcr.io/open-webui/open-webui:main'
ssh cortex 'docker stop open-webui && docker rm open-webui'
# Then re-run the docker run command from the Services section
Cortex has no stateful data that requires regular backup during normal operation. Models are re-pulled from the Ollama registry after a rebuild.
If Open WebUI is deployed, back up its data volume:
# From the Mac — back up Open WebUI volume to Mnemosyne
ssh cortex 'docker exec open-webui tar czf /tmp/webui-backup.tar.gz /app/backend/data'
ssh cortex 'scp /tmp/webui-backup.tar.gz mnemosyne:/mnt/tank/backups/cortex/'
OS configuration to preserve for a quick rebuild:
/etc/systemd/network/10-enp195s0.network — static IP/etc/systemd/system/ollama.service — Ollama unit file~sysadmin/.ssh/authorized_keys — SSH keysStep 1 — Install Ubuntu 26.04 Server
Boot from USB. Install. Create user sysadmin with sudo rights. Set hostname cortex.
Step 2 — Configure static IP
sudo tee /etc/systemd/network/10-enp195s0.network > /dev/null << 'EOF'
[Match]
Name=enp195s0
[Network]
Address=10.0.2.19/24
Gateway=10.0.2.1
DNS=10.0.2.15
EOF
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd
Verify: ip addr show enp195s0 should show 10.0.2.19.
Step 3 — Install SSH key
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# Retrieve the cortex SSH key from Vaultwarden → Infrastructure → Cortex SSH Key
# Paste the public key:
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
From the Mac: ssh cortex should now connect without a password prompt.
Step 4 — Install Docker
ssh cortex
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker sysadmin
# Log out and back in for docker group to take effect
exit
Step 5 — Install Ollama
ssh cortex
curl -fsSL https://ollama.com/install.sh | sudo sh
sudo systemctl enable --now ollama
# Verify
systemctl status ollama
curl -s http://localhost:11434/api/version
exit
Step 6 — Pull models as needed
ssh cortex 'ollama pull llama3.2'
ssh cortex 'ollama pull mistral'
Step 7 — Deploy Open WebUI (optional)
See Services section above.
Step 8 — Add NPM proxy host
In NPM admin UI (npm.pittsfamily.me): add proxy host ai.pittsfamily.me → http://10.0.2.19:3000 once Open WebUI is running.
| Issue | Detail |
|---|---|
| CPU-only inference | ROCm not installed. GPU acceleration requires setting up ROCm for AMD iGPU — future work. |
ai.pittsfamily.me returns 502 |
NPM proxy exists but Open WebUI is not deployed. Expected until Open WebUI is running. |
| No models loaded | ollama list is empty. Pull models before use. |
| SSH may hang | Observed in May 2026 — if SSH hangs, wait 30 s and retry once before escalating. |
Last verified: 2026-06-10 (MCP topic — Ollama 0.21.1 confirmed running via SSH)