Skip to content

Zeabur templates generate OpenAB config under root-owned /home/node path #820

@Rapi-agent

Description

@Rapi-agent

Description

The OpenAB Zeabur templates appear to diverge from the official OpenAB container/Helm config path and can leave the generated OpenAB config file owned by root, which prevents the non-root agent user from editing it.

Official OpenAB images run OpenAB with /etc/openab/config.toml:

  • Dockerfile.claude: CMD ["openab", "run", "-c", "/etc/openab/config.toml"]
  • Dockerfile.codex: CMD ["openab", "run", "-c", "/etc/openab/config.toml"]
  • Helm mounts the generated ConfigMap at /etc/openab read-only.

However, the public Zeabur template instructions describe OpenAB config at /home/node/.config/openab/config.toml and a runtime wrapper at /opt/start-openab.sh that regenerates config from env vars on restart. In an affected deployment, /home/node/.config/openab/config.toml is owned by root:root with mode 0644, while the service runs as the non-root node user, so the file cannot be modified from inside the running service.

This looks like a Zeabur template/startup-wrapper issue rather than an upstream OpenAB binary or Dockerfile issue, but the templates are OpenAB-branded/public deployment entry points, so users reasonably report it against OpenAB.

Affected public template pages:

Steps to Reproduce

  1. Deploy OpenAB from the Zeabur OpenAB Claude or Codex template.
  2. Inspect the config path documented by the template:
ls -la /home/node/.config/openab /home/node/.config/openab/config.toml
  1. Try to edit or update /home/node/.config/openab/config.toml as the service user.
  2. Restart/redeploy the service and observe that /opt/start-openab.sh may regenerate/overwrite the config from environment variables.

Observed affected state:

-rw-r--r-- 1 root root ... /home/node/.config/openab/config.toml

Expected Behavior

The Zeabur templates should either:

  1. Follow the official OpenAB image convention and place OpenAB config at /etc/openab/config.toml, or
  2. Generate /home/node/.config/openab/config.toml with ownership/permissions that allow the intended non-root runtime user to read and, if documented as editable, update it, or
  3. Clearly document that the file is generated and must be changed through Zeabur environment variables/template settings rather than edited in-place.

For existing deployments, the template should ideally include a migration-safe startup step or note, because Zeabur persistent volumes can preserve the old root-owned file across redeploys.

Environment

  • Platform: Zeabur templates for OpenAB Claude/Codex
  • Runtime user: node in the official Claude/Codex images
  • Official OpenAB config path in repo images: /etc/openab/config.toml
  • Zeabur template documented/generated config path: /home/node/.config/openab/config.toml

Screenshots / Logs

Relevant local repo references:

Dockerfile.claude: CMD ["openab", "run", "-c", "/etc/openab/config.toml"]
Dockerfile.codex: CMD ["openab", "run", "-c", "/etc/openab/config.toml"]
charts/openab/templates/deployment.yaml: mountPath: /etc/openab, readOnly: true

Affected file state observed in a running deployment:

/home/node/.config/openab/config.toml -> root:root 0644

Suggested fix direction:

  • Update the OpenAB Zeabur template to avoid root-owned generated config under /home/node, or chown it before switching to node.
  • Prefer aligning the template with the official /etc/openab/config.toml convention where possible.
  • Add a migration note for existing Zeabur services with persisted root-owned config files.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions