From 196307bca5c9a6d0dbe53351c1826e9932e26f37 Mon Sep 17 00:00:00 2001 From: Zack Pollard Date: Sun, 5 Apr 2026 10:52:59 +0100 Subject: [PATCH] chore(server): use dev version check endpoint for non-production environments (#27508) --- server/src/repositories/config.repository.ts | 8 ++++++++ server/src/repositories/server-info.repository.ts | 3 ++- server/src/services/version.service.spec.ts | 12 +----------- server/src/services/version.service.ts | 7 +------ server/test/repositories/config.repository.mock.ts | 4 ++++ 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/server/src/repositories/config.repository.ts b/server/src/repositories/config.repository.ts index 1864733f87..fa4823362e 100644 --- a/server/src/repositories/config.repository.ts +++ b/server/src/repositories/config.repository.ts @@ -75,6 +75,10 @@ export interface EnvData { server: string; }; + versionCheck: { + url: string; + }; + network: { trustedProxies: string[]; }; @@ -320,6 +324,10 @@ const getEnv = (): EnvData => { licensePublicKey: isProd ? productionKeys : stagingKeys, + versionCheck: { + url: isProd ? 'https://version.immich.cloud/version' : 'https://version.dev.immich.cloud/version', + }, + network: { trustedProxies: dto.IMMICH_TRUSTED_PROXIES ?? ['linklocal', 'uniquelocal'], }, diff --git a/server/src/repositories/server-info.repository.ts b/server/src/repositories/server-info.repository.ts index b072ccf406..85d26d6cfa 100644 --- a/server/src/repositories/server-info.repository.ts +++ b/server/src/repositories/server-info.repository.ts @@ -66,7 +66,8 @@ export class ServerInfoRepository { async getLatestRelease(): Promise { try { - const response = await fetch('https://version.immich.cloud/version'); + const { versionCheck } = this.configRepository.getEnv(); + const response = await fetch(versionCheck.url); if (!response.ok) { throw new Error(`Version check request failed with status ${response.status}: ${await response.text()}`); diff --git a/server/src/services/version.service.spec.ts b/server/src/services/version.service.spec.ts index 75b6552d09..c43d64104c 100644 --- a/server/src/services/version.service.spec.ts +++ b/server/src/services/version.service.spec.ts @@ -2,9 +2,8 @@ import { DateTime } from 'luxon'; import { SemVer } from 'semver'; import { defaults } from 'src/config'; import { serverVersion } from 'src/constants'; -import { ImmichEnvironment, JobName, JobStatus, SystemMetadataKey } from 'src/enum'; +import { JobName, JobStatus, SystemMetadataKey } from 'src/enum'; import { VersionService } from 'src/services/version.service'; -import { mockEnvData } from 'test/repositories/config.repository.mock'; import { factory } from 'test/small.factory'; import { newTestService, ServiceMocks } from 'test/utils'; @@ -73,15 +72,6 @@ describe(VersionService.name, () => { }); describe('handVersionCheck', () => { - beforeEach(() => { - mocks.config.getEnv.mockReturnValue(mockEnvData({ environment: ImmichEnvironment.Production })); - }); - - it('should not run in dev mode', async () => { - mocks.config.getEnv.mockReturnValue(mockEnvData({ environment: ImmichEnvironment.Development })); - await expect(sut.handleVersionCheck()).resolves.toEqual(JobStatus.Skipped); - }); - it('should not run if the last check was < 60 minutes ago', async () => { mocks.systemMetadata.get.mockResolvedValue({ checkedAt: DateTime.utc().minus({ minutes: 5 }).toISO(), diff --git a/server/src/services/version.service.ts b/server/src/services/version.service.ts index 8f0ceb1d87..5e2f268796 100644 --- a/server/src/services/version.service.ts +++ b/server/src/services/version.service.ts @@ -4,7 +4,7 @@ import semver, { SemVer } from 'semver'; import { serverVersion } from 'src/constants'; import { OnEvent, OnJob } from 'src/decorators'; import { ReleaseNotification, ServerVersionResponseDto } from 'src/dtos/server.dto'; -import { DatabaseLock, ImmichEnvironment, JobName, JobStatus, QueueName, SystemMetadataKey } from 'src/enum'; +import { DatabaseLock, JobName, JobStatus, QueueName, SystemMetadataKey } from 'src/enum'; import { ArgOf } from 'src/repositories/event.repository'; import { BaseService } from 'src/services/base.service'; import { VersionCheckMetadata } from 'src/types'; @@ -71,11 +71,6 @@ export class VersionService extends BaseService { try { this.logger.debug('Running version check'); - const { environment } = this.configRepository.getEnv(); - if (environment === ImmichEnvironment.Development) { - return JobStatus.Skipped; - } - const { newVersionCheck } = await this.getConfig({ withCache: true }); if (!newVersionCheck.enabled) { return JobStatus.Skipped; diff --git a/server/test/repositories/config.repository.mock.ts b/server/test/repositories/config.repository.mock.ts index b5ab6e2054..797c08c4db 100644 --- a/server/test/repositories/config.repository.mock.ts +++ b/server/test/repositories/config.repository.mock.ts @@ -44,6 +44,10 @@ const envData: EnvData = { server: 'server-public-key', }, + versionCheck: { + url: 'https://version.immich.cloud/version', + }, + network: { trustedProxies: [], },