199 lines
9.6 KiB
YAML
199 lines
9.6 KiB
YAML
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/<Series Name>/` — 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
|