From f36cf06e2624b66bf15a02ceea87fe7d3a86860d Mon Sep 17 00:00:00 2001 From: Fizza-Mukhtar Date: Sun, 1 Mar 2026 01:43:15 -0800 Subject: [PATCH 1/2] fix: fallback to local targets when newt targets are unhealthy --- server/lib/traefik/getTraefikConfig.ts | 11 ++++++++++- server/private/lib/traefik/getTraefikConfig.ts | 10 ++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/server/lib/traefik/getTraefikConfig.ts b/server/lib/traefik/getTraefikConfig.ts index 06754ffa2..c55bad90d 100644 --- a/server/lib/traefik/getTraefikConfig.ts +++ b/server/lib/traefik/getTraefikConfig.ts @@ -490,7 +490,11 @@ export async function getTraefikConfig( if (target.health == "unhealthy") { return false; } - + + // Local sites don't report online status, always include them as fallback + if (target.site.type === "local") { + return true; + } // If any sites are online, exclude offline sites if (anySitesOnline && !target.site.online) { return false; @@ -614,6 +618,11 @@ export async function getTraefikConfig( return false; } + // Local sites don't report online status, always include them as fallback + if (target.site.type === "local") { + return true; + } + // If any sites are online, exclude offline sites if (anySitesOnline && !target.site.online) { return false; diff --git a/server/private/lib/traefik/getTraefikConfig.ts b/server/private/lib/traefik/getTraefikConfig.ts index f0343c5d4..6a4463719 100644 --- a/server/private/lib/traefik/getTraefikConfig.ts +++ b/server/private/lib/traefik/getTraefikConfig.ts @@ -679,6 +679,11 @@ export async function getTraefikConfig( return false; } + // Local sites don't report online status, always include them as fallback + if (target.site.type === "local") { + return true; + } + // If any sites are online, exclude offline sites if (anySitesOnline && !target.site.online) { return false; @@ -801,6 +806,11 @@ export async function getTraefikConfig( if (!target.enabled) { return false; } + + // Local sites don't report online status, always include them as fallback + if (target.site.type === "local") { + return true; + } // If any sites are online, exclude offline sites if (anySitesOnline && !target.site.online) { From e63a6e9b77d747e2cc1542124d6f9691bef0edb1 Mon Sep 17 00:00:00 2001 From: Fizza-Mukhtar Date: Sun, 1 Mar 2026 07:56:47 -0800 Subject: [PATCH 2/2] fix: treat local and wireguard sites as online for failover --- server/lib/traefik/getTraefikConfig.ts | 19 ++++++++---------- .../private/lib/traefik/getTraefikConfig.ts | 20 ++++++++----------- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/server/lib/traefik/getTraefikConfig.ts b/server/lib/traefik/getTraefikConfig.ts index c55bad90d..1ce594dc8 100644 --- a/server/lib/traefik/getTraefikConfig.ts +++ b/server/lib/traefik/getTraefikConfig.ts @@ -477,7 +477,10 @@ export async function getTraefikConfig( // TODO: HOW TO HANDLE ^^^^^^ BETTER const anySitesOnline = targets.some( - (target) => target.site.online + (target) => + target.site.online || + target.site.type === "local" || + target.site.type === "wireguard" ); return ( @@ -491,10 +494,6 @@ export async function getTraefikConfig( return false; } - // Local sites don't report online status, always include them as fallback - if (target.site.type === "local") { - return true; - } // If any sites are online, exclude offline sites if (anySitesOnline && !target.site.online) { return false; @@ -609,7 +608,10 @@ export async function getTraefikConfig( servers: (() => { // Check if any sites are online const anySitesOnline = targets.some( - (target) => target.site.online + (target) => + target.site.online || + target.site.type === "local" || + target.site.type === "wireguard" ); return targets @@ -617,11 +619,6 @@ export async function getTraefikConfig( if (!target.enabled) { return false; } - - // Local sites don't report online status, always include them as fallback - if (target.site.type === "local") { - return true; - } // If any sites are online, exclude offline sites if (anySitesOnline && !target.site.online) { diff --git a/server/private/lib/traefik/getTraefikConfig.ts b/server/private/lib/traefik/getTraefikConfig.ts index 6a4463719..3f6c5fdc2 100644 --- a/server/private/lib/traefik/getTraefikConfig.ts +++ b/server/private/lib/traefik/getTraefikConfig.ts @@ -665,7 +665,10 @@ export async function getTraefikConfig( // TODO: HOW TO HANDLE ^^^^^^ BETTER const anySitesOnline = targets.some( - (target) => target.site.online + (target) => + target.site.online || + target.site.type === "local" || + target.site.type === "wireguard" ); return ( @@ -679,11 +682,6 @@ export async function getTraefikConfig( return false; } - // Local sites don't report online status, always include them as fallback - if (target.site.type === "local") { - return true; - } - // If any sites are online, exclude offline sites if (anySitesOnline && !target.site.online) { return false; @@ -798,7 +796,10 @@ export async function getTraefikConfig( servers: (() => { // Check if any sites are online const anySitesOnline = targets.some( - (target) => target.site.online + (target) => + target.site.online || + target.site.type === "local" || + target.site.type === "wireguard" ); return targets @@ -806,11 +807,6 @@ export async function getTraefikConfig( if (!target.enabled) { return false; } - - // Local sites don't report online status, always include them as fallback - if (target.site.type === "local") { - return true; - } // If any sites are online, exclude offline sites if (anySitesOnline && !target.site.online) {