Wiki · Integrations

Hosting and domains

The agent needs somewhere to run around the clock — but not an expensive server. A practical operations guide.

✅ Verified 17. 10. 2026Source: official documentation →📋 Copy for your AI
🏠
The agent needs somewhere to run around the clock — but it does not have to be an expensive server. Your own computer is enough for a chat. The moment the agent must answer Telegram, run scheduled jobs and receive webhooks, it has to stay up. The usual answer is a small VPS for the price of a couple of coffees a month.

Three options

Your computerVPS (rented server)Home server
Always onNo — it sleeps with the machineYesYes, while power and internet last
Public addressNoYes, immediatelyOnly via a tunnel or a public IP
Cost0A few euros a monthElectricity + hardware
Best forTrying it out, working with local filesNormal operation, webhooks, cronThose who do not want their data at a provider

How big a server

LoadSensible minimum
One agent, Telegram, cron, a few skills2 cores, 4 GB RAM, 40 GB disk
Multiple profiles, a small local model4 cores, 8–16 GB RAM
A local model for the main workA strong GPU or rented GPU time — otherwise stay with a cloud model

Disks fill up faster than expected — sessions, logs, backups, images. Watch df -h and set up cleanup of old files before you run out of space.

Domain and DNS

You need a domain for two reasons: webhooks (GitHub, Twilio and WhatsApp Cloud all want a public HTTPS address) and a pleasant way in to the agent's web UI. One domain and a subdomain is enough.

# example DNS records A agent.yourdomain.com → server IP AAAA agent.yourdomain.com → IPv6 (if you have one) CNAME www.yourdomain.com → yourdomain.com
StepWhy
A subdomain for the agent, not the whole domainKeep the main domain for your site; if the agent breaks, the site stays up
Low TTL (300 s) during setupChanges take minutes, not an hour
Raise the TTL once it worksFewer DNS queries

HTTPS

# nginx + certbot on Ubuntu/Debian apt install nginx certbot python3-certbot-nginx certbot --nginx -d agent.yourdomain.com systemctl enable --now certbot.timer # renewal handled for you

If you would rather not manage nginx, Caddy obtains certificates by itself. For webhooks from the internet HTTPS is mandatory — without it GitHub and Twilio will not deliver anything.

On a machine with no public address (home computer) a temporary tunnel is enough: cloudflared tunnel --url http://localhost:8080. The address changes, so it is for testing; for permanent operation use a named tunnel or a VPS.

Server security

MeasureHow
Key-only SSHPasswordAuthentication no in /etc/ssh/sshd_config
Firewallufw allow 22,80,443/tcp then ufw enable; everything else closed
Updatesunattended-upgrades — security patches apply themselves
The agent is not root over everythingIts own user, channel allowlists, confirmations for dangerous commands
Gateway as a servicehermes gateway install — survives logout and reboot

Backups and monitoring

# back up config, skills and memory hermes backup # restore hermes backup restore

Keep a copy of ~/.hermes off the server (not on the same disk) and verify a restore actually works. For monitoring, let the agent watch itself — see the measurement and monitoring page.

How we do it

HabitWhy it paid off
One small VPS for the agent, websites elsewhereWhen the agent experiments, sites keep serving
An agent. subdomain with HTTPSWebhooks work and the address is memorable
A nightly backup off the serverRecovering from a bad update takes minutes
Watching disk spaceThe most common reason something stops working

For concrete hosting offers see the Hosting page; prices move, which is why we do not copy them here.

Where next

← Back to the wiki