All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 1m16s
Apps onderling verbinden:
- Elke stack draaide als eigen compose-project met een eigen netwerk, waardoor
stacks elkaar niet op naam konden bereiken. Bij installeren staat nu
"Verbinden met andere apps" aan: de stack komt op een gedeeld bridge-netwerk
(SHARED_NETWORK, standaard "serverup") dat op aanvraag wordt aangemaakt.
- compose_transform.add_shared_network() hangt elke service eraan en laat
bestaande netwerken staan, dus het werkt samen met een macvlan-adres.
- Nieuw /api/apps/connectable geeft de geinstalleerde apps met hun
containernamen, zodat de installatiemodal kan laten kiezen.
Kiezen in plaats van typen:
- Een veld met "connect": {"app": "mosquitto", "scheme": "mqtt", "port": 1883}
toont een keuzelijst met wat er al draait, met handmatig invullen als
terugval. Toegepast op zigbee2mqtt -> mosquitto en open-webui -> ollama.
- Is de doel-app nog niet geinstalleerd, dan zegt het veld dat.
Uitleg per instelling:
- Info-icoon per veld opent een blok met de volledige uitleg plus de
standaardwaarde. Uitgeschreven voor de instellingen die de meeste vragen
oproepen (downloadmap vs mediamap, shm_size bij frigate, poort 80 bij caddy,
PUID bij de arr-stack, GPU bij ollama, publiek adres bij wg-easy).
Geavanceerde opties:
- advanced: true op een veld of groep zet het achter een uitklapblok met
teller. Toegepast op wachtwoorden, PUID/PGID, USB-paden en bewaartermijnen
van 28 apps.
- Test bewaakt dat elke app zichtbare velden overhoudt en dat koppelvelden naar
een bestaande app verwijzen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb
425 lines
11 KiB
JSON
425 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"
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
]
|
|
}
|