Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Renew

Members
  • Joined

  • Last visited

  1. Hermes Agent on Unraid — Complete Install Guide (v0.14.0, Built from Hard-Won Experience) Prerequisites Unraid 6.12+ Docker enabled An SSD or NVMe pool mounted (e.g., /mnt/cache/ or /mnt/ssd/) — not an array disk via /mnt/user/ An Ollama container already running and accessible on your LAN At least one Ollama model with native context ≥ 64K (gemma4, qwen 3.6, llama 3.x, etc.) Optional: a Telegram bot token from @BotFather and your numeric user ID from @userinfobot Phase 1 — Prep Ollama Properly Before Hermes touches anything, make sure Ollama is configured for agent work. Edit your Ollama container template Add these environment variables (or update them if they exist): Key Value Purpose OLLAMA_HOST 0.0.0.0:11434 Reachable from other containers OLLAMA_CONTEXT_LENGTH 65536 Agent workloads need 64K+ OLLAMA_KEEP_ALIVE 24h Keep model warm in VRAM OLLAMA_FLASH_ATTENTION 1 Faster, less VRAM OLLAMA_NUM_PARALLEL 2 Allow concurrent requests OLLAMA_MAX_LOADED_MODELS 2 Main model + optional aux OLLAMA_SCHED_SPREAD 1 (optional) Force multi-GPU split (only if needed) Apply. Verify with: docker exec ollama printenv | grep OLLAMA docker exec ollama nvidia-smi Both GPUs should be visible. Pick and prepare a model Run: docker exec ollama ollama list Pick one with native context ≥ 64K. Verify: docker exec ollama ollama show <model-name> | grep -i "context length" If the number is ≥ 65536, you're set. If lower, pick a different model or create a derived Modelfile. Phase 2 — Prepare the Appdata Directory This is the single biggest source of failure later. Get it right now. Critical: use a direct pool path, NOT /mnt/user/ The FUSE-based /mnt/user/ filesystem breaks SQLite locking. Always use the direct pool mount. in console: mkdir -p /mnt/cache/appdata/hermes-agent (Replace /mnt/cache/ with /mnt/ssd/ or whichever pool you use for appdata.) Do NOT chown to 99:100 The Hermes image expects UID 10000 internally. Match that: in console: chown -R 10000:10000 /mnt/cache/appdata/hermes-agent Phase 3 — Run the Setup Wizard (Carefully) Pull the image and run the wizard docker run -it --rm \ -v /mnt/cache/appdata/hermes-agent:/opt/data \ nousresearch/hermes-agent setup Wizard answers — exact values Model provider: Choose Custom Endpoint (enter URL manually) — NOT "Custom Direct API." API base URL: http://<your-unraid-ip>:11434/v1 (e.g., http://10.10.10.150:11434/v1 — the /v1 is required, OpenAI-compat path) API key: ollama (any non-empty string — Ollama doesn't validate it) Model name: Exact tag from ollama list, e.g., gemma4:26b Context length: 65536 ⚠️ Critical typing rule: Do NOT press the up arrow during text input. The wizard captures the literal \e[A escape sequence and corrupts the value. If you mistype, use Backspace, never arrow keys. Configure aux models: Skip / use main provider for everything. Adding aux models with mismatched context windows causes silent failures. Telegram setup (optional): Bot token: paste the full <numeric>:<alphanumeric> from BotFather (40+ chars). If you only have a placeholder, skip this step rather than entering junk. Allowed users: paste your numeric Telegram user ID from @userinfobot. Never leave empty — "open access" means anyone with your bot username can burn your tokens. Agent name / SOUL: accept defaults. ⚠️ Critical: NEVER Ctrl+C the wizard The wizard atomic-commits at the end. Ctrl+C = lost configuration. If a step asks something you don't have an answer for, enter a placeholder (e.g., none, skip) and edit the file afterward. Always let the wizard run to completion. Verify what the wizard wrote cat /mnt/cache/appdata/hermes-agent/config.yaml | head -10 grep -E "TELEGRAM|HERMES" /mnt/cache/appdata/hermes-agent/.env The config.yaml should have a clean model: block. The .env should have your Telegram credentials if you set them up. Phase 4 — Build the Unraid Docker Template Switch to Advanced View in the top-right toggle of the Add Container page. Without this, you can't add Post Arguments or Extra Parameters. Top section Field Value Name hermes-agent Repository nousresearch/hermes-agent:latest Network Type Bridge Console shell command Bash Privileged Off Post Arguments gateway run Extra Parameters --restart=unless-stopped --shm-size=1g --memory=8g Icon URL (optional) https://avatars.githubusercontent.com/u/134168893?s=200 WebUI http://[IP]:[PORT:9119]/ Ports — add BOTH at once Gateway API: Field Value Config Type Port Name Gateway API Container Port 8642 Host Port 8642 Default Value 8642 Connection Type TCP Web Dashboard: Field Value Config Type Port Name Web Dashboard Container Port 9119 Host Port 9119 Default Value 9119 Connection Type TCP Path (just one) Field Value Config Type Path Name Config and Data Container Path /opt/data Host Path /mnt/cache/appdata/hermes-agent Default Value /mnt/cache/appdata/hermes-agent Access Mode Read/Write ⚠️ Use the direct pool path (/mnt/cache/ or /mnt/ssd/), never /mnt/user/. Environment Variables — exactly these, nothing extra Dashboard: Key Value Notes HERMES_DASHBOARD 1 Enable web dashboard HERMES_DASHBOARD_HOST 0.0.0.0 LAN-accessible HERMES_DASHBOARD_PORT 9119 Match the port mapping HERMES_DASHBOARD_TUI 1 In-browser Chat tab API server: Key Value Notes API_SERVER_ENABLED true OpenAI-compat API on 8642 API_SERVER_HOST 0.0.0.0 LAN-accessible API_SERVER_KEY (generate) See below API_SERVER_CORS_ORIGINS * Allow browser apps Generate API key once: openssl rand -hex 32 Paste that into the API_SERVER_KEY field. Local model tuning: Key Value Notes HERMES_STREAM_READ_TIMEOUT 1800 30 min timeout for slow local inference TZ America/New_York Your timezone Click Apply The container will pull the image (~2 GB) if not already cached, then start. Phase 5 — First Boot Verification Watch the startup logs docker logs -f hermes-agent What you should see (in order): Fixing ownership of /opt/data to hermes (10000) Syncing bundled skills into ~/.hermes/skills/ ... Done: 87 new, 0 updated, 0 unchanged. 87 total bundled. (first run) or 0 new, 0 updated, 87 unchanged (subsequent) Starting hermes dashboard on 0.0.0.0:9119 (background) [dashboard] Hermes Web UI → http://0.0.0.0:9119 The gateway banner No errors — specifically: ❌ No esbuild permission denied ❌ No database is locked ❌ No YAML parse errors ❌ No SIGTERM restart loops ❌ No "No user allowlists configured" (if you set up Telegram) Ctrl+C to stop tailing once it settles. Verify ports are mapped docker port hermes-agent Expected: 8642/tcp -> 0.0.0.0:8642 9119/tcp -> 0.0.0.0:9119 Open the dashboard Browser → http://<your-unraid-ip>:9119 You should see: Status page showing gateway running and version Chat tab in the sidebar (the in-browser TUI is working) Config tab with your model and context settings populated Logs tab populating Phase 6 — Smoke Test the Full Stack Test via the GUI Chat tab Send: "hello, what model are you running?" Should reply with model name and respond cleanly. If it errors with "context window below minimum 64,000," your config.yaml has the wrong context_length — go to Config tab and verify it's 65536. Test tool use via Telegram (if configured) Send to your bot: "Run ls -la in the workspace and tell me what's there" Should: Acknowledge the request Run the tool Reply with file listing While it runs, in terminal: docker exec ollama ollama ps docker exec ollama nvidia-smi Expected: ollama ps shows your model loaded with CONTEXT 65536, 100% GPU nvidia-smi shows ~22-24 GB VRAM in use, your model's process listed Set Telegram home channel In your Telegram chat with the bot, send: /sethome This lets Hermes deliver scheduled task results and cross-platform messages to that chat. Troubleshooting Quick Reference Symptom Likely Cause Fix ERR_CONNECTION_REFUSED on :9119 Port not mapped or dashboard crashed Verify docker port hermes-agent shows 9119; check logs for [dashboard] errors Container restart-loops with esbuild error Wrong UID — directory permissions Re-chown appdata to 10000:10000, remove HERMES_UID/HERMES_GID env vars "database is locked" warning Appdata on /mnt/user/ FUSE Move appdata to /mnt/cache/ or /mnt/ssd/ direct pool path YAML parse error line 3 column 6 Hidden characters or \e[A from arrow keys in wizard Delete config.yaml, re-run wizard, type carefully "context window 32,768 below minimum 64,000" context_length in config.yaml too low Dashboard → Config → General → set to 65536 Telegram bot doesn't respond Missing TELEGRAM_ALLOWED_USERS in .env Add TELEGRAM_ALLOWED_USERS=<your_id> to .env, restart container Model loaded but only on one GPU Working as designed (fits on one card) Add OLLAMA_SCHED_SPREAD=1 to Ollama if you want forced split Wizard "leave empty for open access" prompt Don't! Always set explicit allowlist on Telegram/Discord/Slack Optional Improvements Once everything works, these polish steps are worth doing: Add a fallback provider in config.yaml for when local inference is unavailable Install Chrome/Playwright inside the container for browser_navigate tool Configure cron jobs in the dashboard for scheduled agent tasks Bump container memory to 16 GB if you'll do heavy multi-turn agent work Save the Unraid template as a Community Apps XML so you can rebuild quickly Summary of Lessons Learned The four mistakes we made and what to remember: UID matters more than Unraid conventions. I had you set HERMES_UID=99 to match Unraid's "nobody" — but the image's pre-built /opt/hermes/ is owned by UID 10000. The mismatch killed the dashboard TUI build. Don't fight the image — use UID 10000 and chown appdata to match. /mnt/user/ is not safe for SQLite-using containers. Always use the direct pool path. This applies to every Docker container on Unraid with a database (Plex, *arr stack, Nextcloud, Hermes, etc.). The wizard atomic-commits. Ctrl+C loses everything. If you don't have a value for a prompt, enter a placeholder rather than aborting. Hermes' context check reads YOUR config, not the model's max. The 32K error wasn't a model limitation — it was the value we wrote in config.yaml. Always set context_length ≥ 65536 for any model that natively supports it. Follow this guide top to bottom and you'll have a working Hermes Agent on Unraid in 20 minutes instead of 4 hours. Save it somewhere — you may want to rebuild someday. I am not an expert, I know a decent amount but I used Opus 4.7 to add a custom docker and install the latest hermes because I could not find a docker in the app store that had the latest.. of course they will probably be one there in the next hour :) Hope this helps someone.
  2. Help please. I run two 3090's with ollama. Both were working fine yesterday. Today updated to 7.3, now when I load an llm, it only works in one of my gpus. It should span across both like it did before. If I load a second llm, it will load on the other card, but one will not load across like it was yesterday. If I load the one llm, itis crawling, going to system ram. No idea why. the ollama has all gpus tag, and again, it was fine yesterday. both show up in nvidia smi. Both show up and are checked in the nvida plug in.loki-diagnostics-20260518-0110.zip Any thoughts? ideas? is this a 7.3 issue? or? Thanks in advance.
  3. its not the driver, the driver is working fine. both cards show up in the dash, both show up in nvidia smi, anyone else have these issues, please?
  4. I have two 3090's use ollama, openclaw. both worked before the update, now both show in watch -n 1 nvidia-smi but the second one is no longer being used by ollama. How come? What can I do to fix this? Please help loki-diagnostics-20260518-0110.zip
  5. Hi, Can not find an ollama container thread on the forum. Ollama has been updated. my app under docker shows update available. I click update, it does not update. Same version. I can try various ways, force update, it goes through the motions, but does not update. I have to delete the old docker and reinstall, then its updated. Is this a known issue? How can we get it to just update to latest version? Help is appreciated!! Thanks
  6. I am trying to learn more about Ai. I have ollama and webui set up. I attempted to get openclaw, it worked just okay for a few hours then an update of openclaw made it die... about to reinstall. I see a lot of info online but Ai is changing so fast, and containers that are advertised on unraid a few months ago are gone with some new ones arriving. I install something and the info on that docker seems outdated, have to play around a lot to get it to work etc. Can you help a brother out? As of today, July 29, 2026, on unraid, with 2 nvidia 3090 cards, what actually works? Can we install claude code in a docker? codex? Hermes? What sort of works but is a pain? Any dockers you recommend? Any settings to be on the look out for? What is your stack and case use? Can we get a group or sticky just for Ai? One where it lists out all the working containers and suggested stacks? I am not entirely sure of anything here so forgive me if I state something improperly, trying to learn :) Thanks!
  7. I am changing my network around. Currently my unraid has a static ip address listed on my network config file. something like this USE_DHCP="no" IPADDR="192.168.1.100" NETMASK="255.255.255.0" GATEWAY="192.168.1.1" I want to change it to use DHCP and have my firewall router assign the IP. I get you change the use DHCP to yes, but do I leave Ipaddr blank? and do I edit or leave blank the netmask and gateway? If you are wondering, this install has been upgraded many times, there is nothing listed in the settings, no options to change there, its only on the USB drive. Thanks!
  8. I am trying to graduate from Wyze to a much better system. What works best together? I want to be able to access all cameras on an app on phone or computer, automate with home assistant, and have it all 24/7 record to my unraid server. Prefer to have it all on my computers, not on a companies. I am considering Reolink cameras, maybe some Eufy if it can all integrate, but what cameras work best? With that in mind... I understand reolink has its own software that works with home assistant. Can you install the reolink software right onto unraid in a docker? or do you have to install on another windows machine, or in a vpn? Same for Eufy. And how about Blue Iris and Frigate. I was thinking to use that, and use Home assistant. Which one? or neither? So, what am I missing? What is the best practice? and what cameras work best with what I am looking to do? Any up to date install guides? Thank you in advance!
  9. Thanks, I deleted all the db's, had to stop the container and restart, then was able to rebuild the db. Then I saved it as a backup, I never did a back up before. I also had to recreate the settings for news, sab etc. Also, not sure it this caused the issue, but I saved appdata to cache, previously it was on the array and I did not have a cache... everything else worked fine, but just in case I added a cache... if that helps anyone else who has this issue. Thanks again
  10. Thanks, but how do I get to system backup? Sonarr web gui does not load. Just says malformed
  11. Help! I have used Sonarr for a long time, always trouble free until now. " database disk image is malformed database disk image is malformed" "Version 4.0.15.2941" Unraid 7.1.2 had the issue, updated to 7.14 to see if it helped, still had issue. Uninstalled, reinstalled, still had issue. Uninstalled, deleted config folder, worked for that day, rescanned all my shows, still worked then next day trouble came back. Radarr works no problem Lidarr works. How do I fix? Thanks
  12. I think a lot of the people here have large media libraries. I know I do. So many files it is near impossible to manually check to see if they all work. Its frustrating to try to watch something you had on your server for years only to find out it is somehow not working, in the wrong language or not the show you thought it was. Is there a plugin already made, or can we make one that: Goes through each movie or tv show, sees if it will play fully. See if all episodes are there in the series. Check to see if it is the right movie, you might have it mislabeled, so get meta data, was the show you intended it to be 120 minutes, but the file you actually have is only 90 minutes? notify it does not add up. Notify or auto correct if a show is missing or corrupt? Anything like that available? I know VLC can detect and fix corrupt files, so I imagine it is not too hard to make a plug in like that...well not too hard for someone else to do, I certainly cant do it :)
  13. Sorry to butt in, but I was considering switching from XFS to BTRFS. Is the issue here due to the BTRFS? Aside from the power issue that could happen to anyone ( I have had 100's of shut downs in my old now dead server with XFS and I had no issues with drives ), what caused the issue here? Thanks in advance
  14. Thanks Jorge, For NTRFS and ZFS, you mentioned it has checksums that will let you know if there is a corruption issue. Can you let me know how it works? Do you have to run a check every once in a while to see if there is an issue? Is there a plug in for that? Really appreciate the advice. Thanks Neal

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.