OS·WholeTech
OS·WholeTech / Synology
🗄️ Synology NAS · DSM

The AI stack on Synology NAS.

A NAS is a file server, not a fast computer — but it's always on, which makes it perfect for two jobs: being a permanent Tailscale node so your files and services are reachable anywhere, and quietly hosting Ollama so a local model is always available to the whole house.

The coding agents (Claude Code, Codex, Gemini) can run on the NAS in a container, but a PC or Mac is usually a nicer place for those. This page is honest about which jobs the NAS does well.

🗺️New to the names? See the full map of AI tools and how they fit together at /landscape/.
Before you start

What you'll need

1

DSM, SSH & Container Manager

DSM is the Synology web interface you manage everything through. Container Manager is Synology's Docker app — it's how you run software on a NAS, because there's no winget, brew, or apt here.

Why this first: every AI tool below runs either inside a Docker container or as a Synology package. Getting Container Manager and SSH ready makes the rest copy-paste.

Open DSM

In a browser go to http://YOUR-NAS-IP:5000 (or your Synology address) and log in as an administrator.

Enable SSH

This lets you type commands directly on the NAS. In DSM go to Control Panel → Terminal & SNMP and check Enable SSH service, then Apply.

Install Container Manager

Open the Package Center, search for Container Manager, and click Install. On older DSM versions this same package is called Docker.

✓ Working when: Container Manager opens and shows the Registry and Container tabs.
2

Claude Code

Anthropic's AI coding agent — the same kind of assistant that built this page. It lives in a terminal, reads and edits real files, and runs commands for you.

Why you want it: it does actual multi-step work (build a site, fix a script, organize files), not just chat.

Make a container to run it in

The clean way on a NAS is a Node container. SSH into the NAS, then start one:

ssh your-user@YOUR-NAS-IP
sudo docker run -it --name ai-tools node:lts bash

That drops you inside a fresh Linux box with Node already installed.

Install & start it

Inside that container:

npm install -g @anthropic-ai/claude-code
claude

The first run signs you in to your Anthropic account. After that, type what you want in plain English.

✓ Working when: claude --version prints a version.
💡Honest tip: this works, but the NAS CPU is slow and keeping the container around is fiddly. Most people run Claude Code on a PC or Mac and use the NAS only for the always-on jobs (Tailscale, Ollama) further down. The full Claude playbook is at claude.wholetech.com.
3

Codex

OpenAI's command-line coding agent. Same idea as Claude Code, different brain — handy as a second opinion or when you've used up one tool's quota.

Why you want it: variety. Different models are stronger at different things; having both means you're never stuck.

Install (inside the same container)
npm install -g @openai/codex
Start it & log in
codex

First run lets you sign in with your ChatGPT/OpenAI account (or an API key). Then describe what you want, same as Claude.

✓ Working when: codex --version prints a version and codex opens its prompt.
4

Gemini CLI

Google's command-line AI agent. Notable for a very generous free tier and an enormous memory (context window) for long documents.

Why you want it: free headroom. Great for big, sprawling tasks before you spend on the others.

Install (inside the same container)
npm install -g @google/gemini-cli
Start it & log in
gemini

First run opens a browser sign-in with a Google account. The free tier is large — you likely won't pay anything to start.

✓ Working when: gemini --version prints a version and gemini opens its prompt.

Hermes Agent bonus · 4th agent

A coding agent from Nous Research — "the agent that grows with you." Same idea as Claude Code, Codex, and Gemini, with two twists: it's self-improving (it learns your preferences over time), and it's model-agnostic — you point it at whichever brain you want (Nous, OpenAI, Anthropic, OpenRouter, and more).

Why you'd add it: it's a fourth tool in the rotation and the most model-flexible of the bunch — handy for staying un-locked-in (see the future-proofing principles).

Honest heads-up: Hermes needs Python and is heavier than the other agents — a NAS is not a great place to run it. If you want it here, run it inside a Python-capable Docker container. But most people are better off running Hermes on a PC or Mac and keeping the NAS for the always-on jobs (Tailscale + Ollama).
Inside a Python container
pip install hermes-agent
hermes postinstall
Set it up & start it
hermes setup        # configure it the first time
hermes --tui        # start it (modern terminal UI)

During setup it asks how you want to sign in — an API key, or an OAuth login via hermes setup --portal. It works with the Nous Portal, OpenAI, Anthropic, OpenRouter, and others, so you can reuse an account you already have.

✓ Working when: hermes --version prints a version.
5

Tailscale — this is where the NAS shines

A private network (a "mesh VPN") that connects all your devices to each other securely — your PCs, Macs, phone, and this NAS — as if they were in the same room, from anywhere in the world. An always-on NAS is the ideal permanent node.

Why you want it: this is the glue. Once the NAS is on Tailscale, its files and the Ollama you set up next are reachable from every device, privately, no matter where you are.

Install the official package

Synology publishes an official Tailscale package. Open the Package Center, search Tailscale, and click Install.

Sign in

Open the Tailscale package and click Log in. Sign in with the same account you use on your other devices, so they all join one private network.

✓ Working when: the package shows this NAS connected with a 100.x.y.z address, and the NAS appears in your Tailscale admin list.
🌐What this unlocks: now your NAS — and the Ollama you set up next — is reachable from every device, anywhere, privately.
6

Ollama — an always-on local model server

Runs AI models on your own NAS instead of the cloud — free, private, offline-capable. Because the NAS never sleeps, the model is always available to the whole house.

Why you want it: no per-use cost, nothing leaves your network, and paired with Tailscale (Step 5) every device can share this one model server.

Run the Ollama container

Run the official Ollama image in Container Manager — easiest via SSH:

sudo docker run -d --name ollama -p 11434:11434 -v /volume1/docker/ollama:/root/.ollama ollama/ollama
Pull and run a small model
sudo docker exec -it ollama ollama run llama3.2
✓ Working when: curl http://localhost:11434/api/tags lists your model, or the run command gives you a >>> prompt.
Hardware note: Synology NAS units have no GPU and modest CPUs. x86 "Plus" models (e.g. DS920+, DS1522+) can run small models slowly; ARM/value models really can't. Keep to small models — this is for light, always-available use, not speed.
🌐Share it across the house: because port 11434 is published and the NAS is on Tailscale, every device in the house can use this one model server at the NAS's Tailscale address on port 11434.
You're done

What you have now

Your NAS is now a permanent Tailscale node and an always-on Ollama server the whole house can reach — plus a container ready to run the coding agents when you want them. The heavy coding work is happier on a PC or Mac, but the always-on jobs are exactly what a NAS is for.