diff --git a/milky-way/environments/stage00/orion-system/main.jsonnet b/milky-way/environments/stage00/orion-system/main.jsonnet index e95ed8c..03b92ff 100644 --- a/milky-way/environments/stage00/orion-system/main.jsonnet +++ b/milky-way/environments/stage00/orion-system/main.jsonnet @@ -16,7 +16,7 @@ local qbittorrent = import 'milky-way/lib/qbittorrent.libsonnet'; local qui = import 'milky-way/lib/qui.libsonnet'; local vpnProxy = import 'milky-way/lib/vpn-proxy.libsonnet'; local thelounge = import 'milky-way/lib/thelounge.libsonnet'; -local sonarrForSdxarr = import 'milky-way/lib/sonarr.libsonnet'; +local sonarr = import 'milky-way/lib/sonarr.libsonnet'; local radarrForSdxarr = import 'milky-way/lib/radarr.libsonnet'; local prowlarr = import 'milky-way/lib/prowlarr.libsonnet'; local jellyfin = import 'milky-way/lib/jellyfin.libsonnet'; @@ -293,13 +293,22 @@ local pubkeys = import 'magic/common/public_keys.json'; // moves stay on one filesystem. WebUI via Tailscale L7 ingress; SQLite config on its own iSCSI // RWO PVC. The download-client/indexer links are entered in the UI post-deploy (they need API // keys each app generates on first boot). - sonarrForSdxarr: sonarrForSdxarr.new( + sonarrForSdxarr: sonarr.new( apiKey = secrets.sonarrForSdxarr.apiKey, tailscaleHostname = "sonarr-for-sdxarr", name = "sonarr-for-sdxarr", mediaVolumeClaimName = this.mdataPvc.metadata.name, ), + // General Sonarr instance with its own config PVC and API key. It shares mdata with + // qBittorrent so completed downloads can be imported without copying files. + sonarrCatchall: sonarr.new( + apiKey = secrets.sonarrCatchall.apiKey, + tailscaleHostname = 'sonarr-catchall', + name = 'sonarr-catchall', + mediaVolumeClaimName = this.mdataPvc.metadata.name, + ), + // radarr-for-sdxarr: the Radarr instance dedicated to being reconciled by SeaDexArr -- the anime // MOVIE counterpart of sonarr-for-sdxarr (which handles series). Its supported use-case is the // seadexarr wiring below, NOT a general/global Radarr. Monitors/grabs movies, hands torrents to @@ -318,9 +327,9 @@ local pubkeys = import 'magic/common/public_keys.json'; mediaVolumeClaimName = this.mdataPvc.metadata.name, ), - // Prowlarr: indexer manager. No media volume -- it pushes indexer configs to the *arr apps - // (sonarr-for-sdxarr.default.svc.cluster.local:8989 and radarr-for-sdxarr...:7878) over ClusterIP - // DNS. WebUI via Tailscale L7 ingress; SQLite config on its own iSCSI RWO PVC. + // Prowlarr: indexer manager for the *arr apps over ClusterIP DNS; per-app sync is + // configured in Buildarr below. No media volume. WebUI via Tailscale L7 ingress; + // SQLite config on its own iSCSI RWO PVC. prowlarr: prowlarr.new( apiKey = secrets.prowlarr.apiKey, tailscaleHostname = "prowlarr", @@ -448,6 +457,7 @@ local pubkeys = import 'magic/common/public_keys.json'; // also exposes gluetun-ctrl). API keys come from sops. local buildarrConfig = local sonarrForSdxarrInstanceName = 'sonarr-for-sdxarr'; + local sonarrCatchallInstanceName = 'sonarr-catchall'; local radarrForSdxarrInstanceName = 'radarr-for-sdxarr'; local prowlarrOrionSystemInstanceName = 'prowlarr-orion-system'; local httpUrl(hostname, port) = 'http://%s:%d' % [hostname, port]; @@ -525,6 +535,37 @@ local pubkeys = import 'magic/common/public_keys.json'; }, }, }, + [sonarrCatchallInstanceName]: { + hostname: utils.domainOfService(this.sonarrCatchall.service), + port: utils.associateObjectsByKey(this.sonarrCatchall.service.spec.ports, 'name')['webui'].port, + protocol: 'http', + api_key: secrets.sonarrCatchall.apiKey, + settings: { + download_clients: { + delete_unmanaged: false, + definitions: { + qBittorrent: { + type: 'qbittorrent', + host: utils.domainOfService(this.qbittorrent.service), + port: utils.associateObjectsByKey(this.qbittorrent.service.spec.ports, 'name')['webui'].port, + category: 'sonarr-catchall', + }, + }, + }, + media_management: { + delete_unmanaged_root_folders: false, + local mediaMount = utils.associateObjectsByKey( + this.sonarrCatchall.deployment.spec.template.spec.containers[0].volumeMounts, 'name' + )['media'], + assert mediaMount.mountPath == '/data' : + 'sonarr-catchall media mount must be at /data for its root folder to resolve', + root_folders: [ + '/data/library/TV Shows', + '/data/library/Animations', + ], + }, + }, + }, }, }, radarr: { @@ -646,6 +687,19 @@ local pubkeys = import 'magic/common/public_keys.json'; // if this instance should ever search indexers on its own. sync_level: 'disabled', }, + 'Sonarr Catchall': { + type: 'sonarr', + instance_name: sonarrCatchallInstanceName, + prowlarr_url: httpUrl( + utils.domainOfService(this.prowlarr.service), + utils.associateObjectsByKey(this.prowlarr.service.spec.ports, 'name')['webui'].port, + ), + base_url: httpUrl( + utils.domainOfService(this.sonarrCatchall.service), + utils.associateObjectsByKey(this.sonarrCatchall.service.spec.ports, 'name')['webui'].port, + ), + sync_level: 'full_sync', + }, Radarr: { type: 'radarr', // Cross-link by name: Buildarr resolves the Radarr instance above and fills in diff --git a/secrets/k8s-config/k8s-secret-values.jsonnet b/secrets/k8s-config/k8s-secret-values.jsonnet index 7269bf2..50f9643 100644 --- a/secrets/k8s-config/k8s-secret-values.jsonnet +++ b/secrets/k8s-config/k8s-secret-values.jsonnet @@ -1,18 +1,18 @@ { - "data": "ENC[AES256_GCM,data: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,iv:YqrYSv7bQ2WGZXk9pNrqtKjx4jHbBX3LLUj/Y+J+044=,tag:3UyFzowvxfb811TFHxe5gg==,type:str]", + "data": "ENC[AES256_GCM,data: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,iv:ihDh9Pf3ajKQB/d31ko/X0xlVDLMWD0ieEgWxWVfenk=,tag:NaWb0PjSK3BaFmtS8eyL+Q==,type:str]", "sops": { "age": [ { "recipient": "age1k02u4z06c0qwen95uwk4qphns3qqujtmz57sr3ea34f2rwh5kvjsfkjrfy", - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArV2tTajYxdG9PeUlTbW1t\nTy9TUGlMellaU1ZpQnI2WU1ERmNGMHA0SXdvCk16aGM4V3FCZmFSNWxxYVk4ek0w\nOHM2TTk1VlRxeDRZRG9uSjJtN1VGL2MKLS0tIE04N1dLWk56bE9UMHNwTVRZMytD\na2JTOGxXQ2d3RElIRkNuNTQ5NnRYcFkKMYQLiPxcejJPTWbzmtlh4BJYUT/SSldR\n/vbRhFNT+xRVem+DjCDsF9X4b+UXhP5ScPZYZtZ2XzouHTZ7yaIVGw==\n-----END AGE ENCRYPTED FILE-----\n" + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxdGIyRzJWdE5zUW9xeHpX\nQ1A2UXB1eWlvQnIrakNvZnRSaCt1VXFpTjI0CnJJeG51UWJYZldOS2ZGUW9sRjNq\ncUdNUnIzYzFuVkpkUjVJbzdpa3l2S1kKLS0tIDcrRWRxTzc3cTYrMXllVS9MSDRS\naFFDZHlRWGJIcllvaW5VbTFuSW0vYzQKX6NU7nCK4LD8AYeM188ZzamiUUkcqboz\nfpKqrIfWN6/3vweXhAnluILTqQ6PcnNPn7oQswXh1Ly5wZUq4cT2JQ==\n-----END AGE ENCRYPTED FILE-----\n" }, { "recipient": "age12ecq8rcc8s52e7nnzryjpafs73nzycp8jaa9z8s2gpnl5zn00a9q4u57nq", - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZNjF5OUx2M1k2YlRiekda\nWHh0QWdQNGZrNFpiM1haZlBPeGRBZjJOOTJrCm9wOVE3cVZhYmNIVjgwWGtDVjRQ\neHNGWW81c0tLK0VYY0RnMk5PSjRzYlkKLS0tIGJQWEhaY0wwaVV0NUNXaXFraExy\na2NwZUhCbng1YWxpUGp6dU9OVXBTNVUKUtj4Ms9tlqFEXbT+cirIiFNZFD8oPbPx\nPu9zxmIl7BC2I1v/c9ijFft7XR+somx7wX5ISIIhBwTDq9Pr4fqovA==\n-----END AGE ENCRYPTED FILE-----\n" + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlVlNuRkxHNDBoQjFmRG5E\naWlCOEFXVVF3WFJQdDZybTNUYmFkMkZHdjFFCnN5Q0xBamJhRExjaTYrK2w1dFRy\nM1RuaTVDTCtxWVlCbTdMYytBT1NERDAKLS0tIGJYb2t2ek5mOHh0SVRucGF1Uk1t\nS1RhQlQxWmFXM3BwdzlJaXhHQzRNN1UKKFqDVSd1ei7oDh+eGPz604m+lNe8vf4+\nOedWSoq8HEtz3iniShNwCB96ccchPgjd84GeEMEYYHEcmubpG++n0A==\n-----END AGE ENCRYPTED FILE-----\n" } ], - "lastmodified": "2026-09-06T22:51:41Z", - "mac": "ENC[AES256_GCM,data:M1nzJxSAI+yocJf4DxdaBjNcaM63wywsAw4pz1ulBJ6q8GCdpLJ5tM6mRp4Ir40T+J9/NmofixHzvKsy68JKBmsXA4YqmtP7JbCmxqqOijXlB+vF1UE72WuBsnRf7lDKyF01j66jLD9WO7SoLcAakJySptbrXELWUSXl58VLlrc=,iv:HqMKc3x5bsHL9Ky+RmvskyF3b1Fc6yHZICzAIE/+SZU=,tag:LJRE+pQ6YuC48ST0HY9bag==,type:str]", + "lastmodified": "2026-09-30T06:36:43Z", + "mac": "ENC[AES256_GCM,data:MIGLNgg1fJG78g6Z6F5oB/pDIUlDqaO5Hc7JpFjf5Up84rYhil3oL1vgRQMpW3LsXUHCto+HXvINEzUJXg278kwf2a3HppoSqMMsQydJGdgqo6/o2HU/+Isi/YoodyzzCneAbRmauI8xN1Fc/nUaVBq6qN7tWzqxRmTD8aMvhVQ=,iv:gHRgUmpWIgv0Q42JRpX/26Yky5CL6iD7K6z1Zo6CCLs=,tag:A//T9/DyRpkj487xxokJRQ==,type:str]", "unencrypted_suffix": "_unencrypted", "version": "3.10.2" }