diff --git a/kubernetes/main/apps/download/kustomization.yaml b/kubernetes/main/apps/download/kustomization.yaml index ca27f6c2..12b44b0c 100644 --- a/kubernetes/main/apps/download/kustomization.yaml +++ b/kubernetes/main/apps/download/kustomization.yaml @@ -17,3 +17,4 @@ resources: - ./sabnzbd - ./lazy-librarian/ks.yaml - ./autobrr/ks.yaml +- ./manga-watch/ks.yaml diff --git a/kubernetes/main/apps/download/manga-watch/app/config.yaml b/kubernetes/main/apps/download/manga-watch/app/config.yaml new file mode 100644 index 00000000..497fd483 --- /dev/null +++ b/kubernetes/main/apps/download/manga-watch/app/config.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: manga-watch-config +data: + watch.yaml: | + # scan_on_start: true + watch_dirs: + - /storage/Torrents/MangaWeekly + - /storage/Torrents/manga + + default_library: Manga + libraries: + - name: Manga + naming: "/{{ title }}/{{ title }} {{ chapter }}\ + {% if release_year %} ({{ release_year }}){% endif %}\ + {% if release_group %} ({{ release_group }}){% endif %}\ + .{{ file_ext }}" + path: /storage/Media/Manga + webhooks: + - name: Komga Manga Library + url: https://comics.seanomik.net/api/v1/libraries/0F1CMFTETE8ER/scan + headers: + X-API-Key: ENV_VAR_MANGA_WATCHER_KOMGA_KEY + + mangas: + - title: WITCH WATCH + - title: Tower Dungeon + - title: RuriDragon + - title: Dandadan diff --git a/kubernetes/main/apps/download/manga-watch/app/helm-release.yaml b/kubernetes/main/apps/download/manga-watch/app/helm-release.yaml new file mode 100644 index 00000000..838e81c1 --- /dev/null +++ b/kubernetes/main/apps/download/manga-watch/app/helm-release.yaml @@ -0,0 +1,53 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/bjw-s/helm-charts/main/charts/other/app-template/schemas/helmrelease-helm-v2.schema.json +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: manga-watch +spec: + interval: 5m + chart: + spec: + chart: app-template + version: 3.7.3 + sourceRef: + kind: HelmRepository + name: bjws-charts + namespace: flux-system + values: + controllers: + kapowarr: + pod: + securityContext: + runAsNonRoot: true + runAsUser: 10000 + runAsGroup: 10000 + fsGroup: 10000 + fsGroupChangePolicy: OnRootMismatch + containers: + app: + image: + repository: git.seanomik.net/seanomik/manga-watch + tag: v0.4.0 + pullPolicy: Always + envFrom: + - secretRef: + name: manga-watch-webhooks + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: { drop: ["ALL"] } + resources: + limits: + memory: 75Mi + persistence: + storage: + type: hostPath + hostPath: /mnt/MainPool/Media + globalMounts: + - path: /storage + config: + type: configMap + name: manga-watch-config + globalMounts: + - path: /config/watch.yaml + subPath: watch.yaml diff --git a/kubernetes/main/apps/download/manga-watch/app/kustomization.yaml b/kubernetes/main/apps/download/manga-watch/app/kustomization.yaml new file mode 100644 index 00000000..e20c183d --- /dev/null +++ b/kubernetes/main/apps/download/manga-watch/app/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- ./config.yaml +- ./webhook-secrets.sops.yaml +- ./helm-release.yaml diff --git a/kubernetes/main/apps/download/manga-watch/app/webhook-secrets.sops.yaml b/kubernetes/main/apps/download/manga-watch/app/webhook-secrets.sops.yaml new file mode 100644 index 00000000..1a27993e --- /dev/null +++ b/kubernetes/main/apps/download/manga-watch/app/webhook-secrets.sops.yaml @@ -0,0 +1,70 @@ +apiVersion: v1 +kind: Secret +metadata: + name: manga-watch-webhooks +stringData: + MANGA_WATCHER_KOMGA_KEY: ENC[AES256_GCM,data:qh/QzBUQfpcLeySrXh1H6BQEoz3EqjepDgjpdf3L/30=,iv:/PhmI2px74HTYlnC/+zq7Eot+eU377mZ0W2JKATq5Gw=,tag:DAneMF3JC2fD9lv6Fggegg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: [] + lastmodified: "2025-04-01T00:17:55Z" + mac: ENC[AES256_GCM,data:9FPBGpqx9MJGsY0XcvPOR192SG72vGPmQTQ5efLRk7f/xI2oF0GsrE4BofTw+wEHl1YQeo1VP31S8KjGAse+zk6Mzfi5GobDa31gC8NDDBYx2uQHC5PAvyTfPnhihFisP4R1FCST5dMGz3joiyUo53kVoXCpvcu09HljkQBTF+I=,iv:PcVZuEFd5FjKVkEx5a7poY+3zB4SeylBWbRaldWtxAY=,tag:YJgaksXxGZWjLOYyXKgCYg==,type:str] + pgp: + - created_at: "2025-04-01T00:17:55Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + hQIMAyqlIeyoxYovAQ//diTVs8dwsAnSt5g3qPLNrBTdhy9QQbrc6keYX2gIWLrN + QgnvTt9lXJiujzPXw5ix/IXbUqPraes7zzaeEBL8pOMYhwyLuaGu7jBNuDuBregK + zKD07fCpKgyf4sUkQcmtAPoQdxQEPcett0HK0xG9DpUWAw2dmeWUNHyYWzGJfr7q + BShrUtFG6leqEe5h8tGOFuurfPkXZyGtvMsHOEEQn/Z5aK96wbJkPV1j+Wi95GKY + OxjLwq0ttE9S16Gx1UJsGabQnZdhS3irr8ySGF9/3z3sjhZhbc+H8GUfu/i38vUe + rraJqUdI6W2aUyyYTMQRYzqA9h6BMBZfedPPsHb5UuvT9+zbh1ufkIxOS/zYZz5u + wN6xPE1wYKdzwL2iQdvbXSTduDc1SRfkiT172ASkiI2tx6ALn8FJoYXLpblfbJcF + r9yWtnqMRxUibCioxKVWboLDj63QGK6tpJs105qOzO4TV0xQ+D/iH3ipPdCbqeQo + cGpl6EZPuSVdL0Ux3m0/ocP97PAjSbh4xK5YIhXI8YBIF5FOwiFWSw6IMPHrPNu2 + XWgH6ysIiAtfvO9KmVvrQlfJRgWdD/3H/KohQ3xzKpFMhxPrsVayjqZroc3R0Y46 + AnpeWrsPGO7gmNvf5qSGAtZPP2FJPa7MuRBjSmmERfH9G9o6eNowg6vlF7zpUnGF + AgwDXjg0p2IN1X8BD/0b7hKXHqk3FztP2UbIucQbyZ8WpLyYYQId9Hn6ZSkwNLDb + n0RZwcG7wqT8A654miz0zVBXzB3XE8LIK6ziW/1M88sxiw5R64N/nP8ICNEArUiV + SKGUh7DkVRO6OII1guAOqaxRn17hXSh0aEjFrWTdasqx8EihBTVkmAx6290yvHvl + QhcrRfVG6WHHViwnFj+ddRAKyTcbprRx8UbSJqpfLCEEGlFhhu7CkRqCJc795qdL + 5YT8u5sRx66KTo8qy13Kfk4lYZtQdxv4EeF6nNU9OdgeRIS6pBZEJwheDYyLcyMV + QZwkLu3ZsPIv5l91gO04k3mXQi21mJdMAMpy6Wci80wYdkJPhqLumzsgXhlxtWQ2 + ayyCBF0v2LDzTwm4YYmmJFom/+3ZMOKYp3VsXhvKPJr07gUN26UtmHL6fcjII/zs + DHVn67m96v+xLYhOdfvy8S8JC0FyEsRQF1XH9T1iOzGkMZAaUztI6Vkeu0lqJO0a + sEllrwdO5ipxEcUwJ36XsiuqtitE5952gRjonXUwKeBrk3P+6ZrGYE/ORpdriwGJ + xvxSXaaonLofOWiVkGNeL1yegC++KXkqmrXaZNN455BUNYX6V6nGXPagw3Pbr90i + 7/oKs40MdM9ptOa5nZXFWzCuIk3jvSpDVpKdxWmXGJp5oqXichnFtbEtG3K1AdRo + AQkCEMz3XrOR6OycfiokFZBbPYg+4m9tqI3XpOl1Gm5p/73xrIhVJivH6oqKrgHC + Q0ridYzEsC6yziLV7GpLv2I6j7DHSbxwNSIGM24STndqSrepRrUAP9locvAR03v3 + 43NMnX4bMz4= + =ojrR + -----END PGP MESSAGE----- + fp: BD1AAF9D8170F4BEE437365FF6F0933799CFEBCD + - created_at: "2025-04-01T00:17:55Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + hQIMAy5t8IMoPu4VARAAhLpMx5PiD/MXS29s0e6y/jw7za7XlM/0ys8lXx2CFWwV + v3ZRZvVYgZyR0K0NZJ43WSU/SC1Ma18jbrh2MLbCktil3Gab5FM1WD1x+pQm2TOH + V5TjSJbx+6vWJY8cuzAaLFQGNHGvL6THxbs70nBW9StoLAcT1wY03gPWcrp/zcup + pHIHUoiL7/zRhAtoLai+t4kcvQNzt1v+5Nj7tsVZ+nB+JZkKXVxV0UT0PIVt+5i2 + bzzq0a9RdsnnD4HrYhhCmUk/toPMHY9TRF5PVhqCoykP0oZ17JszU07yKgonyOZT + qAFKqPdN72kk9GgASe+kpzCRwuQjCsmhzsoZAjzleSeUEDNLwNUNEF7XRLJ00ZyW + 46V9AQsVfaBXR8rvFEXBf3McDBIAh3M3CtGe9a8TSZatsWNHjfUsWBD5PgNoYBFb + ilqL0TSZZCqU8oMHlE/oXjC2PPTGbKFDeqMTwnirA7nh2S2MI1Ky/a+3m865dNBf + NDNMICczkwA9e4/9VphgYOUSb367o9dMx5Fn3MEFuuelMVEZxlaTaxXmUslSFVJw + 9mR6hg/ndi9CkhxcS3TWKn/LUYSXF+T7FankpNzgiq7FsBcPEfhUW5hFco03AFni + 71oP+MVGq7tN/P/j3g7JFZuCoLH9ISiGxwCkxAn7SYdPtWKC0OenKU7+6BdV+8nU + aAEJAhCR9rod9+niLrqlg1QUgzhE9rvw3A8YJudnBQXB3ylc6D2FWqLmKEJMHj7p + A81SlbcvqX1oyg73WeoOK139bF465egwaqkJPkVy1jpGesyR9bqVc+AAaex+LGNe + ALTM9W1yFCJy + =GkmJ + -----END PGP MESSAGE----- + fp: 687802D4DFD8AA82EA55666CF7DADAC782D7663D + encrypted_regex: ^(data|stringData)$ + version: 3.9.4 diff --git a/kubernetes/main/apps/download/manga-watch/ks.yaml b/kubernetes/main/apps/download/manga-watch/ks.yaml new file mode 100644 index 00000000..4eff9069 --- /dev/null +++ b/kubernetes/main/apps/download/manga-watch/ks.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/kustomize.toolkit.fluxcd.io/kustomization_v1.json +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: manga-watch + namespace: flux-system +spec: + timeout: 5m + interval: 10m + targetNamespace: download + path: ./kubernetes/main/apps/download/manga-watch/app + prune: true + sourceRef: + kind: GitRepository + name: home-cluster + decryption: + provider: sops + secretRef: + name: sops-gpg + postBuild: + substituteFrom: + - kind: ConfigMap + name: cluster-settings + - kind: Secret + name: cluster-secrets