Every Custom App I deploy fails on first install with:
[EFAULT] Failed 'up' action for '<app>' app. Please check /var/log/app_lifecycle.log for more details
/var/log/app_lifecycle.log stays empty — nothing is ever written there.
Reproducible pattern:
-
Deploy a new Custom App whose image isn’t cached locally yet → fails with EFAULT.
-
Manually docker compose pull + up the same yml in shell → works fine.
-
Retry the exact same app via the GUI afterwards → works instantly (image now cached).
So it only fails on a cold pull done through the GUI/middleware job, never once the image is already local. Confirmed this isn’t a stale-registration issue by testing with a completely new app name (testapp-debug1), same EFAULT, and middleware’s own job log shows it auto-cleans up the failed install afterward:
progress.description: "Failure occurred while installing 'testapp-debug1', cleaning up"
File "middlewared/plugins/apps/compose_utils.py", line 63, in compose_action
raise CallError(err_msg)
compose_action() raises this generic hardcoded error instead of surfacing the actual docker compose stdout/stderr, and that output never makes it into app_lifecycle.log either, so there’s no way to see what actually goes wrong during the pull (timeout? registry hiccup?).
Workaround: manually docker compose pull all images via shell before installing any Custom App through the GUI.
Would appreciate if a dev could check why app_lifecycle.log never receives output on failure, and whether there’s a timeout on the initial up action that’s too short for a cold pull.
Relevant job output (via midclt call core.get_jobs '[["method","=","app.create"],["state","=","FAILED"]]', filtered to the testapp-debug1 run)
{
“id”: 8417,
“method”: “app.create”,
“arguments”: [{“custom_app”: true, “app_name”: “testapp-debug1”}],
“progress”: {
“percent”: 80,
“description”: “Failure occurred while installing ‘testapp-debug1’, cleaning up”
},
“error”: “[EFAULT] Failed ‘up’ action for ‘testapp-debug1’ app. Please check /var/log/app_lifecycle.log for more details”,
“exception”: “Traceback (most recent call last):\n File "middlewared/plugins/apps/custom_app.py", line 74, in create\n compose_action(app_name, version, ‘up’, force_recreate=True, remove_orphans=True)\n File "middlewared/plugins/apps/compose_utils.py", line 63, in compose_action\n raise CallError(err_msg)\nmiddlewared.service_exception.CallError: [EFAULT] Failed ‘up’ action for ‘testapp-debug1’ app. Please check /var/log/app_lifecycle.log for more details\n”,
“state”: “FAILED”
}