server-up/apps/arr-stack/template.json
Ramon ff1979ba51
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 1m10s
v0.7.10-beta - categorieen met kleur in de app store en bij je apps
- Nieuw core/categories.py: zeventien categorieen, elk met naam (nl/en), kleur
  en pictogram. Kleuren zijn middentonen die in licht en donker leesbaar zijn;
  de interface gebruikt ze als tekstkleur op een doorzichtige variant.
- Alle 96 apps ingedeeld via metadata.categories. Een app mag in meerdere
  categorieen zitten; 39 apps doen dat (Frigate onder domotica en media,
  Immich onder fotos en opslag, Kavita onder media en documenten).
- Apps uit externe repos geven geen categorieen op; die worden afgeleid uit
  tags en omschrijving, zodat ook zij een kleur en een plek in het filter
  krijgen.
- App store: gekleurde categoriebalk met aantallen, klikbare badges per app,
  werkt naast het bestaande zoekveld en de tagfilters.
- Stackslijst: dezelfde balk met alleen de categorieen die je draait, gekleurde
  rand per kaart en klikbare badges.
- Nieuw /api/categories geeft de definities met kleur, zodat interface en
  backend dezelfde kleur voor dezelfde categorie gebruiken. /api/stacks geeft
  de categorieen mee; een stack van voor deze versie valt terug op "overig"
  in plaats van kleurloos te blijven.
- Tests: elke app heeft geldige categorieen, kleuren zijn uniek, en er staat
  geen categorie in het filter zonder apps.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb
2026-07-27 14:14:25 +02:00

429 lines
11 KiB
JSON

{
"kind": "compose",
"metadata": {
"name": "ARR-stack",
"description": "Media-automatisering met een schakelaar per onderdeel: Sonarr, Radarr, Lidarr, Readarr, Whisparr, Prowlarr, Jackett, Bazarr, FlareSolverr, qBittorrent, SABnzbd, NZBGet, Gluetun (VPN), Jellyseerr, Recyclarr, Unpackerr, Tdarr, Autobrr, Maintainerr en Huntarr.",
"tags": [
"media",
"automatisering",
"films",
"series",
"downloaden"
],
"icon": {
"provider": "selfhst",
"id": "sonarr"
},
"version": {
"name": "latest"
},
"categories": [
"media",
"downloaden"
]
},
"variables": [
{
"title": "Algemeen",
"items": [
{
"name": "service_name",
"type": "str",
"title": "Naam van de stack",
"default": "arr",
"required": true,
"description": "Wordt het voorvoegsel van elke container, bv. arr-sonarr"
},
{
"name": "data_dir",
"type": "str",
"title": "Configuratiemap",
"default": "/opt/serverup/appdata",
"required": true
},
{
"name": "media_dir",
"type": "str",
"title": "Mediamap",
"default": "/mnt/media",
"required": true,
"description": "Hier komen films/, series/, muziek/ en boeken/ onder te staan"
},
{
"name": "downloads_dir",
"type": "str",
"title": "Downloadmap",
"default": "/mnt/downloads",
"required": true,
"description": "Zet deze op hetzelfde bestandssysteem als de mediamap, anders kopieert elke download in plaats van te verplaatsen",
"help": "Zet deze map op hetzelfde bestandssysteem als je mediamap. Staan ze op verschillende schijven of volumes, dan kopieert elke voltooide download in plaats van te verplaatsen: traag, en je hebt alles tijdelijk dubbel."
},
{
"name": "timezone",
"type": "str",
"title": "Tijdzone",
"default": "Europe/Amsterdam",
"required": true
},
{
"name": "puid",
"type": "int",
"title": "Gebruikers-ID (PUID)",
"default": 1000,
"required": true,
"description": "`id -u` op je host; bepaalt de eigenaar van bestanden",
"help": "Het gebruikersnummer waaronder de containers draaien. Klopt dit niet met de eigenaar van je mediamap, dan kunnen de apps er niet in schrijven. Vind het met `id -u` op je server."
},
{
"name": "pgid",
"type": "int",
"title": "Groeps-ID (PGID)",
"default": 1000,
"required": true
}
]
},
{
"title": "Sonarr — series",
"items": [
{
"name": "port_sonarr",
"type": "int",
"title": "Poort",
"default": 8989,
"required": true
}
],
"toggle": "enable_sonarr",
"toggle_default": true,
"description": "Zoekt, downloadt en hernoemt series"
},
{
"title": "Radarr — films",
"items": [
{
"name": "port_radarr",
"type": "int",
"title": "Poort",
"default": 7878,
"required": true
}
],
"toggle": "enable_radarr",
"toggle_default": true,
"description": "Zoekt, downloadt en hernoemt films"
},
{
"title": "Lidarr — muziek",
"items": [
{
"name": "port_lidarr",
"type": "int",
"title": "Poort",
"default": 8686,
"required": true
}
],
"toggle": "enable_lidarr",
"toggle_default": false
},
{
"title": "Readarr — boeken",
"items": [
{
"name": "port_readarr",
"type": "int",
"title": "Poort",
"default": 8787,
"required": true
}
],
"toggle": "enable_readarr",
"toggle_default": false,
"description": "Let op: de ontwikkeling van Readarr is stilgelegd; het draait nog wel"
},
{
"title": "Whisparr — volwassenen",
"items": [
{
"name": "port_whisparr",
"type": "int",
"title": "Poort",
"default": 6969,
"required": true
}
],
"toggle": "enable_whisparr",
"toggle_default": false
},
{
"title": "Prowlarr — indexerbeheer",
"items": [
{
"name": "port_prowlarr",
"type": "int",
"title": "Poort",
"default": 9696,
"required": true
}
],
"toggle": "enable_prowlarr",
"toggle_default": true,
"description": "Beheert je indexers centraal en duwt ze naar de andere *arr-apps"
},
{
"title": "Jackett — indexerproxy",
"items": [
{
"name": "port_jackett",
"type": "int",
"title": "Poort",
"default": 9117,
"required": true
}
],
"toggle": "enable_jackett",
"toggle_default": false,
"description": "Ouder alternatief voor Prowlarr; meestal heb je er maar één nodig"
},
{
"title": "FlareSolverr — Cloudflare omzeilen",
"items": [
{
"name": "port_flaresolverr",
"type": "int",
"title": "Poort",
"default": 8191,
"required": true
}
],
"toggle": "enable_flaresolverr",
"toggle_default": false,
"description": "Nodig voor indexers die achter een Cloudflare-controle zitten"
},
{
"title": "Bazarr — ondertitels",
"items": [
{
"name": "port_bazarr",
"type": "int",
"title": "Poort",
"default": 6767,
"required": true
}
],
"toggle": "enable_bazarr",
"toggle_default": true
},
{
"title": "qBittorrent — torrents",
"items": [
{
"name": "port_qbittorrent",
"type": "int",
"title": "Webinterface",
"default": 8097,
"required": true
},
{
"name": "port_qbittorrent_tcp",
"type": "int",
"title": "Inkomende poort",
"default": 6881,
"required": true
}
],
"toggle": "enable_qbittorrent",
"toggle_default": true,
"description": "Torrentclient met webinterface"
},
{
"title": "SABnzbd — usenet",
"items": [
{
"name": "port_sabnzbd",
"type": "int",
"title": "Poort",
"default": 8098,
"required": true
}
],
"toggle": "enable_sabnzbd",
"toggle_default": false
},
{
"title": "NZBGet — usenet (lichter)",
"items": [
{
"name": "port_nzbget",
"type": "int",
"title": "Poort",
"default": 6789,
"required": true
}
],
"toggle": "enable_nzbget",
"toggle_default": false,
"description": "Zuiniger alternatief voor SABnzbd"
},
{
"title": "Gluetun — VPN voor de downloadclient",
"items": [
{
"name": "vpn_provider",
"type": "str",
"title": "VPN-aanbieder",
"default": "mullvad",
"required": true,
"description": "Bijvoorbeeld mullvad, nordvpn, protonvpn of surfshark"
},
{
"name": "vpn_type",
"type": "enum",
"title": "Protocol",
"default": "wireguard",
"required": true,
"config": {
"options": [
"wireguard",
"openvpn"
]
}
},
{
"name": "wireguard_private_key",
"type": "str",
"title": "WireGuard privésleutel",
"default": "",
"required": false,
"config": {
"placeholder": "alleen bij wireguard"
}
},
{
"name": "wireguard_addresses",
"type": "str",
"title": "WireGuard adressen",
"default": "",
"required": false,
"config": {
"placeholder": "10.64.0.2/32"
}
},
{
"name": "openvpn_user",
"type": "str",
"title": "OpenVPN gebruiker",
"default": "",
"required": false
},
{
"name": "openvpn_password",
"type": "str",
"title": "OpenVPN wachtwoord",
"default": "",
"required": false
}
],
"toggle": "enable_gluetun",
"toggle_default": false,
"description": "Leidt al je downloadverkeer door een VPN. De downloadclients delen dan het netwerk van deze container, dus hun poorten komen hier te liggen."
},
{
"title": "Jellyseerr — verzoeken",
"items": [
{
"name": "port_jellyseerr",
"type": "int",
"title": "Poort",
"default": 5055,
"required": true
}
],
"toggle": "enable_jellyseerr",
"toggle_default": true,
"description": "Laat huisgenoten films en series aanvragen"
},
{
"title": "Recyclarr — TRaSH-instellingen",
"items": [],
"toggle": "enable_recyclarr",
"toggle_default": false,
"description": "Synchroniseert kwaliteitsprofielen uit de TRaSH-gidsen naar Sonarr en Radarr"
},
{
"title": "Unpackerr — archieven uitpakken",
"items": [],
"toggle": "enable_unpackerr",
"toggle_default": false,
"description": "Pakt gedownloade rar-archieven automatisch uit"
},
{
"title": "Tdarr — hercoderen",
"items": [
{
"name": "port_tdarr",
"type": "int",
"title": "Webinterface",
"default": 8265,
"required": true
},
{
"name": "port_tdarr_server",
"type": "int",
"title": "Serverpoort",
"default": 8266,
"required": true
}
],
"toggle": "enable_tdarr",
"toggle_default": false,
"description": "Zet je bibliotheek om naar een zuiniger formaat"
},
{
"title": "Autobrr — automatisch grijpen",
"items": [
{
"name": "port_autobrr",
"type": "int",
"title": "Poort",
"default": 7474,
"required": true
}
],
"toggle": "enable_autobrr",
"toggle_default": false,
"description": "Reageert direct op aankondigingen in plaats van periodiek te zoeken"
},
{
"title": "Maintainerr — opruimen",
"items": [
{
"name": "port_maintainerr",
"type": "int",
"title": "Poort",
"default": 6246,
"required": true
}
],
"toggle": "enable_maintainerr",
"toggle_default": false,
"description": "Ruimt media op volgens regels die je zelf instelt"
},
{
"title": "Huntarr — gaten opvullen",
"items": [
{
"name": "port_huntarr",
"type": "int",
"title": "Poort",
"default": 9705,
"required": true
}
],
"toggle": "enable_huntarr",
"toggle_default": false,
"description": "Zoekt gericht naar ontbrekende en te verbeteren afleveringen"
}
]
}