diff --git a/server/utils/files/logo.js b/server/utils/files/logo.js
index 434f8d72cbe22ded49f6b69dc93f9ca29deb0857..14e8032f90bf2b51053a0d5b1baaf5708a37c977 100644
--- a/server/utils/files/logo.js
+++ b/server/utils/files/logo.js
@@ -15,7 +15,9 @@ function getDefaultFilename() {
 
 async function determineLogoFilepath(defaultFilename = LOGO_FILENAME) {
   const currentLogoFilename = await SystemSettings.currentLogoFilename();
-  const basePath = path.join(__dirname, "../../storage/assets");
+  const basePath = process.env.STORAGE_DIR
+    ? path.join(process.env.STORAGE_DIR, "assets")
+    : path.join(__dirname, "../../storage/assets");
   const defaultFilepath = path.join(basePath, defaultFilename);
 
   if (currentLogoFilename && validFilename(currentLogoFilename)) {
@@ -27,6 +29,15 @@ async function determineLogoFilepath(defaultFilename = LOGO_FILENAME) {
 }
 
 function fetchLogo(logoPath) {
+  if (!fs.existsSync(logoPath)) {
+    return {
+      found: false,
+      buffer: null,
+      size: 0,
+      mime: "none/none",
+    };
+  }
+
   const mime = getType(logoPath);
   const buffer = fs.readFileSync(logoPath);
   return {
@@ -39,14 +50,12 @@ function fetchLogo(logoPath) {
 async function renameLogoFile(originalFilename = null) {
   const extname = path.extname(originalFilename) || ".png";
   const newFilename = `${v4()}${extname}`;
-  const originalFilepath = path.join(
-    __dirname,
-    `../../storage/assets/${originalFilename}`
-  );
-  const outputFilepath = path.join(
-    __dirname,
-    `../../storage/assets/${newFilename}`
-  );
+  const originalFilepath = process.env.STORAGE_DIR
+    ? path.join(process.env.STORAGE_DIR, "assets", originalFilename)
+    : path.join(__dirname, `../../storage/assets/${originalFilename}`);
+  const outputFilepath = process.env.STORAGE_DIR
+    ? path.join(process.env.STORAGE_DIR, "assets", newFilename)
+    : path.join(__dirname, `../../storage/assets/${newFilename}`);
 
   fs.renameSync(originalFilepath, outputFilepath);
   return newFilename;
@@ -54,7 +63,9 @@ async function renameLogoFile(originalFilename = null) {
 
 async function removeCustomLogo(logoFilename = LOGO_FILENAME) {
   if (!logoFilename || !validFilename(logoFilename)) return false;
-  const logoPath = path.join(__dirname, `../../storage/assets/${logoFilename}`);
+  const logoPath = process.env.STORAGE_DIR
+    ? path.join(process.env.STORAGE_DIR, `assets/${logoFilename}`)
+    : path.join(__dirname, `../../storage/assets/${logoFilename}`);
   if (fs.existsSync(logoPath)) fs.unlinkSync(logoPath);
   return true;
 }