MetaPlugin/MetaFeeder/MetaTransport apps: headless services (no AppShield, no Caddy route, no webui); drop parent; MetaFeederUsenet tile → nntmux

This commit is contained in:
Worph
2026-10-04 11:12:44 +00:00
parent 2c64e3c90e
commit ffc06507fc
32 changed files with 86 additions and 1437 deletions
+1 -47
View File
@@ -48,48 +48,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeederanilist
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeederanilist:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeederanilist
hostname: metafeederanilist
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeederanilist-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeederanilist-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeederanilist-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeederanilist-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeederanilist-feeder
networks: networks:
- metafeederanilist
- pcs
networks:
metafeederanilist:
name: metafeederanilist
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -101,9 +61,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeederanilist
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -149,7 +106,7 @@ x-casaos:
dashboard's *Add a feeder* box — name `anilist-feeder`, URL `http://metafeederanilist-feeder:8080`. dashboard's *Add a feeder* box — name `anilist-feeder`, URL `http://metafeederanilist-feeder:8080`.
The gateway restarts itself: feeder discovery is startup-only. The gateway restarts itself: feeder discovery is startup-only.
No other setup. For chapters, also install **MetaFeeder · Suwayomi**. No other setup. For chapters, also install **MetaFeeder · Suwayomi**.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -163,6 +120,3 @@ x-compose-app:
- path: /DATA/AppData/metafeederanilist/state - path: /DATA/AppData/metafeederanilist/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeederanilist-${domain}
webui-path: "/config"
+1 -47
View File
@@ -44,48 +44,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeederarxiv
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeederarxiv:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeederarxiv
hostname: metafeederarxiv
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeederarxiv-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeederarxiv-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeederarxiv-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeederarxiv-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeederarxiv-feeder
networks: networks:
- metafeederarxiv
- pcs
networks:
metafeederarxiv:
name: metafeederarxiv
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -97,9 +57,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeederarxiv
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -137,7 +94,7 @@ x-casaos:
dashboard's *Add a feeder* box — name `arxiv-feeder`, URL `http://metafeederarxiv-feeder:8080`. dashboard's *Add a feeder* box — name `arxiv-feeder`, URL `http://metafeederarxiv-feeder:8080`.
The gateway restarts itself: feeder discovery is startup-only. The gateway restarts itself: feeder discovery is startup-only.
No other setup. No other setup.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -151,6 +108,3 @@ x-compose-app:
- path: /DATA/AppData/metafeederarxiv/state - path: /DATA/AppData/metafeederarxiv/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeederarxiv-${domain}
webui-path: "/config"
+1 -47
View File
@@ -44,48 +44,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeedereuropepmc
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeedereuropepmc:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeedereuropepmc
hostname: metafeedereuropepmc
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeedereuropepmc-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeedereuropepmc-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeedereuropepmc-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeedereuropepmc-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeedereuropepmc-feeder
networks: networks:
- metafeedereuropepmc
- pcs
networks:
metafeedereuropepmc:
name: metafeedereuropepmc
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -97,9 +57,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeedereuropepmc
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -138,7 +95,7 @@ x-casaos:
dashboard's *Add a feeder* box — name `europepmc-feeder`, URL `http://metafeedereuropepmc-feeder:8080`. dashboard's *Add a feeder* box — name `europepmc-feeder`, URL `http://metafeedereuropepmc-feeder:8080`.
The gateway restarts itself: feeder discovery is startup-only. The gateway restarts itself: feeder discovery is startup-only.
No other setup. No other setup.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -152,6 +109,3 @@ x-compose-app:
- path: /DATA/AppData/metafeedereuropepmc/state - path: /DATA/AppData/metafeedereuropepmc/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeedereuropepmc-${domain}
webui-path: "/config"
+1 -47
View File
@@ -46,48 +46,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeedergiphy
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeedergiphy:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeedergiphy
hostname: metafeedergiphy
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeedergiphy-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeedergiphy-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeedergiphy-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeedergiphy-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeedergiphy-feeder
networks: networks:
- metafeedergiphy
- pcs
networks:
metafeedergiphy:
name: metafeedergiphy
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -99,9 +59,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeedergiphy
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -142,7 +99,7 @@ x-casaos:
**API key:** set `GIPHY_API_KEY` in this app's environment (developers.giphy.com), **API key:** set `GIPHY_API_KEY` in this app's environment (developers.giphy.com),
then restart the app. Without it the feeder soft-skips. then restart the app. Without it the feeder soft-skips.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -156,6 +113,3 @@ x-compose-app:
- path: /DATA/AppData/metafeedergiphy/state - path: /DATA/AppData/metafeedergiphy/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeedergiphy-${domain}
webui-path: "/config"
+1 -47
View File
@@ -38,48 +38,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeedergutenberg
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeedergutenberg:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeedergutenberg
hostname: metafeedergutenberg
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeedergutenberg-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeedergutenberg-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeedergutenberg-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeedergutenberg-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeedergutenberg-feeder
networks: networks:
- metafeedergutenberg
- pcs
networks:
metafeedergutenberg:
name: metafeedergutenberg
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -91,9 +51,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeedergutenberg
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -136,7 +93,7 @@ x-casaos:
is listed in its feeders config (`http://metafeedergutenberg-feeder:8080`) so is listed in its feeders config (`http://metafeedergutenberg-feeder:8080`) so
it gets discovered (or add it from the gateway dashboard). No other setup. it gets discovered (or add it from the gateway dashboard). No other setup.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -150,6 +107,3 @@ x-compose-app:
- path: /DATA/AppData/metafeedergutenberg/state - path: /DATA/AppData/metafeedergutenberg/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeedergutenberg-${domain}
webui-path: "/config"
@@ -22,8 +22,8 @@ name: metafeederinternetarchive
services: services:
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# metafeederinternetarchive-feeder — the feeder itself. The gateway reaches it directly on # metafeederinternetarchive-feeder — the feeder itself. The gateway reaches it directly on
# `pcs` for discovery/query/compute; the human sees it through the AppShield # `pcs` for discovery/query/compute; the human configures it
# gate below. # from the MetaGateway dashboard (configure panel).
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
metafeederinternetarchive-feeder: metafeederinternetarchive-feeder:
image: ghcr.io/worph/meta-feeder-internetarchive:1.1.2 image: ghcr.io/worph/meta-feeder-internetarchive:1.1.2
@@ -53,48 +53,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeederinternetarchive
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeederinternetarchive:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeederinternetarchive
hostname: metafeederinternetarchive
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeederinternetarchive-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeederinternetarchive-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeederinternetarchive-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeederinternetarchive-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeederinternetarchive-feeder
networks: networks:
- metafeederinternetarchive
- pcs
networks:
metafeederinternetarchive:
name: metafeederinternetarchive
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -106,9 +66,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeederinternetarchive
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -153,7 +110,7 @@ x-casaos:
The gateway restarts itself: feeder discovery is startup-only. The gateway restarts itself: feeder discovery is startup-only.
No API key and no account: the feeder answers as soon as the gateway No API key and no account: the feeder answers as soon as the gateway
discovers it. Pairs with **MetaListen** for a music client. discovers it. Pairs with **MetaListen** for a music client.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -167,6 +124,3 @@ x-compose-app:
- path: /DATA/AppData/metafeederinternetarchive/state - path: /DATA/AppData/metafeederinternetarchive/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeederinternetarchive-${domain}
webui-path: "/config"
+3 -49
View File
@@ -23,8 +23,8 @@ name: metafeederjamendo
services: services:
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# metafeederjamendo-feeder — the feeder itself. The gateway reaches it directly on # metafeederjamendo-feeder — the feeder itself. The gateway reaches it directly on
# `pcs` for discovery/query/compute; the human sees it through the AppShield # `pcs` for discovery/query/compute; the human configures it
# gate below. # from the MetaGateway dashboard (configure panel).
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
metafeederjamendo-feeder: metafeederjamendo-feeder:
image: ghcr.io/worph/meta-feeder-jamendo:1.1.2 image: ghcr.io/worph/meta-feeder-jamendo:1.1.2
@@ -56,48 +56,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeederjamendo
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeederjamendo:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeederjamendo
hostname: metafeederjamendo
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeederjamendo-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeederjamendo-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeederjamendo-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeederjamendo-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeederjamendo-feeder
networks: networks:
- metafeederjamendo
- pcs
networks:
metafeederjamendo:
name: metafeederjamendo
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -109,9 +69,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeederjamendo
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -160,7 +117,7 @@ x-casaos:
**Client id:** register a free app at developer.jamendo.com, set **Client id:** register a free app at developer.jamendo.com, set
`JAMENDO_CLIENT_ID` in this app's environment, then restart the app. `JAMENDO_CLIENT_ID` in this app's environment, then restart the app.
Without it the feeder soft-skips. Pairs with **MetaListen**. Without it the feeder soft-skips. Pairs with **MetaListen**.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -174,6 +131,3 @@ x-compose-app:
- path: /DATA/AppData/metafeederjamendo/state - path: /DATA/AppData/metafeederjamendo/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeederjamendo-${domain}
webui-path: "/config"
+3 -49
View File
@@ -25,8 +25,8 @@ name: metafeedermusicbrainz
services: services:
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# metafeedermusicbrainz-feeder — the feeder itself. The gateway reaches it directly on # metafeedermusicbrainz-feeder — the feeder itself. The gateway reaches it directly on
# `pcs` for discovery/query/compute; the human sees it through the AppShield # `pcs` for discovery/query/compute; the human configures it
# gate below. # from the MetaGateway dashboard (configure panel).
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
metafeedermusicbrainz-feeder: metafeedermusicbrainz-feeder:
image: ghcr.io/worph/meta-feeder-musicbrainz:1.1.2 image: ghcr.io/worph/meta-feeder-musicbrainz:1.1.2
@@ -55,48 +55,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeedermusicbrainz
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeedermusicbrainz:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeedermusicbrainz
hostname: metafeedermusicbrainz
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeedermusicbrainz-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeedermusicbrainz-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeedermusicbrainz-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeedermusicbrainz-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeedermusicbrainz-feeder
networks: networks:
- metafeedermusicbrainz
- pcs
networks:
metafeedermusicbrainz:
name: metafeedermusicbrainz
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -108,9 +68,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeedermusicbrainz
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -161,7 +118,7 @@ x-casaos:
No API key. For anything playable, also install a bytes tier No API key. For anything playable, also install a bytes tier
(**MetaFeeder · Internet Archive**, **MetaFeeder · Jamendo**) or (**MetaFeeder · Internet Archive**, **MetaFeeder · Jamendo**) or
**MetaFeeder · YouTube**. Pairs with **MetaListen**. **MetaFeeder · YouTube**. Pairs with **MetaListen**.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -175,6 +132,3 @@ x-compose-app:
- path: /DATA/AppData/metafeedermusicbrainz/state - path: /DATA/AppData/metafeedermusicbrainz/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeedermusicbrainz-${domain}
webui-path: "/config"
@@ -36,7 +36,7 @@ services:
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# metafeederopensubtitles-feeder — the feeder (meta-feeder-opensubtitles) hosting # metafeederopensubtitles-feeder — the feeder (meta-feeder-opensubtitles) hosting
# the `opensubtitles` upstream. The gateway core reaches it directly on `pcs` # the `opensubtitles` upstream. The gateway core reaches it directly on `pcs`
# for discovery/query; the human configures it through the AppShield gate below. # for discovery/query; the human configures it from the MetaGateway dashboard (configure panel).
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
metafeederopensubtitles-feeder: metafeederopensubtitles-feeder:
image: ghcr.io/worph/meta-feeder-opensubtitles:1.0.2 image: ghcr.io/worph/meta-feeder-opensubtitles:1.0.2
@@ -57,7 +57,7 @@ services:
environment: environment:
# INFRA-ONLY env (the "config: no env if in webui" rule). The OpenSubtitles # INFRA-ONLY env (the "config: no env if in webui" rule). The OpenSubtitles
# API key and User-Agent are read from the persisted config.json written by # API key and User-Agent are read from the persisted config.json written by
# this feeder's config page (behind the AppShield gate below). # this feeder's config page (opened from the MetaGateway dashboard (configure panel)).
# OPENSUBTITLES_API_KEY / OPENSUBTITLES_USER_AGENT exist only as first-boot # OPENSUBTITLES_API_KEY / OPENSUBTITLES_USER_AGENT exist only as first-boot
# seeds; don't set them here. META_FEEDER_STATE_DIR is left at its default # seeds; don't set them here. META_FEEDER_STATE_DIR is left at its default
# (/data/meta-feeder), which is what the volume below mounts. # (/data/meta-feeder), which is what the volume below mounts.
@@ -74,49 +74,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeederopensubtitles
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config UI (set the OpenSubtitles API key)
# behind Yundera OIDC SSO. container_name == subdomain prefix. The gateway
# still reaches the feeder directly on `pcs` (this gate is for the human
# only); index → /config.
# ---------------------------------------------------------------------------
metafeederopensubtitles:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeederopensubtitles
hostname: metafeederopensubtitles
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeederopensubtitles-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeederopensubtitles-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeederopensubtitles-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeederopensubtitles-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeederopensubtitles-feeder
networks: networks:
- metafeederopensubtitles
- pcs
networks:
metafeederopensubtitles:
name: metafeederopensubtitles
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -128,9 +87,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeederopensubtitles
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -211,7 +167,7 @@ x-casaos:
1. Get a free **OpenSubtitles API key** — opensubtitles.com → sign in → 1. Get a free **OpenSubtitles API key** — opensubtitles.com → sign in →
*API consumers* → create a consumer and copy its key. No account *API consumers* → create a consumer and copy its key. No account
password is needed here: this feeder only searches. password is needed here: this feeder only searches.
2. Open this app's config UI (the dashboard link), paste it into 2. Open its config panel (the **MetaGateway** dashboard → this feeder → *configure*), paste it into
**OpenSubtitles API key** and save. Leave **User-Agent** blank unless **OpenSubtitles API key** and save. Leave **User-Agent** blank unless
OpenSubtitles asks you to use your registered app name. The feeder OpenSubtitles asks you to use your registered app name. The feeder
restarts itself to apply the key. restarts itself to apply the key.
@@ -227,7 +183,7 @@ x-casaos:
**Searches must ask for subtitles** (`fileType:subtitle`). A plain search **Searches must ask for subtitles** (`fileType:subtitle`). A plain search
box query never reaches this feeder. box query never reaches this feeder.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -241,6 +197,3 @@ x-compose-app:
- path: /DATA/AppData/metafeederopensubtitles/state - path: /DATA/AppData/metafeederopensubtitles/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeederopensubtitles-${domain}
webui-path: "/config"
+6 -49
View File
@@ -32,8 +32,8 @@ services:
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# metafeederprowlarr-feeder — the feeder (meta-feeder-torznab) running the # metafeederprowlarr-feeder — the feeder (meta-feeder-torznab) running the
# Prowlarr/Torznab source. The gateway reaches it directly on `pcs` for # Prowlarr/Torznab source. The gateway reaches it directly on `pcs` for
# discovery/query/compute; the human configures it through the AppShield gate # discovery/query/compute; the human configures it
# below. # from the MetaGateway dashboard (configure panel).
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
metafeederprowlarr-feeder: metafeederprowlarr-feeder:
# Image name is `meta-feeder-torznab` — the repo (and therefore the ghcr # Image name is `meta-feeder-torznab` — the repo (and therefore the ghcr
@@ -56,8 +56,8 @@ services:
environment: environment:
# INFRA-ONLY env (the "config: no env if in webui" rule). Operator config — # INFRA-ONLY env (the "config: no env if in webui" rule). Operator config —
# Prowlarr indexers + API key, TMDB token / language, meta-core URL — is # Prowlarr indexers + API key, TMDB token / language, meta-core URL — is
# read from the persisted config.json (this feeder's config page behind the # read from the persisted config.json (this feeder's config page, opened from
# AppShield gate); env is only a deprecated first-boot seed. These env vars # 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 # are wiring only: the enrichment sidecars, the enrich callback, the peer id
# and Prowlarr paging. meta-core defaults to the pcs # and Prowlarr paging. meta-core defaults to the pcs
# `http://metacore-app:9000`; Prowlarr is reached as `prowlarr:9696`. # `http://metacore-app:9000`; Prowlarr is reached as `prowlarr:9696`.
@@ -144,43 +144,6 @@ services:
networks: networks:
- metafeederprowlarr - metafeederprowlarr
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config UI (set the Prowlarr key, TMDB token)
# behind Yundera OIDC SSO. container_name == subdomain prefix. The gateway
# still reaches the feeder directly on `pcs` (this gate is for the human only);
# index → /config.
# ---------------------------------------------------------------------------
metafeederprowlarr:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeederprowlarr
hostname: metafeederprowlarr
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeederprowlarr-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeederprowlarr-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeederprowlarr-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeederprowlarr-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeederprowlarr-feeder
networks:
- metafeederprowlarr
- pcs
networks: networks:
metafeederprowlarr: metafeederprowlarr:
name: metafeederprowlarr name: metafeederprowlarr
@@ -196,9 +159,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeederprowlarr
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -265,14 +225,14 @@ x-casaos:
1. In **Prowlarr**: complete its first-run wizard, add one or more 1. In **Prowlarr**: complete its first-run wizard, add one or more
indexers (torrent or usenet), then copy the **API Key** indexers (torrent or usenet), then copy the **API Key**
(Settings → General). (Settings → General).
2. Open this app's config UI (the dashboard link). Paste the Prowlarr key 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 into the indexer's API-key field; optionally set a TMDB v4 token for
posters. Save — the feeder reloads automatically. posters. Save — the feeder reloads automatically.
3. In **MetaGateway**, make sure this feeder is listed in its feeders 3. In **MetaGateway**, make sure this feeder is listed in its feeders
config (`http://metafeederprowlarr-feeder:8080`) so it gets config (`http://metafeederprowlarr-feeder:8080`) so it gets
discovered. discovered.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -289,6 +249,3 @@ x-compose-app:
- path: /DATA/AppData/metafeederprowlarr/tmdb-cache - path: /DATA/AppData/metafeederprowlarr/tmdb-cache
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeederprowlarr-${domain}
webui-path: "/config"
+1 -47
View File
@@ -45,48 +45,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeederscihub
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeederscihub:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeederscihub
hostname: metafeederscihub
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeederscihub-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeederscihub-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeederscihub-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeederscihub-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeederscihub-feeder
networks: networks:
- metafeederscihub
- pcs
networks:
metafeederscihub:
name: metafeederscihub
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -98,9 +58,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeederscihub
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -147,7 +104,7 @@ x-casaos:
**Mirrors:** set `SCIHUB_MIRRORS` (comma-separated URLs) in this app's **Mirrors:** set `SCIHUB_MIRRORS` (comma-separated URLs) in this app's
environment, then restart the app. Without it the feeder soft-skips. environment, then restart the app. Without it the feeder soft-skips.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -161,6 +118,3 @@ x-compose-app:
- path: /DATA/AppData/metafeederscihub/state - path: /DATA/AppData/metafeederscihub/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeederscihub-${domain}
webui-path: "/config"
+5 -50
View File
@@ -55,7 +55,7 @@ services:
RUST_LOG: "info,meta_feeder=info,suwayomi_feeder=info" RUST_LOG: "info,meta_feeder=info,suwayomi_feeder=info"
META_FEEDER_STATE_DIR: "/data/meta-feeder" META_FEEDER_STATE_DIR: "/data/meta-feeder"
# INFRA-ONLY env, and only a FIRST-BOOT SEED: `base_url` is a field on # INFRA-ONLY env, and only a FIRST-BOOT SEED: `base_url` is a field on
# this feeder's own config page (the dashboard link), and a value saved # this feeder's own config page (the MetaGateway dashboard (configure panel)), and a value saved
# there wins. `suwayomi` is the container the Suwayomi store app publishes # there wins. `suwayomi` is the container the Suwayomi store app publishes
# on `pcs` — change it only to point at a Suwayomi somewhere else, and see # on `pcs` — change it only to point at a Suwayomi somewhere else, and see
# the reachability warning in the header before you do. # the reachability warning in the header before you do.
@@ -78,48 +78,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeedersuwayomi
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeedersuwayomi:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeedersuwayomi
hostname: metafeedersuwayomi
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeedersuwayomi-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeedersuwayomi-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeedersuwayomi-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeedersuwayomi-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeedersuwayomi-feeder
networks: networks:
- metafeedersuwayomi
- pcs
networks:
metafeedersuwayomi:
name: metafeedersuwayomi
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -131,9 +91,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeedersuwayomi
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -210,8 +167,9 @@ x-casaos:
4. Optionally install **MetaFeeder · AniList** so chapters from several sources 4. Optionally install **MetaFeeder · AniList** so chapters from several sources
converge on one work page. converge on one work page.
This app's own dashboard link opens the **feeder's config page** (Suwayomi URL, This app has no web UI of its own: the **feeder's config page** (Suwayomi URL,
chapters per work, chapters pre-loaded) — not Suwayomi. chapters per work, chapters pre-loaded) 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 **⚠ 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. did not add by hand. That is inherent to how the aggregator works.
@@ -219,7 +177,7 @@ x-casaos:
**Suwayomi's own login must stay off** — the reader fetches chapter pages from it **Suwayomi's own login must stay off** — the reader fetches chapter pages from it
unauthenticated, so enabling it gives a library that lists every chapter and can unauthenticated, so enabling it gives a library that lists every chapter and can
open none. open none.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -233,6 +191,3 @@ x-compose-app:
- path: /DATA/AppData/metafeedersuwayomi/state - path: /DATA/AppData/metafeedersuwayomi/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeedersuwayomi-${domain}
webui-path: "/config"
+6 -53
View File
@@ -39,8 +39,8 @@ services:
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# metafeedertmdb-feeder — the feeder (meta-feeder-tmdb) hosting the `tmdb` # metafeedertmdb-feeder — the feeder (meta-feeder-tmdb) hosting the `tmdb`
# upstream. The gateway core reaches it directly on `pcs` for # upstream. The gateway core reaches it directly on `pcs` for
# discovery/query/compute; the human configures it through the AppShield gate # discovery/query/compute; the human configures it
# below. # from the MetaGateway dashboard (configure panel).
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
metafeedertmdb-feeder: metafeedertmdb-feeder:
image: ghcr.io/worph/meta-feeder-tmdb:1.0.3 image: ghcr.io/worph/meta-feeder-tmdb:1.0.3
@@ -59,8 +59,8 @@ services:
environment: environment:
# INFRA-ONLY env (the "config: no env if in webui" rule). Operator config — # INFRA-ONLY env (the "config: no env if in webui" rule). Operator config —
# TMDB token, rate/burst, cards-per-search — is read from the persisted # TMDB token, rate/burst, cards-per-search — is read from the persisted
# config.json written by this feeder's config page (behind the AppShield # config.json written by this feeder's config page (opened from
# gate below). TMDB_TOKEN / TMDB_RATE_PER_SEC / TMDB_BURST / CARD_TOP_N # the MetaGateway dashboard (configure panel)). TMDB_TOKEN / TMDB_RATE_PER_SEC / TMDB_BURST / CARD_TOP_N
# exist only as deprecated first-boot seeds; don't set them here. # exist only as deprecated first-boot seeds; don't set them here.
# META_FEEDER_STATE_DIR is left at its default (/data/meta-feeder), which # META_FEEDER_STATE_DIR is left at its default (/data/meta-feeder), which
# is what the volume below mounts. # is what the volume below mounts.
@@ -78,49 +78,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeedertmdb
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config UI (set the TMDB token, tune the rate
# and cards-per-search) behind Yundera OIDC SSO. container_name == subdomain
# prefix. The gateway still reaches the feeder directly on `pcs` (this gate is
# for the human only); index → /config.
# ---------------------------------------------------------------------------
metafeedertmdb:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeedertmdb
hostname: metafeedertmdb
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeedertmdb-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeedertmdb-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeedertmdb-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeedertmdb-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeedertmdb-feeder
networks: networks:
- metafeedertmdb
- pcs
networks:
metafeedertmdb:
name: metafeedertmdb
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -132,9 +91,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeedertmdb
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -225,7 +181,7 @@ x-casaos:
**After installing this app:** **After installing this app:**
1. Get a free **TMDB v4 read access token** — themoviedb.org → 1. Get a free **TMDB v4 read access token** — themoviedb.org →
Settings → API. (The v4 "Read Access Token", not the v3 API key.) Settings → API. (The v4 "Read Access Token", not the v3 API key.)
2. Open this app's config UI (the dashboard link) and paste it into 2. Open its config panel (the **MetaGateway** dashboard → this feeder → *configure*) and paste it into
**TMDB v4 token**. Leave the rate, burst and cards-per-search fields **TMDB v4 token**. Leave the rate, burst and cards-per-search fields
blank unless you have a reason — the defaults (20 req/s, burst 20, blank unless you have a reason — the defaults (20 req/s, burst 20,
10 cards per search) are sane. Save, then restart this app: the 10 cards per search) are sane. Save, then restart this app: the
@@ -244,7 +200,7 @@ x-casaos:
retrieval feeder — **MetaFeeder · Prowlarr**, **· Usenet** or retrieval feeder — **MetaFeeder · Prowlarr**, **· Usenet** or
**· Tribler**. **· Tribler**.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -258,6 +214,3 @@ x-compose-app:
- path: /DATA/AppData/metafeedertmdb/state - path: /DATA/AppData/metafeedertmdb/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeedertmdb-${domain}
webui-path: "/config"
+5 -48
View File
@@ -67,8 +67,8 @@ services:
# metafeedertribler-feeder — the tribler feeder (dedicated meta-feeder-tribler # metafeedertribler-feeder — the tribler feeder (dedicated meta-feeder-tribler
# image). A thin client of tribler-instance; self-publishes resolved records to # image). A thin client of tribler-instance; self-publishes resolved records to
# the shared meta-core + drives the bundled enrichment plugins. The gateway # the shared meta-core + drives the bundled enrichment plugins. The gateway
# reaches it directly on `pcs`; the human configures it through the AppShield # reaches it directly on `pcs`; the human configures it
# gate below. # from the MetaGateway dashboard (configure panel).
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
metafeedertribler-feeder: metafeedertribler-feeder:
image: ghcr.io/worph/meta-feeder-tribler:1.0.6 image: ghcr.io/worph/meta-feeder-tribler:1.0.6
@@ -83,7 +83,7 @@ services:
# INFRA-ONLY env (the "config: no env if in webui" rule). Operator config — # INFRA-ONLY env (the "config: no env if in webui" rule). Operator config —
# Tribler sidecar URL, api key, TMDB token / language, meta-core URL — is # Tribler sidecar URL, api key, TMDB token / language, meta-core URL — is
# read from the persisted config.json (pre-seeded by pre-install-cmd, then # read from the persisted config.json (pre-seeded by pre-install-cmd, then
# editable in the config UI behind the AppShield gate). These env vars are # editable in the config page, opened from the MetaGateway dashboard (configure panel)). These env vars are
# wiring only: enrichment sidecars, the enrich callback, the peer id # wiring only: enrichment sidecars, the enrich callback, the peer id
# (analytics group by it), and the state dir. # (analytics group by it), and the state dir.
RUST_LOG: "info,meta_feeder=info,tribler_feeder=info" RUST_LOG: "info,meta_feeder=info,tribler_feeder=info"
@@ -154,43 +154,6 @@ services:
networks: networks:
- metafeedertribler - metafeedertribler
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config UI (Tribler sidecar URL / api key, TMDB
# token) behind Yundera OIDC SSO. container_name == subdomain prefix. The
# gateway still reaches the feeder directly on `pcs` (this gate is for the
# human only); index → /config.
# ---------------------------------------------------------------------------
metafeedertribler:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeedertribler
hostname: metafeedertribler
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeedertribler-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeedertribler-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeedertribler-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeedertribler-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeedertribler-feeder
networks:
- metafeedertribler
- pcs
networks: networks:
metafeedertribler: metafeedertribler:
name: metafeedertribler name: metafeedertribler
@@ -206,9 +169,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeedertribler
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -262,7 +222,7 @@ x-casaos:
**After installing this app:** **After installing this app:**
1. It works out of the box: the feeder is pre-wired to its bundled Tribler 1. It works out of the box: the feeder is pre-wired to its bundled Tribler
core. Optionally open the config UI (the dashboard link) to set a TMDB core. Optionally open its config panel (the **MetaGateway** dashboard → this feeder → *configure*) to set a TMDB
v4 token for posters, then Save — the feeder reloads automatically. v4 token for posters, then Save — the feeder reloads automatically.
2. In **MetaGateway**, make sure this feeder is listed in its feeders 2. In **MetaGateway**, make sure this feeder is listed in its feeders
config (`http://metafeedertribler-feeder:8080`) so it gets discovered config (`http://metafeedertribler-feeder:8080`) so it gets discovered
@@ -271,7 +231,7 @@ x-casaos:
**Note:** the bundled Tribler core needs a few minutes to bootstrap onto **Note:** the bundled Tribler core needs a few minutes to bootstrap onto
the IPv8 network before search results appear. the IPv8 network before search results appear.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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).
pre-install-cmd: | pre-install-cmd: |
# Seed the bundled Tribler core config (api on 0.0.0.0:8085, key `changeme`). # Seed the bundled Tribler core config (api on 0.0.0.0:8085, key `changeme`).
@@ -309,6 +269,3 @@ x-compose-app:
- path: /DATA/AppData/metafeedertribler/tribler-seed - path: /DATA/AppData/metafeedertribler/tribler-seed
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeedertribler-${domain}
webui-path: "/config"
+11 -49
View File
@@ -303,8 +303,8 @@ services:
# metafeederusenet-feeder — the usenet feeder sidecar (meta-feeder-usenet). # metafeederusenet-feeder — the usenet feeder sidecar (meta-feeder-usenet).
# Reads nntmux's release catalog + shared .nzb store; self-publishes # Reads nntmux's release catalog + shared .nzb store; self-publishes
# resolved records + seeds the `.nzb` manifest to the shared MetaCore. The # resolved records + seeds the `.nzb` manifest to the shared MetaCore. The
# gateway reaches it directly on `pcs`; the human configures it through the # gateway reaches it directly on `pcs`; the human configures it from
# AppShield gate below. # the MetaGateway dashboard (configure panel).
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
metafeederusenet-feeder: metafeederusenet-feeder:
image: ghcr.io/worph/meta-feeder-usenet:1.0.6 image: ghcr.io/worph/meta-feeder-usenet:1.0.6
@@ -323,7 +323,7 @@ services:
# INFRA-ONLY env (the "config: no env if in webui" rule). Operator # INFRA-ONLY env (the "config: no env if in webui" rule). Operator
# config beyond the two DB/path seeds below — TMDB token / language, # config beyond the two DB/path seeds below — TMDB token / language,
# meta-core URL — is read from the persisted config.json (this # meta-core URL — is read from the persisted config.json (this
# feeder's config page behind the AppShield gate). These env vars are # feeder's config page, opened from the MetaGateway dashboard (configure panel)). These env vars are
# wiring only: the enrichment sidecars, the enrich callback, the peer id. # wiring only: the enrichment sidecars, the enrich callback, the peer id.
RUST_LOG: "info,meta_feeder=info" RUST_LOG: "info,meta_feeder=info"
# The peer id stamped into provenance.gateway_peer on every record this # The peer id stamped into provenance.gateway_peer on every record this
@@ -402,43 +402,6 @@ services:
networks: networks:
- metafeederusenet - metafeederusenet
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config UI (nntmux DB URL / nzb path, TMDB
# token) behind Yundera OIDC SSO. container_name == subdomain prefix. The
# gateway still reaches the feeder directly on `pcs` (this gate is for the
# human only); index → /config.
# ---------------------------------------------------------------------------
metafeederusenet:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeederusenet
hostname: metafeederusenet
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeederusenet-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeederusenet-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeederusenet-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeederusenet-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeederusenet-feeder
networks:
- metafeederusenet
- pcs
networks: networks:
metafeederusenet: metafeederusenet:
name: metafeederusenet name: metafeederusenet
@@ -454,9 +417,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeederusenet
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -609,7 +569,7 @@ x-casaos:
full-retention backfill is hundreds of GB. `backfill_days` is the full-retention backfill is hundreds of GB. `backfill_days` is the
knob that bounds it — start small, widen once you see releases. knob that bounds it — start small, widen once you see releases.
7. Open this app's config UI (the dashboard link) to optionally set a 7. Open its config panel (the **MetaGateway** dashboard → this feeder → *configure*) to optionally set a
TMDB v4 token for posters, then Save. TMDB v4 token for posters, then Save.
8. In **MetaGateway**, make sure this feeder is listed in its feeders 8. In **MetaGateway**, make sure this feeder is listed in its feeders
config (`http://metafeederusenet-feeder:8080`) so it gets config (`http://metafeederusenet-feeder:8080`) so it gets
@@ -623,8 +583,8 @@ x-casaos:
<group>` / `sleeping`). `settings.running=0` shows up there as <group>` / `sleeping`). `settings.running=0` shows up there as
`idle`. `idle`.
**Authentication:** the feeder's config UI is protected by Yundera's **Authentication:** the feeder's config page opens from the **MetaGateway**
Authelia (OIDC); nntmux uses its own login (seeded above). dashboard (behind its login); nntmux uses its own login (seeded above).
pre-install-cmd: | pre-install-cmd: |
# Seed nntmux's .env (trap #1 — must be a complete file, see header). # Seed nntmux's .env (trap #1 — must be a complete file, see header).
@@ -903,6 +863,8 @@ x-compose-app:
- path: /DATA/AppData/metafeederusenet/scanner - path: /DATA/AppData/metafeederusenet/scanner
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree. # Same string as nntmux's caddy_0 label, so the tile link and the route agree.
webui-host: metafeederusenet-${domain} # The tile opens nntmux's own admin UI (its own login, its own Caddy route).
webui-path: "/config" # The feeder itself is configured from the MetaGateway dashboard.
webui-host: metafeederusenetnntmux-${domain}
webui-path: "/"
+1 -47
View File
@@ -44,48 +44,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeederwikicommons
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeederwikicommons:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeederwikicommons
hostname: metafeederwikicommons
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeederwikicommons-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeederwikicommons-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeederwikicommons-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeederwikicommons-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeederwikicommons-feeder
networks: networks:
- metafeederwikicommons
- pcs
networks:
metafeederwikicommons:
name: metafeederwikicommons
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -97,9 +57,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeederwikicommons
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -138,7 +95,7 @@ x-casaos:
dashboard's *Add a feeder* box — name `wikicommons-feeder`, URL `http://metafeederwikicommons-feeder:8080`. dashboard's *Add a feeder* box — name `wikicommons-feeder`, URL `http://metafeederwikicommons-feeder:8080`.
The gateway restarts itself: feeder discovery is startup-only. The gateway restarts itself: feeder discovery is startup-only.
No other setup. No other setup.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -152,6 +109,3 @@ x-compose-app:
- path: /DATA/AppData/metafeederwikicommons/state - path: /DATA/AppData/metafeederwikicommons/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeederwikicommons-${domain}
webui-path: "/config"
+3 -49
View File
@@ -26,8 +26,8 @@ name: metafeederyoutube
services: services:
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# metafeederyoutube-feeder — the feeder itself. The gateway reaches it directly on # metafeederyoutube-feeder — the feeder itself. The gateway reaches it directly on
# `pcs` for discovery/query/compute; the human sees it through the AppShield # `pcs` for discovery/query/compute; the human configures it
# gate below. # from the MetaGateway dashboard (configure panel).
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
metafeederyoutube-feeder: metafeederyoutube-feeder:
image: ghcr.io/worph/meta-feeder-youtube:1.1.1 image: ghcr.io/worph/meta-feeder-youtube:1.1.1
@@ -56,48 +56,8 @@ services:
retries: 10 retries: 10
start_period: 5s start_period: 5s
networks: networks:
- metafeederyoutube
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the feeder's config page behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). The gateway still reaches the feeder directly on `pcs`; index → /config.
# ---------------------------------------------------------------------------
metafeederyoutube:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metafeederyoutube
hostname: metafeederyoutube
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metafeederyoutube-feeder"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metafeederyoutube-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metafeederyoutube-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metafeederyoutube-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metafeederyoutube-feeder
networks: networks:
- metafeederyoutube
- pcs
networks:
metafeederyoutube:
name: metafeederyoutube
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -109,9 +69,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Media category: Media
developer: Aptero Team developer: Aptero Team
main: metafeederyoutube
webui_port: 80
index: /config
description: description:
en_us: | en_us: |
@@ -160,7 +117,7 @@ x-casaos:
The gateway restarts itself: feeder discovery is startup-only. The gateway restarts itself: feeder discovery is startup-only.
No API key. For music, also install **MetaFeeder · MusicBrainz** — it No API key. For music, also install **MetaFeeder · MusicBrainz** — it
names the recording a YouTube candidate must match before it is accepted. names the recording a YouTube candidate must match before it is accepted.
**Authentication:** the config UI is protected by Yundera's Authelia (OIDC). **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. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -174,6 +131,3 @@ x-compose-app:
- path: /DATA/AppData/metafeederyoutube/state - path: /DATA/AppData/metafeederyoutube/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metafeederyoutube-${domain}
webui-path: "/config"
@@ -50,50 +50,8 @@ services:
# payload and writes back through the caller. No key, no WebDAV. # payload and writes back through the caller. No key, no WebDAV.
TZ: "$TZ" TZ: "$TZ"
networks: networks:
- metapluginanimedetector
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginanimedetector:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginanimedetector
hostname: metapluginanimedetector
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginanimedetector-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginanimedetector-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginanimedetector-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginanimedetector-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginanimedetector-plugin
networks: networks:
- metapluginanimedetector
- pcs
networks:
metapluginanimedetector:
name: metapluginanimedetector
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -105,9 +63,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginanimedetector
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -161,14 +116,11 @@ x-casaos:
addressable at `http://metapluginanimedetector-plugin:8080` for your own caller — not addressable at `http://metapluginanimedetector-plugin:8080` for your own caller — not
expecting it to light up MetaSort or a MetaFeeder on its own. expecting it to light up MetaSort or a MetaFeeder on its own.
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
# outright rather than starting it without its directories. # outright rather than starting it without its directories.
x-compose-app: x-compose-app:
schema_version: 2 schema_version: 2
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginanimedetector-${domain}
webui-path: "/manifest"
+2 -50
View File
@@ -58,50 +58,8 @@ services:
# expensive to redo; safe to delete, it rebuilds. # expensive to redo; safe to delete, it rebuilds.
- ${DATA_ROOT:-/DATA}/AppData/metapluginffmpeg/cache:/cache:rw - ${DATA_ROOT:-/DATA}/AppData/metapluginffmpeg/cache:/cache:rw
networks: networks:
- metapluginffmpeg
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginffmpeg:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginffmpeg
hostname: metapluginffmpeg
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginffmpeg-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginffmpeg-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginffmpeg-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginffmpeg-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginffmpeg-plugin
networks: networks:
- metapluginffmpeg
- pcs
networks:
metapluginffmpeg:
name: metapluginffmpeg
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -113,9 +71,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginffmpeg
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -174,8 +129,8 @@ x-casaos:
**Requires MetaCore** on the same box: this plugin writes what it **Requires MetaCore** on the same box: this plugin writes what it
produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`). produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`).
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -189,6 +144,3 @@ x-compose-app:
- path: /DATA/AppData/metapluginffmpeg/cache - path: /DATA/AppData/metapluginffmpeg/cache
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginffmpeg-${domain}
webui-path: "/manifest"
+2 -50
View File
@@ -58,50 +58,8 @@ services:
# expensive to redo; safe to delete, it rebuilds. # expensive to redo; safe to delete, it rebuilds.
- ${DATA_ROOT:-/DATA}/AppData/metapluginfileinfo/cache:/cache:rw - ${DATA_ROOT:-/DATA}/AppData/metapluginfileinfo/cache:/cache:rw
networks: networks:
- metapluginfileinfo
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginfileinfo:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginfileinfo
hostname: metapluginfileinfo
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginfileinfo-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginfileinfo-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginfileinfo-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginfileinfo-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginfileinfo-plugin
networks: networks:
- metapluginfileinfo
- pcs
networks:
metapluginfileinfo:
name: metapluginfileinfo
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -113,9 +71,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginfileinfo
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -172,8 +127,8 @@ x-casaos:
**Requires MetaCore** on the same box: this plugin writes what it **Requires MetaCore** on the same box: this plugin writes what it
produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`). produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`).
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -187,6 +142,3 @@ x-compose-app:
- path: /DATA/AppData/metapluginfileinfo/cache - path: /DATA/AppData/metapluginfileinfo/cache
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginfileinfo-${domain}
webui-path: "/manifest"
@@ -55,50 +55,8 @@ services:
EMIT_TITLE_TAGS: "${EMIT_TITLE_TAGS:-}" EMIT_TITLE_TAGS: "${EMIT_TITLE_TAGS:-}"
TZ: "$TZ" TZ: "$TZ"
networks: networks:
- metapluginfilenameparser
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginfilenameparser:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginfilenameparser
hostname: metapluginfilenameparser
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginfilenameparser-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginfilenameparser-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginfilenameparser-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginfilenameparser-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginfilenameparser-plugin
networks: networks:
- metapluginfilenameparser
- pcs
networks:
metapluginfilenameparser:
name: metapluginfilenameparser
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -110,9 +68,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginfilenameparser
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -173,14 +128,11 @@ x-casaos:
from `plugins.yml` (`image:`), with no URL slot — installing this app does from `plugins.yml` (`image:`), with no URL slot — installing this app does
not add `filename-parser` to MetaSort. not add `filename-parser` to MetaSort.
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
# outright rather than starting it without its directories. # outright rather than starting it without its directories.
x-compose-app: x-compose-app:
schema_version: 2 schema_version: 2
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginfilenameparser-${domain}
webui-path: "/manifest"
+2 -50
View File
@@ -55,50 +55,8 @@ services:
# expensive to redo; safe to delete, it rebuilds. # expensive to redo; safe to delete, it rebuilds.
- ${DATA_ROOT:-/DATA}/AppData/metapluginfullhash/cache:/cache:rw - ${DATA_ROOT:-/DATA}/AppData/metapluginfullhash/cache:/cache:rw
networks: networks:
- metapluginfullhash
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginfullhash:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginfullhash
hostname: metapluginfullhash
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginfullhash-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginfullhash-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginfullhash-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginfullhash-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginfullhash-plugin
networks: networks:
- metapluginfullhash
- pcs
networks:
metapluginfullhash:
name: metapluginfullhash
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -110,9 +68,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginfullhash
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -169,8 +124,8 @@ x-casaos:
addressable at `http://metapluginfullhash-plugin:8080` for your own caller — not addressable at `http://metapluginfullhash-plugin:8080` for your own caller — not
expecting it to light up MetaSort or a MetaFeeder on its own. expecting it to light up MetaSort or a MetaFeeder on its own.
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -184,6 +139,3 @@ x-compose-app:
- path: /DATA/AppData/metapluginfullhash/cache - path: /DATA/AppData/metapluginfullhash/cache
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginfullhash-${domain}
webui-path: "/manifest"
+2 -50
View File
@@ -54,50 +54,8 @@ services:
WEBDAV_URL: "http://metacore-app:9000/webdav" WEBDAV_URL: "http://metacore-app:9000/webdav"
TZ: "$TZ" TZ: "$TZ"
networks: networks:
- metapluginjellyfinnfo
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginjellyfinnfo:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginjellyfinnfo
hostname: metapluginjellyfinnfo
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginjellyfinnfo-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginjellyfinnfo-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginjellyfinnfo-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginjellyfinnfo-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginjellyfinnfo-plugin
networks: networks:
- metapluginjellyfinnfo
- pcs
networks:
metapluginjellyfinnfo:
name: metapluginjellyfinnfo
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -109,9 +67,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginjellyfinnfo
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -170,14 +125,11 @@ x-casaos:
**Requires MetaCore** on the same box: this plugin writes what it **Requires MetaCore** on the same box: this plugin writes what it
produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`). produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`).
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
# outright rather than starting it without its directories. # outright rather than starting it without its directories.
x-compose-app: x-compose-app:
schema_version: 2 schema_version: 2
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginjellyfinnfo-${domain}
webui-path: "/manifest"
+2 -50
View File
@@ -50,50 +50,8 @@ services:
# payload and writes back through the caller. No key, no WebDAV. # payload and writes back through the caller. No key, no WebDAV.
TZ: "$TZ" TZ: "$TZ"
networks: networks:
- metapluginlanguage
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginlanguage:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginlanguage
hostname: metapluginlanguage
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginlanguage-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginlanguage-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginlanguage-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginlanguage-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginlanguage-plugin
networks: networks:
- metapluginlanguage
- pcs
networks:
metapluginlanguage:
name: metapluginlanguage
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -105,9 +63,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginlanguage
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -163,14 +118,11 @@ x-casaos:
addressable at `http://metapluginlanguage-plugin:8080` for your own caller — not addressable at `http://metapluginlanguage-plugin:8080` for your own caller — not
expecting it to light up MetaSort or a MetaFeeder on its own. expecting it to light up MetaSort or a MetaFeeder on its own.
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
# outright rather than starting it without its directories. # outright rather than starting it without its directories.
x-compose-app: x-compose-app:
schema_version: 2 schema_version: 2
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginlanguage-${domain}
webui-path: "/manifest"
@@ -54,50 +54,8 @@ services:
WEBDAV_URL: "http://metacore-app:9000/webdav" WEBDAV_URL: "http://metacore-app:9000/webdav"
TZ: "$TZ" TZ: "$TZ"
networks: networks:
- metapluginopensubtitles
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginopensubtitles:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginopensubtitles
hostname: metapluginopensubtitles
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginopensubtitles-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginopensubtitles-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginopensubtitles-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginopensubtitles-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginopensubtitles-plugin
networks: networks:
- metapluginopensubtitles
- pcs
networks:
metapluginopensubtitles:
name: metapluginopensubtitles
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -109,9 +67,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginopensubtitles
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -174,14 +129,11 @@ x-casaos:
**Requires MetaCore** on the same box: this plugin writes what it **Requires MetaCore** on the same box: this plugin writes what it
produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`). produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`).
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
# outright rather than starting it without its directories. # outright rather than starting it without its directories.
x-compose-app: x-compose-app:
schema_version: 2 schema_version: 2
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginopensubtitles-${domain}
webui-path: "/manifest"
@@ -54,50 +54,8 @@ services:
WEBDAV_URL: "http://metacore-app:9000/webdav" WEBDAV_URL: "http://metacore-app:9000/webdav"
TZ: "$TZ" TZ: "$TZ"
networks: networks:
- metapluginstillextractor
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginstillextractor:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginstillextractor
hostname: metapluginstillextractor
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginstillextractor-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginstillextractor-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginstillextractor-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginstillextractor-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginstillextractor-plugin
networks: networks:
- metapluginstillextractor
- pcs
networks:
metapluginstillextractor:
name: metapluginstillextractor
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -109,9 +67,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginstillextractor
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -170,14 +125,11 @@ x-casaos:
**Requires MetaCore** on the same box: this plugin writes what it **Requires MetaCore** on the same box: this plugin writes what it
produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`). produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`).
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
# outright rather than starting it without its directories. # outright rather than starting it without its directories.
x-compose-app: x-compose-app:
schema_version: 2 schema_version: 2
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginstillextractor-${domain}
webui-path: "/manifest"
+2 -50
View File
@@ -54,50 +54,8 @@ services:
WEBDAV_URL: "http://metacore-app:9000/webdav" WEBDAV_URL: "http://metacore-app:9000/webdav"
TZ: "$TZ" TZ: "$TZ"
networks: networks:
- metapluginsubtitle
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginsubtitle:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginsubtitle
hostname: metapluginsubtitle
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginsubtitle-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginsubtitle-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginsubtitle-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginsubtitle-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginsubtitle-plugin
networks: networks:
- metapluginsubtitle
- pcs
networks:
metapluginsubtitle:
name: metapluginsubtitle
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -109,9 +67,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginsubtitle
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -171,14 +126,11 @@ x-casaos:
**Requires MetaCore** on the same box: this plugin writes what it **Requires MetaCore** on the same box: this plugin writes what it
produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`). produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`).
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
# outright rather than starting it without its directories. # outright rather than starting it without its directories.
x-compose-app: x-compose-app:
schema_version: 2 schema_version: 2
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginsubtitle-${domain}
webui-path: "/manifest"
@@ -58,50 +58,8 @@ services:
# expensive to redo; safe to delete, it rebuilds. # expensive to redo; safe to delete, it rebuilds.
- ${DATA_ROOT:-/DATA}/AppData/metapluginsubtitleextractor/cache:/cache:rw - ${DATA_ROOT:-/DATA}/AppData/metapluginsubtitleextractor/cache:/cache:rw
networks: networks:
- metapluginsubtitleextractor
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metapluginsubtitleextractor:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metapluginsubtitleextractor
hostname: metapluginsubtitleextractor
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metapluginsubtitleextractor-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metapluginsubtitleextractor-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metapluginsubtitleextractor-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metapluginsubtitleextractor-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metapluginsubtitleextractor-plugin
networks: networks:
- metapluginsubtitleextractor
- pcs
networks:
metapluginsubtitleextractor:
name: metapluginsubtitleextractor
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -113,9 +71,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metapluginsubtitleextractor
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -175,8 +130,8 @@ x-casaos:
**Requires MetaCore** on the same box: this plugin writes what it **Requires MetaCore** on the same box: this plugin writes what it
produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`). produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`).
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -190,6 +145,3 @@ x-compose-app:
- path: /DATA/AppData/metapluginsubtitleextractor/cache - path: /DATA/AppData/metapluginsubtitleextractor/cache
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metapluginsubtitleextractor-${domain}
webui-path: "/manifest"
+2 -50
View File
@@ -58,50 +58,8 @@ services:
# expensive to redo; safe to delete, it rebuilds. # expensive to redo; safe to delete, it rebuilds.
- ${DATA_ROOT:-/DATA}/AppData/metaplugintmdb/cache:/cache:rw - ${DATA_ROOT:-/DATA}/AppData/metaplugintmdb/cache:/cache:rw
networks: networks:
- metaplugintmdb
- pcs - pcs
# ---------------------------------------------------------------------------
# AppShield gate — the plugin's `/manifest` behind Yundera OIDC SSO.
# container_name == subdomain prefix (the auth-registrar derives the client_id
# from it). Consumers still reach the plugin directly on `pcs`; this gate
# exists so `/process` and `/configure` are never reachable from the internet
# without a session.
# ---------------------------------------------------------------------------
metaplugintmdb:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metaplugintmdb
hostname: metaplugintmdb
restart: unless-stopped
user: "0:0"
expose:
- 80
environment:
OIDC_REGISTRAR_URL: "http://auth-registrar:9092"
REDIRECT_HOST_SUFFIXES: "${APP_DOMAIN},${APP_PUBLIC_IP_DASH}.nip.io,${APP_PUBLIC_IP_DASH}.sslip.io"
BACKEND_HOST: "metaplugintmdb-plugin"
BACKEND_PORT: "8080"
LISTEN_PORT: "80"
labels:
caddy_0: metaplugintmdb-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metaplugintmdb-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metaplugintmdb-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metaplugintmdb-plugin
networks: networks:
- metaplugintmdb
- pcs
networks:
metaplugintmdb:
name: metaplugintmdb
driver: bridge
pcs: pcs:
name: ${APP_NET:-pcs} name: ${APP_NET:-pcs}
external: true external: true
@@ -113,9 +71,6 @@ x-casaos:
author: Worph Team author: Worph Team
category: Developer category: Developer
developer: Aptero Team developer: Aptero Team
main: metaplugintmdb
webui_port: 80
index: /manifest
description: description:
en_us: | en_us: |
@@ -179,8 +134,8 @@ x-casaos:
**Requires MetaCore** on the same box: this plugin writes what it **Requires MetaCore** on the same box: this plugin writes what it
produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`). produces to MetaCore's WebDAV (`http://metacore-app:9000/webdav`).
**Authentication:** the `/manifest` page is protected by Yundera's Authelia **No web UI:** a headless service. Its consumers reach it directly on the
(OIDC). Consumers on the `pcs` network bypass the gate by design. `pcs` network.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos. # Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app # schema_version 2 is required for `folders`: an older Maison refuses the app
@@ -194,6 +149,3 @@ x-compose-app:
- path: /DATA/AppData/metaplugintmdb/cache - path: /DATA/AppData/metaplugintmdb/cache
user: $PUID user: $PUID
group: $PGID group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metaplugintmdb-${domain}
webui-path: "/manifest"
+2 -4
View File
@@ -135,7 +135,5 @@ x-compose-app:
- path: /DATA/AppData/metatransportipfs/state - path: /DATA/AppData/metatransportipfs/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# An extension of MetaShare: no tile of its own, nested under MetaShare's, # No webui-host and no x-casaos hostname/webui_port/port_map: Maison files it
# and listed in the store under MetaShare's Extensions. Presentation only — # under Services (no click target). Its config opens from MetaShare → Plugins.
# lifecycle and backups stay per-app.
parent: metashare
+2 -4
View File
@@ -117,7 +117,5 @@ x-compose-app:
- path: /DATA/AppData/metatransportnzb/state - path: /DATA/AppData/metatransportnzb/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# An extension of MetaShare: no tile of its own, nested under MetaShare's, # No webui-host and no x-casaos hostname/webui_port/port_map: Maison files it
# and listed in the store under MetaShare's Extensions. Presentation only — # under Services (no click target). Its config opens from MetaShare → Plugins.
# lifecycle and backups stay per-app.
parent: metashare
+2 -4
View File
@@ -126,7 +126,5 @@ x-compose-app:
- path: /DATA/AppData/metatransporttorrent/state - path: /DATA/AppData/metatransporttorrent/state
user: $PUID user: $PUID
group: $PGID group: $PGID
# An extension of MetaShare: no tile of its own, nested under MetaShare's, # No webui-host and no x-casaos hostname/webui_port/port_map: Maison files it
# and listed in the store under MetaShare's Extensions. Presentation only — # under Services (no click target). Its config opens from MetaShare → Plugins.
# lifecycle and backups stay per-app.
parent: metashare