Compare commits

..
296 changed files with 2082 additions and 4953 deletions

No files matched your search

-62
View File
@@ -163,65 +163,3 @@ jobs:
run: cp .env.example .env
- name: Build
run: pnpm turbo build --affected
memory-regression:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v6
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Build Docker image
uses: docker/build-push-action@v7
with:
platforms: linux/amd64
context: .
push: false
load: true
tags: homarr-memory-test
network: host
cache-from: type=gha
cache-to: type=gha,mode=max
env:
SKIP_ENV_VALIDATION: true
- name: Start container and measure memory
run: |
docker run -d --name homarr-mem-test -p 17575:7575 homarr-memory-test
# Wait for container to be healthy (up to 60s)
healthy=false
for i in $(seq 1 30); do
if curl -sf http://localhost:17575/api/health 2>/dev/null; then
echo "Container healthy after $((i * 2))s"
healthy=true
break
fi
sleep 2
done
if [ "$healthy" != "true" ]; then
echo "ERROR: Container never became healthy"
docker logs homarr-mem-test --tail 50
exit 1
fi
# Warm up: hit the dashboard page a few times
for i in $(seq 1 5); do
curl -sf http://localhost:17575/ > /dev/null 2>&1 || true
sleep 2
done
# Measure RSS after warmup
MEM_KB=$(docker stats --no-stream --format '{{.MemUsage}}' homarr-mem-test | sed 's| /.*||')
echo "Raw memory: $MEM_KB"
# Convert to numeric MB (handles GiB and MiB suffixes)
MEM_NUM=$(echo "$MEM_KB" | awk '{
if ($0 ~ /GiB/) { gsub(/GiB/,""); print $1 * 1024 }
else if ($0 ~ /MiB/) { gsub(/MiB/,""); print $1 }
else if ($0 ~ /KiB/) { gsub(/KiB/,""); print $1 / 1024 }
else { print $1 / 1048576 }
}')
echo "Memory usage: ${MEM_NUM} MB"
MAX_MB=700
if awk "BEGIN {exit !($MEM_NUM > $MAX_MB)}"; then
echo "ERROR: Memory usage ${MEM_NUM} MB exceeds ${MAX_MB} MB threshold"
docker logs homarr-mem-test --tail 50
exit 1
fi
echo "Memory check passed: ${MEM_NUM} MB <= ${MAX_MB} MB"
@@ -66,7 +66,7 @@ jobs:
- uses: actions/setup-node@v6
if: env.SKIP_RELEASE == 'false'
with:
node-version: 24.18.0
node-version: 24.17.0
package-manager-cache: false
- run: npm i -g pnpm
if: env.SKIP_RELEASE == 'false'
+1 -1
View File
@@ -1,2 +1,2 @@
[tools]
node = "24.18.0"
node = "24.17.0"
+1 -1
View File
@@ -1 +1 @@
24.18.0
24.17.0
+1 -1
View File
@@ -1,7 +1,7 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"oxc.oxc-vscode",
"esbenp.prettier-vscode",
"yoavbls.pretty-ts-errors",
"million.million-lint",
"lokalise.i18n-ally"
-7
View File
@@ -1,10 +1,3 @@
## [1.68.1](https://github.com/homarr-labs/homarr/compare/v1.68.0...v1.68.1) (2026-06-30)
### Bug Fixes
* make source maps opt-in to restore v1.67.0 memory baseline ([57ef0af](https://github.com/homarr-labs/homarr/commit/57ef0af4a252ea39727caeba7e13587dabc6254e)), closes [#6123](https://github.com/homarr-labs/homarr/issues/6123)
* revert production source maps to restore v1.67.0 memory baseline ([60a69e3](https://github.com/homarr-labs/homarr/commit/60a69e31efc7168b8f4309daf75954d7730d883b)), closes [#6123](https://github.com/homarr-labs/homarr/issues/6123)
## [1.68.0](https://github.com/homarr-labs/homarr/compare/v1.67.0...v1.68.0) (2026-06-26)
### Features
+4 -185
View File
@@ -1,193 +1,12 @@
# ── CODEOWNERS ───────────────────────────────────────
* @homarr-labs/maintainers
# Specific features / integrations
# These owners come from the PR that introduced each integration implementation.
# Specific rules override the global fallback because CODEOWNERS uses the last
# matching pattern; do not include @homarr-labs/maintainers here unless they
# should also be requested for that integration.
# AdGuard Home - introduced in https://github.com/homarr-labs/homarr/pull/929 by @hillaliy
apps/docs/docs/integrations/adguard-home @hillaliy
packages/integrations/src/adguard-home @hillaliy
# Anchor - introduced in https://github.com/homarr-labs/homarr/pull/5040 by @ohmzi
apps/docs/docs/integrations/anchor @ohmzi
packages/integrations/src/anchor @ohmzi
# ArchiveTeam Warrior - introduced in https://github.com/homarr-labs/homarr/pull/5784 by @darbyjack
apps/docs/docs/integrations/archive-team-warrior @darbyjack
packages/integrations/src/archive-team-warrior @darbyjack
# Audiobookshelf - introduced in https://github.com/homarr-labs/homarr/pull/5910 by @ajnart
apps/docs/docs/integrations/audiobookshelf @ajnart
packages/integrations/src/audiobookshelf @ajnart
# Beszel - introduced in https://github.com/homarr-labs/homarr/pull/5900 by @ajnart
apps/docs/docs/integrations/beszel @ajnart
packages/integrations/src/beszel @ajnart
# Codeberg - introduced in https://github.com/homarr-labs/homarr/pull/3253 by @Aandree5
apps/docs/docs/integrations/codeberg @Aandree5
packages/integrations/src/codeberg @Aandree5
# Coolify - introduced in https://github.com/homarr-labs/homarr/pull/4789 by @Rhiz3K
apps/docs/docs/integrations/coolify @Rhiz3K
packages/integrations/src/coolify @Rhiz3K
# Dash. - introduced in https://github.com/homarr-labs/homarr/pull/1541 by @manuel-rw
apps/docs/docs/integrations/dash-dot @manuel-rw
packages/integrations/src/dashdot @manuel-rw
# Docker Hub - introduced in https://github.com/homarr-labs/homarr/pull/3253 by @Aandree5
apps/docs/docs/integrations/docker-hub @Aandree5
packages/integrations/src/docker-hub @Aandree5
# Emby - introduced in https://github.com/homarr-labs/homarr/pull/2466 by @Meierschlumpf
apps/docs/docs/integrations/emby @Meierschlumpf
packages/integrations/src/emby @Meierschlumpf
# GitHub - introduced in https://github.com/homarr-labs/homarr/pull/3253 by @Aandree5
apps/docs/docs/integrations/github @Aandree5
packages/integrations/src/github @Aandree5
# GitHub Container Registry - introduced in https://github.com/homarr-labs/homarr/pull/3727 by @Aandree5
apps/docs/docs/integrations/github-containerregistry @Aandree5
packages/integrations/src/github-container-registry @Aandree5
# GitLab - introduced in https://github.com/homarr-labs/homarr/pull/3253 by @Aandree5
apps/docs/docs/integrations/gitlab @Aandree5
packages/integrations/src/gitlab @Aandree5
# Glances - introduced in https://github.com/homarr-labs/homarr/pull/5102 by @manuel-rw
apps/docs/docs/integrations/glances @manuel-rw
packages/integrations/src/glances @manuel-rw
# Gluetun - introduced in https://github.com/homarr-labs/homarr/pull/5812 by @Lok3sh-kumar
apps/docs/docs/integrations/gluetun @Lok3sh-kumar
# Specific features / integrations
# Glueten
apps/docs/docs/integrations/glueten @Lok3sh-kumar
packages/integrations/src/gluetun @Lok3sh-kumar
# Gotify - introduced in https://github.com/homarr-labs/homarr/pull/5847 by @Nerdy-Technician
apps/docs/docs/integrations/gotify @Nerdy-Technician
packages/integrations/src/gotify @Nerdy-Technician
# Home Assistant - introduced in https://github.com/homarr-labs/homarr/pull/578 by @manuel-rw
apps/docs/docs/integrations/home-assistant @manuel-rw
packages/integrations/src/homeassistant @manuel-rw
# ICal - introduced in https://github.com/homarr-labs/homarr/pull/3980 by @NicolasNewman
apps/docs/docs/integrations/ical @NicolasNewman
packages/integrations/src/ical @NicolasNewman
# Immich - introduced in https://github.com/homarr-labs/homarr/pull/5165 by @manuel-rw
apps/docs/docs/integrations/immich @manuel-rw
packages/integrations/src/immich @manuel-rw
# Jellyfin - introduced in https://github.com/homarr-labs/homarr/pull/672 by @manuel-rw
apps/docs/docs/integrations/jellyfin @manuel-rw
packages/integrations/src/jellyfin @manuel-rw
# Jellyseerr - introduced in https://github.com/homarr-labs/homarr/pull/774 by @manuel-rw
apps/docs/docs/integrations/jellyseerr @manuel-rw
packages/integrations/src/jellyseerr @manuel-rw
# LinuxServer.io - introduced in https://github.com/homarr-labs/homarr/pull/3607 by @Aandree5
apps/docs/docs/integrations/linux-server-io @Aandree5
packages/integrations/src/linuxserverio @Aandree5
# Navidrome - introduced in https://github.com/homarr-labs/homarr/pull/5910 by @ajnart
apps/docs/docs/integrations/navidrome @ajnart
packages/integrations/src/navidrome @ajnart
# Nextcloud - introduced in https://github.com/homarr-labs/homarr/pull/2501 by @manuel-rw
apps/docs/docs/integrations/nextcloud @manuel-rw
packages/integrations/src/nextcloud @manuel-rw
# npm - introduced in https://github.com/homarr-labs/homarr/pull/3253 by @Aandree5
apps/docs/docs/integrations/npm @Aandree5
packages/integrations/src/npm @Aandree5
# ntfy - introduced in https://github.com/homarr-labs/homarr/pull/2900 by @itzTheMeow
apps/docs/docs/integrations/ntfy @ajnart @manuel-rw
packages/integrations/src/ntfy @ajnart @manuel-rw
# OpenMediaVault - introduced in https://github.com/homarr-labs/homarr/pull/1142 by @hillaliy
apps/docs/docs/integrations/open-media-vault @hillaliy
packages/integrations/src/openmediavault @hillaliy
# OPNsense - introduced in https://github.com/homarr-labs/homarr/pull/3424 by @Oupsman
apps/docs/docs/integrations/opnsense @Oupsman
packages/integrations/src/opnsense @Oupsman
# Overseerr - introduced in https://github.com/homarr-labs/homarr/pull/774 by @manuel-rw
apps/docs/docs/integrations/overseerr @manuel-rw
packages/integrations/src/overseerr @manuel-rw
# Paperless-ngx - introduced in https://github.com/homarr-labs/homarr/pull/5910 by @ajnart
apps/docs/docs/integrations/paperless-ngx @ajnart
packages/integrations/src/paperless-ngx @ajnart
# PeaNUT - introduced in https://github.com/homarr-labs/homarr/pull/5862 by @afonsojramos
apps/docs/docs/integrations/peanut @afonsojramos
packages/integrations/src/peanut @afonsojramos
# Pi-hole - introduced in https://github.com/homarr-labs/homarr/pull/521 by @Meierschlumpf
apps/docs/docs/integrations/pi-hole @Meierschlumpf
packages/integrations/src/pi-hole @Meierschlumpf
# Plex - introduced in https://github.com/homarr-labs/homarr/pull/1342 by @hillaliy
apps/docs/docs/integrations/plex @hillaliy
packages/integrations/src/plex @hillaliy
# Prowlarr - introduced in https://github.com/homarr-labs/homarr/pull/965 by @hillaliy
apps/docs/docs/integrations/prowlarr @hillaliy
packages/integrations/src/prowlarr @hillaliy
# Proxmox - introduced in https://github.com/homarr-labs/homarr/pull/1969 by @Meierschlumpf
apps/docs/docs/integrations/proxmox @Meierschlumpf
packages/integrations/src/proxmox @Meierschlumpf
# Quay - introduced in https://github.com/homarr-labs/homarr/pull/3607 by @Aandree5
apps/docs/docs/integrations/quay @Aandree5
packages/integrations/src/quay @Aandree5
# search.ch - introduced in https://github.com/homarr-labs/homarr/pull/5180 by @Meierschlumpf
apps/docs/docs/integrations/search-ch @Meierschlumpf
packages/integrations/src/search-ch @Meierschlumpf
# Speedtest Tracker - introduced in https://github.com/homarr-labs/homarr/pull/5363 by @kylegrieder
apps/docs/docs/integrations/speedtest-tracker @kylegrieder
packages/integrations/src/speedtest-tracker @kylegrieder
# Technitium DNS - introduced in https://github.com/homarr-labs/homarr/pull/5832 by @lopsch
apps/docs/docs/integrations/technitium-dns @lopsch
packages/integrations/src/technitium @lopsch
# Tracearr - introduced in https://github.com/homarr-labs/homarr/pull/5060 by @StrandedTurtle
apps/docs/docs/integrations/tracearr @StrandedTurtle
packages/integrations/src/tracearr @StrandedTurtle
# TrueNAS - introduced in https://github.com/homarr-labs/homarr/pull/3745 by @manuel-rw
apps/docs/docs/integrations/truenas @manuel-rw @afonsojramos
packages/integrations/src/truenas @manuel-rw @afonsojramos
# Umami - introduced in https://github.com/homarr-labs/homarr/pull/5362 by @febrile42
apps/docs/docs/integrations/umami @febrile42
packages/integrations/src/umami @febrile42
# UniFi Controller - introduced in https://github.com/homarr-labs/homarr/pull/2236 by @pitschi
apps/docs/docs/integrations/unifi-controller @pitschi
packages/integrations/src/unifi-controller @pitschi
# Unraid - introduced in https://github.com/homarr-labs/homarr/pull/4439 by @manuel-rw
apps/docs/docs/integrations/unraid @manuel-rw
packages/integrations/src/unraid @manuel-rw
# Uptime Kuma - introduced in https://github.com/homarr-labs/homarr/pull/5910 by @ajnart
apps/docs/docs/integrations/uptime-kuma @ajnart
packages/integrations/src/uptime-kuma @ajnart
# Exempt Renovate-managed files (no owners)
# Exempt Renovate‑managed files (no owners)
package.json
**/package.json
package-lock.json
+15 -2
View File
@@ -1,4 +1,4 @@
FROM node:24.18.0-alpine AS base
FROM node:24.17.0-alpine AS base
FROM base AS builder
RUN apk add --no-cache libc6-compat
@@ -20,6 +20,17 @@ ARG DISABLE_REDIS_LOGS='true'
RUN corepack enable pnpm && pnpm build
# The standalone output tracing omits server chunk source maps (.next/server/**/*.map), which is
# where production Node stack frames point. Copy the .map files into the standalone tree (preserving
# directory structure) so the existing standalone COPY ships them, keeping traces readable.
# See https://github.com/homarr-labs/homarr/issues/5891
RUN cd apps/nextjs/.next/server && \
find . -name '*.map' | while IFS= read -r map; do \
dest="../standalone/apps/nextjs/.next/server/$map"; \
mkdir -p "$(dirname "$dest")"; \
cp "$map" "$dest"; \
done
FROM base AS runner
WORKDIR /app
@@ -42,7 +53,6 @@ RUN mkdir -p /var/cache/nginx && \
COPY --from=builder /app/apps/nextjs/next.config.ts .
COPY --from=builder /app/apps/nextjs/package.json .
COPY --from=builder /app/pnpm-workspace.yaml ./pnpm-workspace.yaml
COPY --from=builder /app/node_modules/better-sqlite3/build/Release/better_sqlite3.node /app/build/better_sqlite3.node
@@ -65,6 +75,9 @@ ENV DB_DRIVER='better-sqlite3'
ENV AUTH_PROVIDERS='credentials'
ENV REDIS_IS_EXTERNAL='false'
ENV NODE_ENV='production'
# Tell Node to symbolicate stack traces using the shipped .map files so production logs
# show original source locations instead of minified frames, see https://github.com/homarr-labs/homarr/issues/5891
ENV NODE_OPTIONS='--enable-source-maps'
ENTRYPOINT [ "/app/entrypoint.sh" ]
CMD ["sh", "run.sh"]
@@ -2,9 +2,9 @@
<img src="https://raw.githubusercontent.com/homarr-labs/charts/refs/heads/main/charts/homarr/icon.svg" align="right" width="92" alt="homarr logo">
![Version: 8.20.0](https://img.shields.io/badge/Version-8.20.0-informational?style=flat)
![Version: 8.19.0](https://img.shields.io/badge/Version-8.19.0-informational?style=flat)
![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat)
![AppVersion: v1.68.0](https://img.shields.io/badge/AppVersion-v1.68.0-informational?style=flat)
![AppVersion: v1.60.0](https://img.shields.io/badge/AppVersion-v1.60.0-informational?style=flat)
A Helm chart to deploy homarr for Kubernetes
@@ -383,7 +383,6 @@ All available values are listed on the [artifacthub](https://artifacthub.io/pack
| containerPorts | object | `{"http":{"port":7575,"protocol":"TCP"}}` | containerPorts defines the ports to open on the container. It is a map where each entry specifies: - `port` (int) (required): The port number to expose inside the container. - `protocol` (string) (required): The network protocol (TCP or UDP) used for the port. - `disabled` (bool) : Optional flag to disable this port (defaults to false). Can be overridden via Helm values. By default, this configuration exposes TCP port 7575 with the name `http`. |
| database.migrationEnabled | bool | `true` | Database migration configuration. DB_MIGRATIONS_DISABLED Set to `true` to disable database migrations. Migrations are enabled by default (`false`). |
| database.type | string | `"sqlite"` | Database type: sqlite, mysql or postgresql |
| env.AUTH_COOKIE_PREFIX | string | `"homarr"` | Prefix used for all authentication cookies. Change if you run another Auth.js/NextAuth app on the same hostname to avoid cookie name collisions. Only letters, numbers, hyphens and underscores. |
| env.AUTH_LDAP_BASE | string | `nil` | Base dn of your LDAP server |
| env.AUTH_LDAP_BIND_DN | string | `nil` | User used for finding users and groups |
| env.AUTH_LDAP_GROUP_CLASS | string | `"groupOfUniqueNames"` | Class used for querying groups |
@@ -396,6 +395,7 @@ All available values are listed on the [artifacthub](https://artifacthub.io/pack
| env.AUTH_LDAP_USERNAME_FILTER_EXTRA_ARG | string | `nil` | Extra arguments for user search filter (& based) |
| env.AUTH_LDAP_USER_MAIL_ATTRIBUTE | string | `"mail"` | Attribute used for mail field |
| env.AUTH_LOGOUT_REDIRECT_URL | string | `nil` | URL to redirect to after clicking logging out. |
| env.AUTH_COOKIE_PREFIX | string | `"homarr"` | Prefix used for all authentication cookies. Change if you run another Auth.js/NextAuth app on the same hostname to avoid cookie name collisions. Only letters, numbers, hyphens and underscores. |
| env.AUTH_OIDC_AUTO_LOGIN | string | `"false"` | Automatically redirect to OIDC login |
| env.AUTH_OIDC_CLIENT_NAME | string | `"OIDC"` | Display name of provider (in login screen) |
| env.AUTH_OIDC_GROUPS_ATTRIBUTE | string | `"groups"` | Attribute used for groups (roles) claim |
@@ -4,7 +4,6 @@ description: "AdGuard Home is a network-wide software for blocking ads and track
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -19,10 +18,6 @@ import { dnsHoleControlsWidget } from '@site/docs/widgets/dns-hole-controls';
categories={['DNS Hole']}
/>
### Data
<IntegrationData integration={adguardHomeIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const adguardHomeIntegration: IntegrationDefinition = {
"AdGuard Home is a network-wide software for blocking ads and trackers, providing a safer and faster internet experience.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/adguard-home.svg",
path: "../../integrations/adguard-home",
data: "Fetches DNS query statistics, blocking status, and filtering rules from AdGuard Home.",
};
@@ -4,7 +4,6 @@ description: "Anchor is a self-hosted note-taking application."
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { anchorNoteWidget } from '@site/docs/widgets/anchor-note';
The Anchor integration lets Homarr connect to your Anchor instance so you can display and edit selected notes directly from your dashboard.
### Data
<IntegrationData integration={anchorIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const anchorIntegration: IntegrationDefinition = {
"Anchor is a self-hosted note-taking application. The Anchor integration lets Homarr display and edit selected notes directly from the dashboard.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/anchor.svg",
path: "../../integrations/anchor",
data: "Fetches and updates notes from an Anchor note-taking server.",
};
@@ -1,40 +0,0 @@
---
title: "ArchiveTeam Warrior"
description: "ArchiveTeam Warrior is an easy-to-run virtual machine that helps preserve websites by using some of your bandwidth and disk space to download and upload content to ArchiveTeam’s archive."
hide_title: true
---
import { IntegrationData } from "@site/src/components/integrations/data";
import { IntegrationHeader } from "@site/src/components/integrations/header";
import { AddingIntegration } from "@site/src/components/integrations/adding";
import { IntegrationSecrets } from "@site/src/components/integrations/secrets";
import { archiveTeamWarriorIntegration } from ".";
<IntegrationHeader integration={archiveTeamWarriorIntegration} categories={["archiving"]} />
The ArchiveTeam Warrior integration lets Homarr connect to your ArchiveTeam Warrior instance so you can manage and monitor your archiving tasks directly from your dashboard.
### Data
<IntegrationData integration={archiveTeamWarriorIntegration} />
### Adding the integration
<AddingIntegration />
### Secrets
ArchiveTeam Warrior does not require authentication by default. If your instance is protected with basic authentication, you can provide a username and password.
<IntegrationSecrets
secrets={[
{
credentials: [],
steps: [],
},
{
credentials: ["username", "password"],
steps: [],
},
]}
/>
@@ -1,10 +0,0 @@
import { IntegrationDefinition } from "@site/src/types";
export const archiveTeamWarriorIntegration: IntegrationDefinition = {
name: "ArchiveTeam Warrior",
description:
"ArchiveTeam Warrior is an easy-to-run virtual machine that helps preserve websites by using some of your bandwidth and disk space to download and upload content to ArchiveTeam’s archive.",
iconUrl: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/archiveteam-warrior.png",
path: "../../integrations/archiveteam-warrior",
data: "Fetches Archive Team Warrior status including project, bandwidth stats, and item progress via WebSocket.",
};
@@ -4,7 +4,6 @@ description: "Lightweight multiprotocol & multi-source command-line download uti
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -17,10 +16,6 @@ import { downloadsWidget } from '@site/docs/widgets/downloads';
categories={['Download', 'Multiprotocol', 'Multi-source']}
/>
### Data
<IntegrationData integration={aria2Integration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const aria2Integration: IntegrationDefinition = {
"Lightweight multi-protocol & multi-source command-line download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink",
iconUrl: "https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus_icons@latest/src/system_downloads_3.svg",
path: "../../integrations/aria2",
data: "Manages and monitors Aria2 downloads including active, waiting, and stopped transfers.",
};
@@ -4,7 +4,6 @@ description: "Audiobookshelf is a self-hosted audiobook and podcast server that
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { audioStatsWidget } from '@site/docs/widgets/audio-stats';
Audiobookshelf provides library statistics including audiobook and podcast counts, listening time, and active sessions.
### Data
<IntegrationData integration={audiobookshelfIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -6,5 +6,4 @@ export const audiobookshelfIntegration: IntegrationDefinition = {
"Audiobookshelf is a self-hosted audiobook and podcast server that lets you manage and stream your audio library.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/audiobookshelf.svg",
path: "../../integrations/audiobookshelf",
data: "Fetches library statistics, listening time, and active sessions from Audiobookshelf.",
};
@@ -4,7 +4,6 @@ description: "Beszel is a lightweight server monitoring platform with Docker sta
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -28,10 +27,6 @@ Beszel monitors your servers in real time via lightweight agents, collecting CPU
<img src={beszelDashboard} alt="Beszel dashboard overview showing all four widgets" />
### Data
<IntegrationData integration={beszelIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -6,5 +6,4 @@ export const beszelIntegration: IntegrationDefinition = {
"Beszel is a lightweight server monitoring platform with Docker stats, historical data, and alert functions.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/beszel.svg",
path: "../../integrations/beszel",
data: "Fetches server monitoring data including system stats, containers, SMART devices, alerts, and real-time metrics.",
};
@@ -4,7 +4,6 @@ description: "Codeberg is a non-profit, community-driven platform for hosting an
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -18,10 +17,6 @@ import { releasesWidget } from '@site/docs/widgets/releases';
categories={['Version Control', 'Software']}
/>
### Data
<IntegrationData integration={codebergIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const codebergIntegration: IntegrationDefinition = {
"Codeberg is a non-profit, community-driven platform for hosting and collaborating on software projects.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/codeberg.svg",
path: "../../integrations/codeberg",
data: "Fetches latest releases and repository metadata from a Codeberg instance.",
};
@@ -4,7 +4,6 @@ description: 'Self-hosted PaaS and deployment platform'
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -17,10 +16,6 @@ import { coolifyWidget } from '../../widgets/coolify';
categories={['System monitoring', 'Deployment']}
/>
### Data
<IntegrationData integration={coolifyIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -5,5 +5,4 @@ export const coolifyIntegration: IntegrationDefinition = {
description: "Self-hosted PaaS and deployment platform",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/coolify.svg",
path: "../../integrations/coolify",
data: "Fetches Coolify instance information including applications, services, servers, projects, and health status.",
};
@@ -4,7 +4,6 @@ description: "Dash. is a system performance and resource monitoring tool"
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { systemResourcesWidget } from '@site/docs/widgets/system-resources';
categories={['System monitoring']}
/>
### Data
<IntegrationData integration={dashDotIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -5,5 +5,4 @@ export const dashDotIntegration: IntegrationDefinition = {
description: "Dash. is a system performance and resource monitoring tool",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/dashdot.png",
path: "../../integrations/dash-dot",
data: "Fetches system health monitoring data including CPU, RAM, storage, network, and GPU information.",
};
@@ -4,7 +4,6 @@ description: "Deluge is a lightweight, Free Software, cross-platform BitTorrent
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { downloadsWidget } from '@site/docs/widgets/downloads';
categories={['Torrent client']}
/>
### Data
<IntegrationData integration={delugeIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -5,5 +5,4 @@ export const delugeIntegration: IntegrationDefinition = {
description: "Deluge is a lightweight, Free Software, cross-platform BitTorrent client.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/deluge.svg",
path: "../../integrations/deluge",
data: "Manages and monitors Deluge torrents including progress, speeds, and pause/resume/delete actions.",
};
@@ -4,7 +4,6 @@ description: "Docker Hub is a cloud-based registry service for sharing and manag
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -18,10 +17,6 @@ import { releasesWidget } from '@site/docs/widgets/releases';
categories={['Container Management', 'Software']}
/>
### Data
<IntegrationData integration={dockerHubIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -5,5 +5,4 @@ export const dockerHubIntegration: IntegrationDefinition = {
description: "Docker Hub is a cloud-based registry service for sharing and managing Docker images.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/docker.svg",
path: "../../integrations/docker-hub",
data: "Fetches container image tags and repository metadata from Docker Hub.",
};
@@ -4,7 +4,6 @@ description: "Docker is a platform where you can run your applications in contai
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import {IntegrationSecrets} from '@site/src/components/integrations/secrets';
@@ -18,10 +17,6 @@ import { dockerContainersWidget } from '@site/docs/widgets/docker-containers';
categories={['Containers']}
/>
### Data
<IntegrationData integration={dockerIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const dockerIntegration: IntegrationDefinition = {
"Docker is a platform where you can run your applications in containers, allowing for easy deployment and management of applications.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/docker.svg",
path: "../../integrations/docker",
data: "Fetches Docker container information including status, CPU, and memory usage via the Docker socket.",
};
@@ -4,7 +4,6 @@ description: "Emby is a media server platform that allows you to organize, manag
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { mediaReleasesWidget } from '@site/docs/widgets/media-releases';
categories={['Media server']}
/>
### Data
<IntegrationData integration={embyIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -6,5 +6,4 @@ export const embyIntegration: IntegrationDefinition = {
"Emby is a media server platform that allows you to organize, manage, and stream your personal media collection.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/emby.svg",
path: "../../integrations/emby",
data: "Fetches active streams and recently added media from an Emby media server.",
};
@@ -4,7 +4,6 @@ description: "GitHub Container Registry is a platform for hosting and managing p
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -19,10 +18,6 @@ import { releasesWidget } from '@site/docs/widgets/releases';
/>
### Data
<IntegrationData integration={gitHubContainerRegistryIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -8,5 +8,4 @@ export const gitHubContainerRegistryIntegration: IntegrationDefinition = {
dark: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/github-light.svg",
},
path: "../../integrations/github-packages",
data: "Fetches container image tags and package metadata from GitHub Container Registry.",
};
@@ -4,7 +4,6 @@ description: "GitHub is a web-based platform for version control and collaborati
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -18,10 +17,6 @@ import { releasesWidget } from '@site/docs/widgets/releases';
categories={['Version Control', 'Software']}
/>
### Data
<IntegrationData integration={githubIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -8,5 +8,4 @@ export const githubIntegration: IntegrationDefinition = {
dark: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/github-light.svg",
},
path: "../../integrations/github",
data: "Fetches releases and repository metadata from GitHub using the Octokit API.",
};
@@ -4,7 +4,6 @@ description: "GitLab is a web-based DevOps lifecycle tool that provides a Git re
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -18,10 +17,6 @@ import { releasesWidget } from '@site/docs/widgets/releases';
categories={['Version Control', 'Software']}
/>
### Data
<IntegrationData integration={gitlabIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -5,5 +5,4 @@ export const gitlabIntegration: IntegrationDefinition = {
description: "GitLab is a web-based DevOps lifecycle tool that provides a Git repository manager.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/gitlab.svg",
path: "../../integrations/gitlab",
data: "Fetches releases and project metadata from a GitLab instance.",
};
@@ -4,7 +4,6 @@ description: "Glances is a cross-platform system monitoring tool."
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -19,10 +18,6 @@ import { healthMonitoringWidget } from '@site/docs/widgets/health-monitoring';
categories={['System Monitoring']}
/>
### Data
<IntegrationData integration={glancesIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -8,5 +8,4 @@ export const glancesIntegration: IntegrationDefinition = {
dark: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/glances-light.svg",
},
path: "../../integrations/glances",
data: "Fetches system health data including CPU, RAM, disk, network, GPU, and sensors from Glances.",
};
@@ -4,7 +4,6 @@ description: 'Connect Gluetun to Homarr as a VPN integration.'
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { vpnWidget } from '@site/docs/widgets/vpn';
[Gluetun](https://github.com/qdm12/gluetun) exposes a control server that Homarr can query to report the VPN tunnel
status, DNS status, public IP address, and active provider details in the VPN widget.
### Data
<IntegrationData integration={gluetunIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
@@ -5,5 +5,4 @@ export const gluetunIntegration: IntegrationDefinition = {
description: "VPN control server integration for Homarr's VPN widget.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/gluetun.svg",
path: "../../integrations/gluetun",
data: "Fetches VPN status, public IP, and DNS information from a Gluetun VPN container.",
};
@@ -6,7 +6,6 @@ hide_title: true
import { notificationsWidget } from '@site/docs/widgets/notifications';
import { AddingIntegration } from '@site/src/components/integrations/adding';
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationSecrets } from '@site/src/components/integrations/secrets';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
@@ -17,10 +16,6 @@ import { gotifyIntegration } from '.';
categories={['Notifications', 'Messaging']}
/>
### Data
<IntegrationData integration={gotifyIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -5,5 +5,4 @@ export const gotifyIntegration: IntegrationDefinition = {
description: "Gotify is a simple, self-hosted server for sending and receiving messages in real time.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/gotify.svg",
path: "../../integrations/gotify",
data: "Fetches recent push notification messages from a Gotify server.",
};
@@ -4,7 +4,6 @@ description: "Home Assistant is an open-source home automation platform that foc
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { smartHomeExecuteAutomationWidget } from '@site/docs/widgets/smart-home-
categories={['Smart Home', 'Automation']}
/>
### Data
<IntegrationData integration={homeAssistantIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const homeAssistantIntegration: IntegrationDefinition = {
"Home Assistant is an open-source home automation platform that focuses on privacy and local control, allowing you to automate and control your smart home devices.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/home-assistant.svg",
path: "../../integrations/home-assistant",
data: "Fetches entity states, triggers automations, toggles entities, and retrieves calendar events from Home Assistant.",
};
@@ -4,7 +4,6 @@ description: "iCal is a standard for calendar data exchange, allowing users to s
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -18,10 +17,6 @@ import { calendarWidget } from '@site/docs/widgets/calendar';
categories={['Calendar']}
/>
### Data
<IntegrationData integration={icalIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const icalIntegration: IntegrationDefinition = {
"iCal is a standard for calendar data exchange, allowing users to share and manage calendar events across different platforms.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/ical.svg",
path: "../../integrations/ical",
data: "Fetches and parses an iCal/ICS calendar feed to retrieve calendar events.",
};
@@ -9,7 +9,6 @@ import { immichAlbumCarouselWidget } from '../../widgets/immich-album-carousel';
} from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationSecrets } from '@site/src/components/integrations/secrets';
import { immichIntegration } from '.';
import { immichServerStatsWidget } from '../../widgets/immich-server-stats';
@@ -20,10 +19,6 @@ import { immichServerStatsWidget } from '../../widgets/immich-server-stats';
categories={['Photo server']}
/>
### Data
<IntegrationData integration={immichIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -5,5 +5,4 @@ export const immichIntegration: IntegrationDefinition = {
description: "Self-hosted photo and video management solution",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/immich.svg",
path: "../../integrations/immich",
data: "Fetches server statistics, albums, and users from an Immich photo management server.",
};
@@ -4,7 +4,6 @@ description: "Jellyfin is a free and open-source media server software that allo
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { mediaReleasesWidget } from '@site/docs/widgets/media-releases';
categories={['Media server']}
/>
### Data
<IntegrationData integration={jellyfinIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -6,5 +6,4 @@ export const jellyfinIntegration: IntegrationDefinition = {
"Jellyfin is a free and open-source media server software that allows you to organize, manage, and share your media files.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/jellyfin.svg",
path: "../../integrations/jellyfin",
data: "Fetches active streams and recently added media from a Jellyfin media server.",
};
@@ -4,7 +4,6 @@ description: "Jellyseerr is a self-hosted media request management system that i
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { mediaRequestStatsWidget } from '@site/docs/widgets/media-request-stats'
categories={['Media requests']}
/>
### Data
<IntegrationData integration={jellyseerrIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const jellyseerrIntegration: IntegrationDefinition = {
"Jellyseerr is a self-hosted media request management system that integrates with Jellyfin and other media servers.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/jellyseerr.svg",
path: "../../integrations/jellyseerr",
data: "Fetches media requests, search results, and user information from Jellyseerr.",
};
@@ -4,7 +4,6 @@ description: "Kubernetes is a powerful container orchestration platform that aut
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import {IntegrationSecrets} from '@site/src/components/integrations/secrets';
@@ -25,10 +24,6 @@ This integration is read-only, meaning Homarr does not modify or manage cluster
![Dashboard](img/dashboard.jpeg)
### Data
<IntegrationData integration={kubernetesIntegration} />
### Prerequisites
Before deploying Homarr in Kubernetes, ensure the following prerequisites are met:
@@ -6,5 +6,4 @@ export const kubernetesIntegration: IntegrationDefinition = {
"Kubernetes is a powerful container orchestration platform that automates the deployment, scaling, and management of containerized applications.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/kubernetes.svg",
path: "../../integrations/kubernetes",
data: "Fetches Kubernetes cluster information including pods, deployments, and services.",
};
@@ -4,7 +4,6 @@ description: "Lidarr is a music management tool that automates the process of do
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -19,10 +18,6 @@ import { calendarWidget } from '@site/docs/widgets/calendar';
categories={['Media manager', "Servarr"]}
/>
### Data
<IntegrationData integration={lidarrIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const lidarrIntegration: IntegrationDefinition = {
"Lidarr is a music management tool that automates the process of downloading, sorting, and renaming music.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/lidarr.svg",
path: "../../integrations/lidarr",
data: "Fetches music album release calendar events from Lidarr.",
};
@@ -4,7 +4,6 @@ description: "LinuxServer.io is a platform for managing and deploying containeri
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -18,10 +17,6 @@ import { releasesWidget } from '@site/docs/widgets/releases';
categories={['Container Management', 'Software']}
/>
### Data
<IntegrationData integration={linuxServerIoIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -5,5 +5,4 @@ export const linuxServerIoIntegration: IntegrationDefinition = {
description: "LinuxServer.io is a platform for managing and deploying containerized applications.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/linuxserver-io.svg",
path: "../../integrations/linux-server-io",
data: "Fetches Docker image versions and changelogs from LinuxServer.io.",
};
@@ -4,7 +4,6 @@ description: "Navidrome is a self-hosted music server and streamer compatible wi
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { audioStatsWidget } from '@site/docs/widgets/audio-stats';
Navidrome provides music library statistics including artist, album, and song counts, as well as now playing information via the Subsonic API.
### Data
<IntegrationData integration={navidromeIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -5,5 +5,4 @@ export const navidromeIntegration: IntegrationDefinition = {
description: "Navidrome is a self-hosted music server and streamer compatible with the Subsonic API.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/navidrome.svg",
path: "../../integrations/navidrome",
data: "Fetches library statistics and currently playing tracks from a Navidrome music server.",
};
@@ -4,7 +4,6 @@ description: "Nextcloud is a self-hosted productivity platform that provides fil
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { notificationsWidget } from '@site/docs/widgets/notifications';
categories={['Calendar', 'Notifications']}
/>
### Data
<IntegrationData integration={nextcloudIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -6,5 +6,4 @@ export const nextcloudIntegration: IntegrationDefinition = {
"Nextcloud is a self-hosted productivity platform that provides file storage, collaboration tools, and more.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/nextcloud.svg",
path: "../../integrations/nextcloud",
data: "Fetches calendar events and notifications from a Nextcloud instance.",
};
@@ -4,7 +4,6 @@ description: "NPM is a package manager for the JavaScript programming language,
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -18,10 +17,6 @@ import { releasesWidget } from '@site/docs/widgets/releases';
categories={['Package Management', 'Software']}
/>
### Data
<IntegrationData integration={npmIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
-1
View File
@@ -6,5 +6,4 @@ export const npmIntegration: IntegrationDefinition = {
"NPM is a package manager for the JavaScript programming language, primarily used for managing Node.js packages.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/npm.svg",
path: "../../integrations/npm",
data: "Fetches the latest npm package version and metadata from the npm registry.",
};
@@ -6,7 +6,6 @@ hide_title: true
import { notificationsWidget } from '@site/docs/widgets/notifications';
import { AddingIntegration } from '@site/src/components/integrations/adding';
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationSecrets } from '@site/src/components/integrations/secrets';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
@@ -18,10 +17,6 @@ import { ntfyIntegration } from '.';
categories={['Notifications', 'Messaging']}
/>
### Data
<IntegrationData integration={ntfyIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const ntfyIntegration: IntegrationDefinition = {
"Ntfy is a simple, open-source notification service that allows you to send and receive notifications across devices.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/ntfy.svg",
path: "../../integrations/ntfy",
data: "Fetches recent push notifications from an ntfy.sh topic.",
};
@@ -4,7 +4,6 @@ description: "NZBGet is a lightweight and efficient Usenet downloader."
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { downloadsWidget } from '@site/docs/widgets/downloads';
categories={['Usenet client']}
/>
### Data
<IntegrationData integration={nzbgetIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -4,5 +4,4 @@ export const nzbgetIntegration: IntegrationDefinition = {
description: "NZBGet is a lightweight and efficient Usenet downloader.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/nzbget.svg",
path: "../../integrations/nzbget",
data: "Manages and monitors NZBGet usenet downloads including queue, history, and pause/resume/delete actions.",
};
@@ -4,7 +4,6 @@ description: "Open Media Vault is a free network-attached storage server based o
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { systemResourcesWidget } from '@site/docs/widgets/system-resources';
categories={['System monitoring']}
/>
### Data
<IntegrationData integration={openMediaVaultIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -4,5 +4,4 @@ export const openMediaVaultIntegration: IntegrationDefinition = {
description: "Open Media Vault is a free network-attached storage server based on the Debian operating system.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/openmediavault.svg",
path: "../../integrations/open-media-vault",
data: "Fetches system health data including CPU, memory, filesystem, SMART status, and CPU temperature from OpenMediaVault.",
};
@@ -4,7 +4,6 @@ description: "OPNsense is an open-source, easy-to-use, and easy-to-build firewal
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -19,10 +18,6 @@ import { firewallWidget } from '../../widgets/firewall';
categories={['Firewall']}
/>
### Data
<IntegrationData integration={opnsenseIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -4,5 +4,4 @@ export const opnsenseIntegration: IntegrationDefinition = {
description: "OPNsense is an open-source, easy-to-use, and easy-to-build firewall and routing platform",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/opnsense.svg",
path: "../../integrations/opnsense",
data: "Fetches firewall summary data including version, interface traffic, memory, and CPU usage from OPNsense.",
};
@@ -4,7 +4,6 @@ description: "Overseerr is a self-hosted media request management system that in
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { mediaRequestStatsWidget } from '@site/docs/widgets/media-request-stats'
categories={['Media requests']}
/>
### Data
<IntegrationData integration={overseerrIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -4,5 +4,4 @@ export const overseerrIntegration: IntegrationDefinition = {
description: "Overseerr is a self-hosted media request management system that integrates with Plex.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/overseerr.svg",
path: "../../integrations/overseerr",
data: "Fetches media requests, search results, and user information from Overseerr with approve/decline actions.",
};
@@ -4,7 +4,6 @@ description: "Paperless-ngx is a document management system that transforms your
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { paperlessNgxWidget } from '@site/docs/widgets/paperless-ngx';
Paperless-ngx provides document statistics including total documents, inbox count, correspondents, tags, and document types.
### Data
<IntegrationData integration={paperlessNgxIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -6,5 +6,4 @@ export const paperlessNgxIntegration: IntegrationDefinition = {
"Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/paperless-ngx.svg",
path: "../../integrations/paperless-ngx",
data: "Fetches document statistics including total documents, inbox count, tags, correspondents, and document types.",
};
@@ -4,7 +4,6 @@ description: 'A tiny dashboard for Network UPS Tools (NUT) servers.'
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { upsWidget } from '@site/docs/widgets/ups';
[PeaNUT](https://github.com/Brandawg93/PeaNUT) exposes the data of your [Network UPS Tools](https://networkupstools.org/) servers
over a REST API, which Homarr reads to display the status of your UPS devices.
### Data
<IntegrationData integration={peaNutIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -5,5 +5,4 @@ export const peaNutIntegration: IntegrationDefinition = {
description: "A tiny dashboard for Network UPS Tools (NUT) servers.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/peanut.svg",
path: "../../integrations/peanut",
data: "Fetches UPS device summaries including battery charge, runtime, load, and voltage from PeaNut (NUT).",
};
@@ -4,7 +4,6 @@ description: "Pi-hole is a network-wide ad blocker that acts as a DNS sinkhole,
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -25,10 +24,6 @@ import { piHoleIntegration } from '.';
Homarr supports both Pi-hole v5 and v6. It automatically detects the version and uses the correct API.
</Alert>
### Data
<IntegrationData integration={piHoleIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -6,5 +6,4 @@ export const piHoleIntegration: IntegrationDefinition = {
"Pi-hole is a network-wide ad blocker that acts as a DNS sinkhole, blocking unwanted content and improving your browsing experience.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/pi-hole.svg",
path: "../../integrations/pi-hole",
data: "Fetches DNS query statistics and blocking status from Pi-hole with enable/disable support (auto-detects v5 vs v6).",
};
@@ -4,7 +4,6 @@ description: "Plex is a media server platform that allows you to organize, manag
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { mediaReleasesWidget } from '@site/docs/widgets/media-releases';
categories={['Media server']}
/>
### Data
<IntegrationData integration={plexIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -5,5 +5,4 @@ export const plexIntegration: IntegrationDefinition = {
"Plex is a media server platform that allows you to organize, manage, and stream your personal media collection.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/plex.svg",
path: "../../integrations/plex",
data: "Fetches active streams and recently added media from a Plex Media Server.",
};
@@ -4,7 +4,6 @@ description: "Prowlarr is an indexer manager for Usenet and BitTorrent, providin
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -18,10 +17,6 @@ import { indexerManagerWidget } from '@site/docs/widgets/indexer-manager';
categories={['Indexer']}
/>
### Data
<IntegrationData integration={prowlarrIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{ widget: indexerManagerWidget }]}
@@ -5,5 +5,4 @@ export const prowlarrIntegration: IntegrationDefinition = {
"Prowlarr is an indexer manager for Usenet and BitTorrent, providing a unified interface to manage your indexers.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/prowlarr.svg",
path: "../../integrations/prowlarr",
data: "Fetches indexer status and health from Prowlarr with test-all-indexers support.",
};
@@ -4,7 +4,6 @@ description: "Proxmox is a powerful open-source virtualization platform that all
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { systemResourcesWidget } from '@site/docs/widgets/system-resources';
categories={['System monitoring']}
/>
### Data
<IntegrationData integration={proxmoxIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[
@@ -5,5 +5,4 @@ export const proxmoxIntegration: IntegrationDefinition = {
"Proxmox is a powerful open-source virtualization platform that allows you to run virtual machines and containers.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/proxmox.svg",
path: "../../integrations/proxmox",
data: "Fetches Proxmox cluster resources including nodes, VMs, containers, and storage information.",
};
@@ -4,7 +4,6 @@ description: "qBittorrent is a free and open-source BitTorrent client."
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { downloadsWidget } from '@site/docs/widgets/downloads';
categories={['Torrent client']}
/>
### Data
<IntegrationData integration={qBittorentIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{ widget: downloadsWidget }]}
@@ -4,5 +4,4 @@ export const qBittorentIntegration: IntegrationDefinition = {
description: "qBittorrent is a free and open-source BitTorrent client.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/qbittorrent.svg",
path: "../../integrations/q-bittorent",
data: "Manages and monitors qBittorrent torrents including progress, speeds, and pause/resume/delete actions.",
};
@@ -4,7 +4,6 @@ description: "Quay is a container registry for storing and managing container im
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -18,10 +17,6 @@ import { releasesWidget } from '@site/docs/widgets/releases';
categories={['Container Registry', 'Software']}
/>
### Data
<IntegrationData integration={quayIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{
@@ -5,5 +5,4 @@ export const quayIntegration: IntegrationDefinition = {
description: "Quay is a container registry for storing and managing container images.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/quay.png",
path: "../../integrations/quay",
data: "Fetches container image tags and repository metadata from a Quay.io registry.",
};
@@ -4,7 +4,6 @@ description: "Radarr is a movie management tool that automates the process of do
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -19,10 +18,6 @@ import { calendarWidget } from '@site/docs/widgets/calendar';
categories={['Media manager', "Servarr"]}
/>
### Data
<IntegrationData integration={radarrIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{ widget: calendarWidget }]}
@@ -5,5 +5,4 @@ export const radarrIntegration: IntegrationDefinition = {
"Radarr is a movie management tool that automates the process of downloading, sorting, and renaming movies.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/radarr.svg",
path: "../../integrations/radarr",
data: "Fetches movie release calendar events including in-cinemas, physical, and digital release dates.",
};
@@ -4,7 +4,6 @@ description: "Readarr is a book management tool that automates the process of do
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -19,10 +18,6 @@ import { calendarWidget } from '@site/docs/widgets/calendar';
categories={['Media manager', "Servarr"]}
/>
### Data
<IntegrationData integration={readarrIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{ widget: calendarWidget }]}
@@ -5,5 +5,4 @@ export const readarrIntegration: IntegrationDefinition = {
"Readarr is a book management tool that automates the process of downloading, sorting, and renaming books.",
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/readarr.svg",
path: "../../integrations/readarr",
data: "Fetches book release calendar events from Readarr.",
};
@@ -4,7 +4,6 @@ description: "SABnzbd is an Open Source Binary Newsreader."
hide_title: true
---
import { IntegrationData } from '@site/src/components/integrations/data';
import { IntegrationHeader } from '@site/src/components/integrations/header';
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
import { AddingIntegration } from '@site/src/components/integrations/adding';
@@ -20,10 +19,6 @@ import { downloadsWidget } from '@site/docs/widgets/downloads';
categories={['Usenet client']}
/>
### Data
<IntegrationData integration={sabnzbdIntegration} />
### Widgets & Capabilities
<IntegrationCapabilites
items={[{ widget: downloadsWidget}]}
Loaded 100 of 296 files, more files were not shown because too many files have changed in this diff. Show more