diff --git a/server/src/repositories/server-info.repository.ts b/server/src/repositories/server-info.repository.ts
index cc7e1770fc..4500094899 100644
--- a/server/src/repositories/server-info.repository.ts
+++ b/server/src/repositories/server-info.repository.ts
@@ -75,27 +75,49 @@ export class ServerInfoRepository {
 
   buildVersions?: ServerBuildVersions;
 
+  private async retrieveVersionFallback(
+    command: string,
+    commandTransform?: (output: string) => string,
+    version?: string,
+  ): Promise<string> {
+    if (!version) {
+      const output = await maybeFirstLine(command);
+      version = commandTransform ? commandTransform(output) : output;
+    }
+    return version;
+  }
+
   async getBuildVersions(): Promise<ServerBuildVersions> {
     if (!this.buildVersions) {
       const { nodeVersion, resourcePaths } = this.configRepository.getEnv();
 
-      const [nodejsOutput, ffmpegOutput, magickOutput] = await Promise.all([
-        maybeFirstLine('node --version'),
-        maybeFirstLine('ffmpeg -version'),
-        maybeFirstLine('convert --version'),
-      ]);
-
-      const lockfile = await readFile(resourcePaths.lockFile)
+      const lockfile: BuildLockfile | undefined = await readFile(resourcePaths.lockFile)
         .then((buffer) => JSON.parse(buffer.toString()))
         .catch(() => this.logger.warn(`Failed to read ${resourcePaths.lockFile}`));
 
+      const [nodejsVersion, ffmpegVersion, magickVersion, exiftoolVersion] = await Promise.all([
+        this.retrieveVersionFallback('node --version', undefined, nodeVersion),
+        this.retrieveVersionFallback(
+          'ffmpeg -version',
+          (output) => output.replaceAll('ffmpeg version ', ''),
+          getLockfileVersion('ffmpeg', lockfile),
+        ),
+        this.retrieveVersionFallback(
+          'magick --version',
+          (output) => output.replaceAll('Version: ImageMagick ', ''),
+          getLockfileVersion('imagemagick', lockfile),
+        ),
+        exiftool.version(),
+      ]);
+
+      const libvipsVersion = getLockfileVersion('libvips', lockfile) || sharp.versions.vips;
+
       this.buildVersions = {
-        nodejs: nodejsOutput || nodeVersion || '',
-        exiftool: await exiftool.version(),
-        ffmpeg: getLockfileVersion('ffmpeg', lockfile) || ffmpegOutput.replaceAll('ffmpeg version', '') || '',
-        libvips: getLockfileVersion('libvips', lockfile) || sharp.versions.vips,
-        imagemagick:
-          getLockfileVersion('imagemagick', lockfile) || magickOutput.replaceAll('Version: ImageMagick ', '') || '',
+        nodejs: nodejsVersion,
+        exiftool: exiftoolVersion,
+        ffmpeg: ffmpegVersion,
+        libvips: libvipsVersion,
+        imagemagick: magickVersion,
       };
     }