name: metafeedersuwayomi # ============================================================================= # MetaFeeder · Suwayomi — the comics/manga CHAPTER tier for MetaMesh. # # Turns a work into actual chapters by searching the operator's Suwayomi, and # (since 1.0.3) mints its own work cards for free-text search, so it works on its # own. Split out of the former MetaFeeder · Comic app; **MetaFeeder · AniList** # is the optional identity tier beside it. # # ⚠ **Suwayomi itself is a SEPARATE app — install it first.** This feeder ships # pointed at `http://suwayomi` (port 80), the container the stock **Suwayomi** # store app publishes on the shared `pcs` network. # # ⚠ **Give the feeder Suwayomi's login.** The stock app runs # `AUTH_MODE: simple_login`; enter its admin password (Maison → Suwayomi → # credentials) on this feeder's config page. Only this feeder talks to # Suwayomi — readers get chapters through the gateway — so its login stays on. # # ⚠ **Querying Suwayomi WRITES.** Its search and chapter calls are GraphQL # mutations that cache source results into its library database. # # How a chapter is read: its record carries one portable `tachiyomi` locator # (minted from the chapter's address on its SITE, so every box agrees on it). # Opening it makes the gateway redeem it here: the feeder fetches every page # through Suwayomi and answers one CBZ, which the gateway stores once and the # mesh serves from then on. Needs a gateway that redeems `provider-file` # locators and MetaTransport · IPFS ≥ 1.3.4 (64 MiB redeem ceiling). # # It needs, over the shared `pcs` network: # - the **MetaGateway** app — which must list this feeder's URL # (`http://metafeedersuwayomi-feeder:8080`) in its feeders config so it gets discovered. # Discovery is startup-only, so restart the gateway afterwards. # # Everything is scoped under the `metafeedersuwayomi-*` prefix + the per-stack `metafeedersuwayomi` network + # /DATA/AppData/metafeedersuwayomi/ data root, so it installs beside the other Meta* apps with # zero collisions. # ============================================================================= services: # --------------------------------------------------------------------------- # metafeedersuwayomi-feeder — the chapter tier. Resolves a work to titles, # searches every installed source, returns the chapters. Listing fetches no # page: a chapter's pages are fetched once, when a reader first opens it. # --------------------------------------------------------------------------- metafeedersuwayomi-feeder: image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-suwayomi:1.1.0 cpu_shares: 30 container_name: metafeedersuwayomi-feeder mem_limit: 256m memswap_limit: 256m hostname: metafeedersuwayomi-feeder restart: unless-stopped user: "0:0" expose: - 8080 environment: RUST_LOG: "info,meta_feeder=info,suwayomi_feeder=info" META_FEEDER_STATE_DIR: "/data/meta-feeder" # FIRST-BOOT SEEDS only: `base_url`, `username` and `password` are fields # on this feeder's own config page (MetaGateway dashboard → this feeder → # configure), and a value saved there wins. `suwayomi` is the container # the Suwayomi store app publishes on `pcs`, on port 80. SUWAYOMI_URL: "http://suwayomi" # The stock Suwayomi app's login user. Its password is per-install # (Maison → Suwayomi → credentials) and no app can read another's # secret, so it is entered once on the config page. SUWAYOMI_USERNAME: "admin" # ⚠ SUWAYOMI_MAX_CHAPTERS is deliberately NOT set: it bounds how many # chapters are LISTED, and any value can only truncate a long series into # looking short. TZ: "$TZ" volumes: # Persist feeder config.json + redb cache so it survives recreate. - ${DATA_ROOT:-/DATA}/AppData/metafeedersuwayomi/state:/data/meta-feeder:rw healthcheck: test: ["CMD", "curl", "-sf", "http://localhost:8080/health"] interval: 5s timeout: 3s retries: 10 start_period: 5s networks: - pcs networks: pcs: name: ${APP_NET:-pcs} external: true x-casaos: architectures: - amd64 - arm64 author: Worph Team category: Media developer: Aptero Team description: en_us: | **The comics and manga chapter tier for MetaMesh — what gives MetaRead something to read.** MetaFeeder · Suwayomi supplies the *chapters*, from whichever source extensions you installed in the **Suwayomi** app, and mints its own work cards so search works on its own. Add **MetaFeeder · AniList** to name works across sources. **Install Suwayomi first** (a separate app, with a FlareSolverr sidecar so Cloudflare-protected sources work). This feeder arrives pointed at it; give it Suwayomi's admin password on its config page. **You own the sources.** Suwayomi ships exactly one built-in source — *Local source*, which reads CBZ/CBR from its own folder. Everything else is an extension **you** install through the Suwayomi app's own UI. That keeps the scraping and the legal surface outside MetaMesh, exactly as **MetaFeeder · Prowlarr** keeps indexers outside it. **Multi-source by design.** Every installed source that carries a work contributes, and each chapter row offers a chooser across them. **Fetched once, shared after.** Listing a series' chapters costs one upstream call however long it is. A chapter's pages are fetched the first time someone opens it, stored as one CBZ, and served from the mesh from then on. **Requires:** **MetaGateway** — its meta-core stores the resolved records and announces them to the swarm. The gateway must list this feeder in its config. **Pairs with: MetaRead**, the reading client. fr_fr: | **La couche chapitres BD et manga de MetaMesh — ce qui donne à MetaRead quelque chose à lire.** MetaFeeder · Suwayomi fournit les *chapitres*, depuis les extensions de sources installées dans l'app **Suwayomi**, et crée ses propres fiches d'œuvres pour que la recherche fonctionne seule. Ajoutez **MetaFeeder · AniList** pour nommer les œuvres entre sources. **Vous possédez les sources.** Suwayomi n'embarque que *Local source* ; tout le reste est une extension que **vous** installez via l'interface Suwayomi. **Récupéré une fois, partagé ensuite.** Lister les chapitres coûte un appel ; les pages d'un chapitre sont récupérées à sa première ouverture, stockées en un CBZ, puis servies par le maillage. **Nécessite :** les apps **MetaGateway** et **Suwayomi**. **Va avec : MetaRead.** tagline: en_us: Suwayomi — the comics and manga chapter tier for MetaMesh fr_fr: Suwayomi — la couche chapitres BD et manga de MetaMesh title: en_us: MetaFeeder · Suwayomi icon: https://gitea-watch.nsl.sh/metastar/MetaAppStore/raw/branch/main/Apps/MetaFeederSuwayomi/icon.png thumbnail: https://gitea-watch.nsl.sh/metastar/MetaAppStore/raw/branch/main/Apps/MetaFeederSuwayomi/thumbnail.png store_app_id: metafeedersuwayomi is_uncontrolled: false tips: before_install: en_us: | **Install order:** **MetaGateway** first, then **Suwayomi** — the separate store app this feeder reads. This app arrives pointed at `http://suwayomi`; without that app installed it stays healthy and simply finds no chapters. **After installing this app:** 1. In **MetaGateway**, add this feeder from the dashboard's *Add a feeder* box — name `suwayomi-feeder`, URL `http://metafeedersuwayomi-feeder:8080`. The gateway restarts itself: feeder discovery is **startup-only**. 2. Open the **Suwayomi** app and install the source extensions you want, under *Extensions*. Nothing is installed by default. 3. Optionally drop `.cbz` / `.cbr` files into `/DATA/AppData/suwayomi/data/local//` — the built-in *Local source* picks them up with no extension at all. 4. Optionally install **MetaFeeder · AniList** so chapters from several sources converge on one work page. 5. **Give the feeder Suwayomi's login:** copy the admin password from Maison → Suwayomi → credentials into this feeder's config page (*Suwayomi password*). Changed it in Maison later? Enter it here again. This app has no web UI of its own: the **feeder's config page** (Suwayomi URL, username, password, chapters per work) opens from the **MetaGateway** dashboard → this feeder → *configure*. Suwayomi's own UI is the Suwayomi app. **⚠ Querying Suwayomi writes to it.** Rows will appear in its library that you did not add by hand. That is inherent to how the aggregator works. **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/metafeedersuwayomi/state user: $PUID group: $PGID