Skip to content

Hostinger VPS: migration Hermes Agent → Hermes WebUI impossible (tini + UID mismatch + sessions) #34192

@ChibiPaul

Description

@ChibiPaul

Hostinger VPS: Hermes Agent → Hermes WebUI migration impossible (tini + UID mismatch + sessions)

Context

Migrating from a standalone nousresearch/hermes-agent:latest container to the Hostinger "Hermes WebUI" catalog, which deploys two containers:

  • hermes-webui (published port, UID 1024)
  • hermes-agent (backend, UID 10000)
  • Shared volume for home directory

Problem #1: Immediate agent crash (tini: No such file or directory)

The agent container created by the Hostinger catalog crashes on startup with:

/usr/bin/tini: No such file or directory

Root cause: The nousresearch/hermes-agent:latest image migrated from tini to s6-overlay as its init system. tini no longer exists in the image — the default entrypoint is now /init. The Hostinger catalog appears to use a wrapper that still references the old tini-based entrypoint.

Related: #32559, #25218

Problem #2: UID mismatch (1024 vs 10000) on shared volume

  • WebUI creates files as UID 1024
  • Agent runs as UID 10000
  • Result: files created by one are unreadable by the other — auth.lock errors, sessions invisible

Root cause: s6-overlay strips environment variables by default. Even when passing HERMES_UID=1024, the variable never reaches cont-init scripts (PR #33148 added S6_KEEP_ENV=1 to fix this). PR #32412 also fixed propagation via #!/command/with-contenv sh shebangs.

Related: #32559, #24537, #33148

Problem #3: Incompatible session formats

Sessions from the old standalone agent (sessions/sessions.json + individual files) are not recognized by the WebUI (which uses webui/.sessions.json + a different format). No batch migration possible — import sessions one by one through the UI.

Related: #23717 (RFC pluggable SessionDB)

Problem #4: Telegram polling conflict

If the old gateway is still running, the new container cannot take over Telegram polling.

Workarounds that should work (untested on Hostinger)

  1. Pin to v2026.5.16 (last tini-based image before the s6-overlay migration) instead of latest
  2. Wait for the Hostinger catalog to be updated to use /init (s6-overlay) as entrypoint, with S6_KEEP_ENV=1 and proper HERMES_UID handling
  3. Manual docker run to replace the crashed agent container (as documented in the hostinger-webui-migration skill)

Questions

  • Can someone at NousResearch coordinate with Hostinger to update the catalog template?
  • Is there a simple workaround for UID mismatch on s6-overlay with shared volumes?
  • Is a stable tini-based image tag being maintained for Hostinger deployments?

Deployed on Hostinger KVM VPS, Hermes 0.14.x, catalog "Hermes WebUI"

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — cosmetic, nice to havearea/dockerDocker image, Compose, packagingtype/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions