feat: add Uptime Kuma, Audiobookshelf, Paperless-ngx, and Navidrome integrations (#5910)

This commit is contained in:
Thomas authored and GitHub committed 2026-06-10 18:27:24 +02:00
1 parent a4db9cf0dc
commit d77c6f8d4e
46 files changed
+2994 -16

No files matched your search

@@ -27,6 +27,10 @@ const integrationAliases: Partial<Record<IntegrationKind, readonly string[]>> =
overseerr: ["overseerr"],
dashDot: ["dashdot", "dash-dot", "dash."],
speedtestTracker: ["speedtest-tracker"],
uptimeKuma: ["uptime-kuma"],
audiobookshelf: ["audiobookshelf"],
navidrome: ["navidrome"],
paperlessNgx: ["paperless-ngx", "paperless"],
searchCh: ["search-ch"],
gitHubContainerRegistry: ["ghcr"],
linuxServerIO: ["linuxserver"],
+38
View File
@@ -17,6 +17,7 @@ export const integrationSecretKindObject = {
privateKey: { isPublic: false, multiline: true },
githubAppId: { isPublic: true, multiline: false },
githubInstallationId: { isPublic: true, multiline: false },
slug: { isPublic: true, multiline: false },
} satisfies Record<string, { isPublic: boolean; multiline: boolean }>;
export const integrationSecretKinds = objectKeys(integrationSecretKindObject);
@@ -401,6 +402,14 @@ export const integrationDefs = {
documentationUrl: createDocumentationLink("/docs/integrations/immich"),
defaultPort: 2283,
},
paperlessNgx: {
name: "Paperless-ngx",
secretKinds: [["apiKey"]],
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/paperless-ngx.svg",
category: ["documents"],
documentationUrl: null,
defaultPort: 8000,
},
tracearr: {
name: "Tracearr",
secretKinds: [["apiKey"]],
@@ -417,6 +426,31 @@ export const integrationDefs = {
documentationUrl: createDocumentationLink("/docs/integrations/speedtest-tracker"),
defaultPort: 80,
},
uptimeKuma: {
name: "Uptime Kuma",
secretKinds: [[], ["slug"], ["slug", "apiKey"], ["apiKey"]],
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/uptime-kuma.svg",
category: ["uptimeMonitoring"],
documentationUrl: null,
defaultPort: 3001,
},
audiobookshelf: {
name: "Audiobookshelf",
secretKinds: [["apiKey"]],
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/audiobookshelf.svg",
category: ["mediaLibrary"],
documentationUrl: null,
defaultPort: 13378,
apiKeySettingsPath: "/account",
},
navidrome: {
name: "Navidrome",
secretKinds: [["username", "password"]],
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/navidrome.svg",
category: ["mediaLibrary"],
documentationUrl: null,
defaultPort: 4533,
},
umami: {
name: "Umami",
secretKinds: [["username", "password"], ["apiKey"]],
@@ -460,6 +494,7 @@ export const integrationDefs = {
"notifications",
"smartHomeServer",
"ups",
"uptimeMonitoring",
],
documentationUrl: null,
},
@@ -548,6 +583,9 @@ export const integrationCategories = [
"speedtest",
"analytics",
"ups",
"documents",
"mediaLibrary",
"uptimeMonitoring",
] as const;
export type IntegrationCategory = (typeof integrationCategories)[number];
@@ -33,8 +33,11 @@ export const widgetIntegrationSupport: Partial<Record<WidgetKind, readonly Integ
timetable: ["searchCh"],
"immich-serverStats": ["immich"],
"immich-albumCarousel": ["immich"],
paperlessNgx: ["paperlessNgx"],
tracearr: ["tracearr"],
speedtestTracker: ["speedtestTracker"],
uptimeKuma: ["uptimeKuma"],
audioStats: ["navidrome", "audiobookshelf"],
anchorNote: ["anchor"],
};
+9
View File
@@ -35,8 +35,11 @@ export const widgetKinds = [
"timetable",
"immich-serverStats",
"immich-albumCarousel",
"paperlessNgx",
"tracearr",
"speedtestTracker",
"uptimeKuma",
"audioStats",
"umami",
"ups",
"beszelSystemTable",
@@ -45,3 +48,9 @@ export const widgetKinds = [
"beszelSystemStats",
] as const;
export type WidgetKind = (typeof widgetKinds)[number];
export const widgetDefaultSizes: Partial<Record<WidgetKind, { width: number; height: number }>> = {
uptimeKuma: { width: 2, height: 3 },
audioStats: { width: 2, height: 2 },
paperlessNgx: { width: 2, height: 2 },
};