258 lines
12 KiB
YAML
258 lines
12 KiB
YAML
name: metafeederprowlarr
|
|
|
|
# =============================================================================
|
|
# MetaFeeder · Prowlarr — a STANDALONE Prowlarr feeder for MetaMesh.
|
|
#
|
|
# Bridges your **Prowlarr** indexers — Torznab/Newznab, torrent AND usenet — into
|
|
# MetaMesh, so releases surface in **MetaWatch**. Prowlarr is the separate store
|
|
# app (container `prowlarr:9696`) that aggregates the indexers.
|
|
#
|
|
# (The Tribler source used to ride in this same app; it was extracted into its
|
|
# own image + app — install **MetaFeeder · Tribler** for decentralized IPv8
|
|
# discovery. This app is now Prowlarr/Torznab-only.)
|
|
#
|
|
# Split out of the MetaGateway stack so the sources stay modular. Self-contained
|
|
# for enrichment: ships its own filename-parser + tmdb plugins.
|
|
#
|
|
# It needs, all reached over the shared `pcs` network:
|
|
# 1. the **Prowlarr** store app (`prowlarr:9696`) — the indexer source.
|
|
# 2. the shared **MetaCore** app (`metacore-app:9000`) — where resolved
|
|
# records + TMDB posters are stored; the shared **MetaShare** app then
|
|
# announces them to the swarm.
|
|
# The **MetaGateway** app must list this feeder's URL
|
|
# (`http://metafeederprowlarr-feeder:8080`) in its feeders config so it
|
|
# discovers + queries it (MetaGateway, MetaCore and this feeder share `pcs`).
|
|
#
|
|
# Everything is scoped under the `metafeederprowlarr-*` prefix + the
|
|
# per-stack `metafeederprowlarr` network + /DATA/AppData/metafeederprowlarr/
|
|
# data root, so it installs alongside the other Meta* apps with zero collisions.
|
|
# =============================================================================
|
|
|
|
services:
|
|
# ---------------------------------------------------------------------------
|
|
# metafeederprowlarr-feeder — the feeder (meta-feeder-torznab) running the
|
|
# Prowlarr/Torznab source. The gateway reaches it directly on `pcs` for
|
|
# discovery/query/compute; the human configures it
|
|
# from the MetaGateway dashboard (configure panel).
|
|
# ---------------------------------------------------------------------------
|
|
metafeederprowlarr-feeder:
|
|
# Image name is `meta-feeder-torznab` — the repo (and therefore the ghcr
|
|
# package, published as ${{ github.repository }}) was renamed. The old
|
|
# `meta-feeder-indexer` package still exists but is frozen at 1.0.23 and
|
|
# receives no further pushes. The APP keeps the `metafeederprowlarr` name.
|
|
image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-torznab:1.0.38
|
|
cpu_shares: 30
|
|
container_name: metafeederprowlarr-feeder
|
|
# Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM
|
|
# instead of swap. 512m -> 1g (2026-09-30): the feeder's steady state on
|
|
# watch.nsl.sh is ~660 MiB (release cache + in-flight torznab pages).
|
|
mem_limit: 1g
|
|
memswap_limit: 1g
|
|
hostname: metafeederprowlarr-feeder
|
|
restart: unless-stopped
|
|
user: "0:0"
|
|
expose:
|
|
- 8080
|
|
environment:
|
|
# INFRA-ONLY env (the "config: no env if in webui" rule). Operator config —
|
|
# Prowlarr indexers + API key, TMDB token / language, meta-core URL — is
|
|
# read from the persisted config.json (this feeder's config page, opened from
|
|
# the MetaGateway dashboard (configure panel)); env is only a deprecated first-boot seed. These env vars
|
|
# are wiring only: the enrichment sidecars, the enrich callback, the peer id
|
|
# and Prowlarr paging. meta-core defaults to the pcs
|
|
# `http://metacore-app:9000`; Prowlarr is reached as `prowlarr:9696`.
|
|
RUST_LOG: "info,meta_feeder=info,meta_feeder::store=debug"
|
|
# The peer id stamped into provenance.gateway_peer on every record this
|
|
# feeder self-publishes. It names the GATEWAY this feeder serves — not the
|
|
# feeder itself — so records are attributed to the gateway that fronts them
|
|
# (analytics group by it). Without it, it falls back to HOSTNAME.
|
|
META_GATEWAY_PEER_ID: "metagateway"
|
|
FILENAME_PARSER_URL: "http://metafeederprowlarr-filename-parser:8080"
|
|
TMDB_PLUGIN_URL: "http://metafeederprowlarr-tmdb:8080"
|
|
META_FEEDER_CALLBACK_URL: "http://metafeederprowlarr-feeder:8080/enrich/callback"
|
|
# LOAD-BEARING at meta-feeder-indexer:1.0.9 — NOT a restatement of the
|
|
# default: that build defaults the page size to 100. 20 is the pacing
|
|
# choice (results stream 20-at-a-time). META_GATEWAY_PROWLARR_MAX_DEPTH
|
|
# was dropped — its 500 did match the default.
|
|
META_GATEWAY_PROWLARR_PAGE_SIZE: "20"
|
|
TZ: "$TZ"
|
|
volumes:
|
|
# Persist feeder config (config.json saved via the config UI) + redb cache.
|
|
# Transient librqbit downloads go to the container's /tmp (off backup).
|
|
- ${DATA_ROOT:-/DATA}/AppData/metafeederprowlarr/state:/data/meta-feeder:rw
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-sf", "http://localhost:8080/health"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 10
|
|
start_period: 5s
|
|
depends_on:
|
|
# service_started (not _healthy): the plugin images ship no healthcheck.
|
|
metafeederprowlarr-filename-parser:
|
|
condition: service_started
|
|
metafeederprowlarr-tmdb:
|
|
condition: service_started
|
|
networks:
|
|
- metafeederprowlarr
|
|
- pcs
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Bundled enrichment plugins (self-contained). filename-parser per file; tmdb
|
|
# once per torrent — tmdb writes posters/backdrops to the gateway core's WebDAV.
|
|
# No healthcheck: these plugin images don't ship one (curl absent).
|
|
# ---------------------------------------------------------------------------
|
|
metafeederprowlarr-filename-parser:
|
|
image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-filename-parser:1.0.5
|
|
cpu_shares: 30
|
|
container_name: metafeederprowlarr-filename-parser
|
|
# Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM
|
|
# instead of swap. Mirrors the dev sub-stack limits.
|
|
mem_limit: 256m
|
|
memswap_limit: 256m
|
|
hostname: metafeederprowlarr-filename-parser
|
|
restart: unless-stopped
|
|
expose:
|
|
- 8080
|
|
environment:
|
|
# Beacon v2: this sidecar serves metafeederprowlarr-feeder only; another consumer
|
|
# (meta-sort's Scan card) sees it as bound elsewhere, never addable.
|
|
BEACON_BINDS: "metafeederprowlarr-feeder"
|
|
EMIT_TITLE_TAGS: "true"
|
|
networks:
|
|
- metafeederprowlarr
|
|
|
|
metafeederprowlarr-tmdb:
|
|
image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-tmdb:1.0.5
|
|
cpu_shares: 30
|
|
container_name: metafeederprowlarr-tmdb
|
|
# Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM
|
|
# instead of swap. Mirrors the dev sub-stack limits.
|
|
mem_limit: 384m
|
|
memswap_limit: 384m
|
|
hostname: metafeederprowlarr-tmdb
|
|
restart: unless-stopped
|
|
expose:
|
|
- 8080
|
|
environment:
|
|
# Beacon v2: this sidecar serves metafeederprowlarr-feeder only; another consumer
|
|
# (meta-sort's Scan card) sees it as bound elsewhere, never addable.
|
|
BEACON_BINDS: "metafeederprowlarr-feeder"
|
|
# Posters land in the gateway core (over pcs) so the ingester seeds them.
|
|
# LOAD-BEARING at metamesh-plugin-tmdb:1.0.0 — do NOT remove.
|
|
# Newer source derives WebDAV from the metaCoreUrl passed on each /process
|
|
# (GET /urls -> webdavUrlInternal), which is why the dev compose omits it. The
|
|
# PUBLISHED image predates that: without this var it logs "WebDAV client
|
|
# unavailable" and silently writes no posters/backdrops, so every record then
|
|
# fails meta-watch's poster gate. Drop only after re-tagging the plugin.
|
|
WEBDAV_URL: "http://metacore-app:9000/webdav"
|
|
volumes:
|
|
- ${DATA_ROOT:-/DATA}/AppData/metafeederprowlarr/tmdb-cache:/cache
|
|
networks:
|
|
- metafeederprowlarr
|
|
- pcs
|
|
networks:
|
|
metafeederprowlarr:
|
|
name: metafeederprowlarr
|
|
driver: bridge
|
|
pcs:
|
|
name: ${APP_NET:-pcs}
|
|
external: true
|
|
|
|
x-casaos:
|
|
architectures:
|
|
- amd64
|
|
- arm64
|
|
author: Worph Team
|
|
category: Media
|
|
developer: Aptero Team
|
|
|
|
description:
|
|
en_us: |
|
|
**A standalone torrent + usenet feeder for the MetaMesh network.**
|
|
|
|
MetaFeeder · Prowlarr bridges your **Prowlarr** indexers
|
|
(Torznab/Newznab — torrent *and* usenet) into MetaMesh, so releases surface
|
|
in **MetaWatch**. It's the torrent/usenet source tier, split out of
|
|
MetaGateway so you can run only the feeders you want.
|
|
|
|
**Self-contained:** ships its own filename-parser + TMDB enrichment, so each
|
|
release gets a clean title, poster and plot.
|
|
|
|
**Source:**
|
|
- **Prowlarr** — Torznab/Newznab indexers, torrent or usenet (reached as
|
|
`prowlarr` on the shared network).
|
|
|
|
**Want decentralized discovery too?** Install **MetaFeeder · Tribler** — the
|
|
Tribler source now lives in its own app.
|
|
|
|
**Also requires:** **MetaGateway** — its meta-core stores the resolved
|
|
records and announces them to the swarm. The gateway must list this feeder
|
|
in its config.
|
|
|
|
fr_fr: |
|
|
**Un feeder torrent + usenet autonome pour le réseau MetaMesh.**
|
|
|
|
MetaFeeder · Prowlarr connecte vos indexeurs **Prowlarr**
|
|
(Torznab/Newznab — torrent *et* usenet) à MetaMesh pour qu'ils apparaissent
|
|
dans **MetaWatch**. C'est la couche de sources torrent/usenet, détachée de
|
|
MetaGateway pour n'exécuter que les feeders souhaités.
|
|
|
|
**Autonome :** embarque ses propres plugins filename-parser + TMDB.
|
|
|
|
**Source :** l'app **Prowlarr** (indexeurs Torznab/Newznab, torrent ou
|
|
usenet, atteinte comme `prowlarr`).
|
|
|
|
**Envie de découverte décentralisée ?** Installez **MetaFeeder · Tribler** —
|
|
la source Tribler est désormais une app dédiée.
|
|
|
|
**Nécessite aussi :** l'app **MetaGateway** (son meta-core stocke et annonce
|
|
les enregistrements).
|
|
|
|
tagline:
|
|
en_us: Standalone Prowlarr/Torznab (torrent + usenet) feeder for MetaMesh
|
|
fr_fr: Feeder Prowlarr/Torznab (torrent + usenet) autonome pour MetaMesh
|
|
|
|
title:
|
|
en_us: MetaFeeder · Prowlarr
|
|
|
|
icon: https://cdn.jsdelivr.net/gh/Worph/MetaAppStore@main/Apps/MetaFeederProwlarr/icon.png
|
|
thumbnail: https://cdn.jsdelivr.net/gh/Worph/MetaAppStore@main/Apps/MetaFeederProwlarr/thumbnail.png
|
|
|
|
store_app_id: metafeederprowlarr
|
|
is_uncontrolled: false
|
|
|
|
tips:
|
|
before_install:
|
|
en_us: |
|
|
**Install order:** install **MetaGateway** first, plus the **Prowlarr**
|
|
store app (Torznab/Newznab).
|
|
|
|
**After installing this app:**
|
|
1. In **Prowlarr**: complete its first-run wizard, add one or more
|
|
indexers (torrent or usenet), then copy the **API Key**
|
|
(Settings → General).
|
|
2. Open its config panel (the **MetaGateway** dashboard → this feeder → *configure*). Paste the Prowlarr key
|
|
into the indexer's API-key field; optionally set a TMDB v4 token for
|
|
posters. Save — the feeder reloads automatically.
|
|
3. In **MetaGateway**, make sure this feeder is listed in its feeders
|
|
config (`http://metafeederprowlarr-feeder:8080`) so it gets
|
|
discovered.
|
|
|
|
**No web UI of its own:** configure it from the **MetaGateway** dashboard → this feeder → *configure* (the gateway proxies this feeder's config page, behind the gateway's login).
|
|
|
|
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
|
|
# schema_version 2 is required for `folders`: an older Maison refuses the app
|
|
# outright rather than starting it without its directories.
|
|
x-compose-app:
|
|
schema_version: 2
|
|
# Created and chowned by Maison before any image is pulled, before any hook
|
|
# runs and before the containers start — on the first boot and every one after.
|
|
# Compose would otherwise create a missing bind source as a root-owned dir.
|
|
folders:
|
|
- path: /DATA/AppData/metafeederprowlarr/state
|
|
user: $PUID
|
|
group: $PGID
|
|
- path: /DATA/AppData/metafeederprowlarr/tmdb-cache
|
|
user: $PUID
|
|
group: $PGID
|