diff --git a/dashcaddy-api/routes/apps/deploy.js b/dashcaddy-api/routes/apps/deploy.js index c7329ef..a6d47c8 100644 --- a/dashcaddy-api/routes/apps/deploy.js +++ b/dashcaddy-api/routes/apps/deploy.js @@ -420,10 +420,11 @@ module.exports = function({ docker, caddy, credentialManager, servicesStateManag res.json(response); } catch (error) { - await logError('app-deploy', error, { appId, config }); - log.error('deploy', 'Deployment failed', { appId, error: error.message }); + try { await logError('app-deploy', error, { appId, config }); } catch (_) { /* logError failure should not mask original error */ } + const msg = error?.message || String(error || 'Unknown error'); + log.error('deploy', 'Deployment failed', { appId, error: msg }); const template = ctx.APP_TEMPLATES[appId]; - ctx.notification.send('deploymentFailed', 'Deployment Failed', `Failed to deploy **${template?.name || appId}**.\nError: ${error.message}`, 'error'); + try { ctx.notification.send('deploymentFailed', 'Deployment Failed', `Failed to deploy **${template?.name || appId}**.\nError: ${msg}`, 'error'); } catch (_) {} errorResponse(res, 500, ctx.safeErrorMessage(error)); } }, 'apps-deploy')); diff --git a/dashcaddy-api/src/utils/logging.js b/dashcaddy-api/src/utils/logging.js index 7b1a880..089e671 100644 --- a/dashcaddy-api/src/utils/logging.js +++ b/dashcaddy-api/src/utils/logging.js @@ -94,6 +94,7 @@ async function logError(ERROR_LOG_FILE, MAX_ERROR_LOG_SIZE, context, error, addi * Return a safe error message without leaking internals */ function safeErrorMessage(error) { + if (!error) return 'An internal error occurred'; const msg = error.message || String(error); // Detect port conflict errors