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
- Deploy OpenAB from the Zeabur OpenAB Claude or Codex template.
- Inspect the config path documented by the template:
ls -la /home/node/.config/openab /home/node/.config/openab/config.toml
- Try to edit or update
/home/node/.config/openab/config.toml as the service user.
- 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:
- Follow the official OpenAB image convention and place OpenAB config at
/etc/openab/config.toml, or
- 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
- 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.
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"]/etc/openabread-only.However, the public Zeabur template instructions describe OpenAB config at
/home/node/.config/openab/config.tomland a runtime wrapper at/opt/start-openab.shthat regenerates config from env vars on restart. In an affected deployment,/home/node/.config/openab/config.tomlis owned byroot:rootwith mode0644, while the service runs as the non-rootnodeuser, 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
/home/node/.config/openab/config.tomlas the service user./opt/start-openab.shmay regenerate/overwrite the config from environment variables.Observed affected state:
Expected Behavior
The Zeabur templates should either:
/etc/openab/config.toml, or/home/node/.config/openab/config.tomlwith ownership/permissions that allow the intended non-root runtime user to read and, if documented as editable, update it, orFor 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
nodein the official Claude/Codex images/etc/openab/config.toml/home/node/.config/openab/config.tomlScreenshots / Logs
Relevant local repo references:
Affected file state observed in a running deployment:
Suggested fix direction:
/home/node, or chown it before switching tonode./etc/openab/config.tomlconvention where possible.