diff --git a/src/sftp.js b/src/sftp.js index 1c06cac0f..6ec9c2208 100644 --- a/src/sftp.js +++ b/src/sftp.js @@ -31,10 +31,8 @@ async function rebuild(serviceConfig, options) { const memory = system.getMemoryAllocation(memoryLimit); const cloudronToken = hat(8 * 128); - const stat = safe.fs.lstatSync(paths.APPS_DATA_DIR); - if (!stat) throw new BoxError(BoxError.FS_ERROR, safe.error); - - const resolvedAppDataDir = stat.isSymbolicLink() ? safe.fs.readlinkSync(paths.APPS_DATA_DIR) : paths.APPS_DATA_DIR; + const resolvedAppDataDir = safe.fs.realpathSync(paths.APPS_DATA_DIR); + if (!resolvedAppDataDir) throw new BoxError(BoxError.FS_ERROR, `Could not resolve apps data dir: ${safe.error.message}`); const dataDirs = [{ hostDir: resolvedAppDataDir, mountDir: '/mnt/appsdata' }]; @@ -68,10 +66,9 @@ async function rebuild(serviceConfig, options) { } // mail data dir - const stat2 = safe.fs.lstatSync(paths.BOX_DATA_DIR); - if (!stat2) throw new BoxError(BoxError.FS_ERROR, `Could not stat mail data dir: ${safe.error.message}`); - const resolvedBoxDataDir = stat2.isSymbolicLink() ? safe.fs.readlinkSync(paths.BOX_DATA_DIR) : paths.BOX_DATA_DIR; - dataDirs.push({ hostDir: path.join(resolvedBoxDataDir, 'mail'), mountDir: '/mnt/maildata' }); + const resolvedMailDataDir = safe.fs.realpathSync(paths.MAIL_DATA_DIR); + if (!resolvedMailDataDir) throw new BoxError(BoxError.FS_ERROR, `Could not resolve mail data dir: ${safe.error.message}`); + dataDirs.push({ hostDir: resolvedMailDataDir, mountDir: '/mnt/maildata' }); const mounts = dataDirs.map(v => `-v "${v.hostDir}:${v.mountDir}"`).join(' '); const cmd = `docker run --restart=always -d --name="sftp" \