Remote OpenClaw Blog
Hermes Agent Docker Setup: One-Click Template vs Manual Install (2026)
9 min read ·
Hermes Agent Docker setup comes down to two real paths in 2026: a one-click VPS template that deploys the container for you, or a manual docker run on any server you already control. Docker is the recommended way to run Hermes Agent on a VPS because it isolates the agent from the host and turns updates into a single image pull, per Hostinger's official tutorial; the native curl installer remains the right call only for laptops and dev machines. This guide covers both paths, the tradeoffs Hostinger's docs will not decide for you, env var handling inside containers, and how to run multiple agents side by side.
Why Docker Instead of a Root Install
Docker packages Hermes Agent and all of its dependencies into one container, so you never install Python 3.11, Node.js, or a virtual environment on the host. That matters for three reasons on a VPS. First, isolation: Hermes is an agent with terminal access, and a containerized agent that goes wrong damages a sandbox, not your server. Second, updates: replacing the container with a newer image is two commands, with all state safe on a mounted volume. Third, repeatability: the same image runs identically on Hostinger, Hetzner, or your homelab.
The native installer (curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash) still makes sense on a laptop where you want the Desktop app and CLI together. On a server you plan to leave running 24/7, the community and Hostinger's own Docker tutorial both point the same way: containerize it. Even inside Docker, you can add a second layer of isolation by making the agent run its shell commands in a sandboxed container with hermes config set terminal.backend docker.
One-Click vs Manual vs Native: Decision Table
The three install paths differ in speed, control, and who maintains the plumbing. Here is the honest comparison:
| Path | Time to agent | Best for | You manage | Watch for |
|---|---|---|---|---|
| One-click template (Hostinger) | ~10 min incl. checkout | Beginners, anyone who values time | Nothing below the container | Plans are paid upfront; renewal is higher than intro price |
Manual docker run | ~30 min with Docker installed | Existing VPS, any provider | Docker, volumes, restarts, firewall | Forgetting the volume mount loses all state |
| Native curl installer | ~10 min | Laptops, dev machines, Desktop app users | Host Python/Node, PATH, systemd persistence | Gateway dies on logout without linger/systemd config |
Path 1: The One-Click Template Flow
The one-click flow deploys Hermes Agent from Hostinger's application catalog with the Docker layer fully automated. The exact sequence, per Hostinger's KB and tutorial docs:
- Deploy at checkout. Pick a plan on the Hermes Agent application page (KVM 2 at $8.79/mo is the sweet spot, and it is up to 70% off with the summer sale right now). The system installs the container and supporting services like Traefik automatically. Already have a Hostinger VPS? Go to VPS, then OS & Panel, then Operating System, choose Change OS, and search for Hermes Agent instead.
- Set credentials. During deployment you create an admin username and password for the web terminal.
- Open the agent. In Docker Manager, click Open next to the Hermes project and log in. You land in the Hermes CLI in your browser, with the setup wizard waiting.
- Run the wizard. Quick setup uses the Nous Portal with no API keys; Full setup connects your own provider, including nexos.ai credits if you added them at purchase (the key is pre-filled).
Everything after the wizard, including model choice, Telegram, and first prompts, is the same regardless of path; our from-scratch setup guide continues from here.
Path 2: Manual Docker Install on Any VPS
The manual path needs a Linux VPS with Docker installed and about 8 GB of RAM (the Hermes container itself uses around 1 GB, more with browser automation), per Hostinger's Hermes Agent KB article. Create the data directory, then run the setup container:
mkdir -p ~/.hermes
docker run -it --rm \
-v ~/.hermes:/opt/data \
nousresearch/hermes-agent setup
The -v ~/.hermes:/opt/data flag mounts a host directory into the container's data path, and Hermes stores its config, API keys, sessions, skills, and memory there. This is the single most important line in the whole setup: run the container without it and every restart wipes your agent's brain, which Hostinger lists among the top setup mistakes.
After the wizard, run the gateway as a long-lived container so the agent survives reboots:
docker run -d \
--name hermes \
--restart unless-stopped \
-v ~/.hermes:/opt/data \
nousresearch/hermes-agent gateway run
If you would rather declare this as a compose file with the dashboard and backups wired in, our Hermes Agent docker-compose guide has the full stack, and the self-hosted guide covers non-Hostinger providers end to end.
Env Vars and Secrets Inside Containers
Hermes separates secrets from settings: API keys and tokens live in ~/.hermes/.env on the mounted volume, while non-sensitive configuration lives in ~/.hermes/config.yaml. Because the volume is mounted, secrets survive container replacement without ever being baked into an image, and docker inspect on the container does not leak keys you passed the proper way.
Three rules keep this clean:
- Set secrets with the CLI, not chat.
hermes config set GITHUB_TOKEN github_pat_XXXXwrites to the env file; pasting a token into a conversation writes it into session history. - Never put keys in the image or compose file. Anything committed to a repo or built into a layer eventually leaks. The mounted
.envis the only home for credentials. - Scope every token. Use fine-grained GitHub tokens limited to one repo, named API keys per agent so you can revoke one container without rotating everything, and spend limits at the provider.
Inside the container, the sandboxed terminal backend (hermes config set terminal.backend docker) keeps agent-executed commands from touching the host at all, which Hostinger recommends for any VPS deployment.
Running Multiple Agents in Containers
Containers are the cleanest way to run several fully independent Hermes agents on one server: one container plus one data volume per agent, each with its own model, memory, and messaging identity.
docker run -d --name hermes-work \
--restart unless-stopped \
-v ~/hermes-work:/opt/data \
nousresearch/hermes-agent gateway run
docker run -d --name hermes-personal \
--restart unless-stopped \
-v ~/hermes-personal:/opt/data \
nousresearch/hermes-agent gateway run
Before you spawn a second agent, though, check whether you actually need one. Hermes profiles give you separate config, memory, skills, and sessions inside a single install (hermes profile create work), and the community consensus is to start with one agent, then split when contexts pollute each other. Separate containers win when the agents need different Telegram bots, different resource limits, or blast-radius isolation. A KVM 2 (8 GB RAM) runs two or three light agents comfortably; go bigger for heavy browser automation. Our Hermes multi-agent setup guide goes deeper, and a popular workflow from the 2026 setup courses is managing all your agent containers from a single Claude Code project, where the coding agent writes and maintains the run scripts for the fleet.
On Hostinger specifically, the built-in Docker Manager gives you logs, restarts, and one-click updates for every container in one screen, which is most of the reason the Hostinger route stays attractive past day one.
Updating Without Losing Anything
Updating a Dockerized Hermes agent is a pull-and-replace, and the mounted volume means zero data loss:
docker pull nousresearch/hermes-agent:latest
docker rm -f hermes
docker run -d --name hermes --restart unless-stopped \
-v ~/.hermes:/opt/data \
nousresearch/hermes-agent gateway run
On Hostinger, the same operation is the three-dot menu next to the project in Docker Manager, then Update. Either way, check the Hermes Agent GitHub repo for release notes first; v0.18.0 shipped July 1, 2026 and changed session and tool behavior.
Limitations: When Docker Is the Wrong Call
Docker is the wrong call when you want the Hermes Desktop app, since the visual interface, memory graph, and /learn flow belong to the native install on macOS and Windows. It also adds a layer of indirection when debugging: logs live behind docker logs hermes, and file paths inside the container differ from the host. And a container does not remove the security work; you still need gateway allowlists, the Tirith command scanner left on, and closed inbound ports (8642 for the API, 9119 for the dashboard) if you only chat through messaging platforms. If you want zero server responsibility at all, that is not a Docker flavor, that is a different product category, and our cost breakdown compares what each level of convenience costs.
Related Guides
- How to Set Up Hermes Agent from Scratch (2026 Guide)
- How to Run Hermes Agent on a Hostinger VPS (One-Click, ~10 Minutes)
- Hermes Agent Docker Compose Guide
- Hermes Agent Self-Hosted Guide
Go deeper
The operator playbooks
Production-ready PDF guides for OpenClaw and Hermes Agent — $19.99 each.
Skills for this topic
Browse all skills →Frequently Asked Questions
Should I run Hermes Agent in Docker or install it natively?
Use Docker on any server you leave running 24/7: it isolates the agent, survives dependency rot, and updates with one image pull. Install natively on a laptop or desktop where you want the Hermes Desktop app and local CLI together.
How do I update Hermes Agent in Docker?
Pull the latest image, remove the old container, and start a new one against the same volume: docker pull nousresearch/hermes-agent:latest , then docker rm -f hermes , then re-run the gateway command. Hostinger users can click Update in Docker Manager instead.
Can I run multiple Hermes agents on one VPS?
Yes: give each agent its own container and its own data volume, plus its own bot token if both use Telegram. An 8 GB KVM 2 plan handles two or three light agents; use Hermes profiles instead if you only need separate contexts, not separate infrastructure.





