Import the MetaMesh app family from Worph/AppStore

23 apps (MetaCore, the library/network/client tiers and 13 MetaFeeder*)
move out of the general-purpose Worph/AppStore into their own store so the
MetaMesh family releases on its own cadence.

- asset URLs repointed to cdn.jsdelivr.net/gh/Worph/MetaAppStore@main
- store scaffolding added (category/recommend/featured lists, licence,
  contributing, gitattributes)
- psd-source/meta-icons-v2 icon generator follows the apps

MetaMCP stays in Worph/AppStore: it is third-party metatool-ai software,
not part of MetaMesh.
This commit is contained in:
Worph
2026-09-13 16:18:29 +00:00
parent 998eba19f4
commit 39f82e1f96
145 changed files with 12964 additions and 1 deletions
+150
View File
@@ -0,0 +1,150 @@
name: metastremio
services:
metastremio:
image: ghcr.io/worph/meta-stremio:1.1.0
cpu_shares: 50
container_name: metastremio
restart: unless-stopped
# Runs as root so it can write its service registration file into
# /meta-core/services/ (the shared volume is root-owned by meta-core).
user: "0:0"
# Stremio addon port
expose:
- 7000
volumes:
# Shared infrastructure state (leader election, Redis dump, service discovery)
# Owned by MetaCore; mounted rw here for service registration + leader reads.
- ${DATA_ROOT:-/DATA}/AppData/metacore/meta-core:/meta-core:rw
# Transcoding cache
- ${DATA_ROOT:-/DATA}/AppData/metastremio/cache:/data/cache
# Note: no /files mounts — files are accessed via WebDAV from MetaCore
# (Architecture V3). MetaCore is the single source of truth for media files.
environment:
- META_CORE_PATH=/meta-core
- CACHE_DIR=/data/cache
- SEGMENT_DURATION=4
- PREFETCH_SEGMENTS=4
- SCHEME=auto
- SERVICE_NAME=meta-stremio
- SERVICE_VERSION=1.0.0
- BASE_URL=https://metastremio-$APP_DOMAIN
# Use direct connection - discovers Redis via meta-core leader info
- STORAGE_MODE=direct
- TZ=$TZ
labels:
# No auth - public Stremio addon
caddy_0: metastremio-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 7000}}"
caddy_1: metastremio-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 7000}}"
caddy_2: metastremio-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 7000}}"
networks:
- pcs
networks:
pcs:
name: ${APP_NET:-pcs}
external: true
x-casaos:
architectures:
- amd64
- arm64
author: Worph Team
category: Media
developer: Aptero Team
description:
en_us: |
**Stream your media library directly to Stremio with automatic transcoding.**
MetaStremio is a Stremio addon that connects to your MetaMesh-indexed media library. Browse movies and TV shows with rich metadata, stream with HLS transcoding, and enjoy your personal collection in Stremio.
**Key Features:**
- **Stremio Integration** - Native addon for the Stremio media center
- **HLS Transcoding** - On-the-fly transcoding for any device compatibility
- **Rich Metadata** - Movie/TV info, posters, descriptions from TMDB
- **IMDB Lookup** - Search by IMDB ID to find matching local files
- **Adaptive Streaming** - Automatic quality adjustment based on bandwidth
- **Episode Browser** - Full TV series support with season/episode navigation
- **Direct Play** - Stream original files when transcoding isn't needed
**Requires:** MetaCore (install first)
**How to use:** Install the addon in Stremio using the manifest URL from the dashboard
fr_fr: |
**Diffusez votre bibliotheque multimedia directement vers Stremio avec transcodage automatique.**
MetaStremio est un addon Stremio qui se connecte a votre bibliotheque indexee par MetaMesh. Parcourez films et series TV avec metadonnees riches, streamez avec transcodage HLS.
**Fonctionnalites Cles:**
- **Integration Stremio** - Addon natif pour le centre multimedia Stremio
- **Transcodage HLS** - Transcodage a la volee pour compatibilite tous appareils
- **Metadonnees Riches** - Infos films/TV, affiches, descriptions depuis TMDB
- **Recherche IMDB** - Recherchez par ID IMDB pour trouver les fichiers locaux correspondants
- **Streaming Adaptatif** - Ajustement automatique de la qualite selon la bande passante
- **Navigateur d'Episodes** - Support complet des series TV avec navigation saison/episode
**Necessite:** MetaCore (installer en premier)
tagline:
en_us: Stremio addon for your personal media library - HLS transcoding and TMDB metadata
fr_fr: Addon Stremio pour votre bibliotheque personnelle - Transcodage HLS et metadonnees TMDB
title:
en_us: MetaStremio
icon: https://cdn.jsdelivr.net/gh/Worph/MetaAppStore@main/Apps/MetaStremio/icon.png
screenshot_link:
- https://cdn.jsdelivr.net/gh/Worph/MetaAppStore@main/Apps/MetaStremio/screenshot-1.png
- https://cdn.jsdelivr.net/gh/Worph/MetaAppStore@main/Apps/MetaStremio/screenshot-2.png
- https://cdn.jsdelivr.net/gh/Worph/MetaAppStore@main/Apps/MetaStremio/screenshot-3.png
thumbnail: https://cdn.jsdelivr.net/gh/Worph/MetaAppStore@main/Apps/MetaStremio/thumbnail.png
index: /
store_app_id: metastremio
main: metastremio
is_uncontrolled: false
tips:
before_install:
en_us: |
**Requires MetaCore** - Install MetaCore first for Redis and metadata storage.
MetaStremio is a public Stremio addon (no authentication required).
**After installation:**
1. Open the dashboard at `https://metastremio-$APP_DOMAIN/`
2. Copy the manifest URL
3. Add it as an addon in Stremio
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
# schema_version 2 is required for `folders`: an older Maison refuses the app
# outright rather than starting it without its directories.
x-compose-app:
schema_version: 2
# Created and chowned by Maison before any image is pulled, before any hook
# runs and before the containers start — on the first boot and every one after.
# Compose would otherwise create a missing bind source as a root-owned dir.
folders:
- path: /DATA/AppData/metacore/meta-core
user: $PUID
group: $PGID
- path: /DATA/AppData/metastremio/cache
user: $PUID
group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metastremio-${domain}
webui-path: "/"
Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

+50
View File
@@ -0,0 +1,50 @@
# MetaStremio — Rationale
## What deviation / exception is being requested
1. The addon endpoint is **served without an authentication gate** — no AppShield sidecar,
the Caddy labels point straight at the container.
2. `metastremio` runs `user: 0:0`.
3. It mounts `/DATA/AppData/metacore/meta-core` — another app's AppData directory.
## Why it is necessary
1. A Stremio addon is consumed by the **Stremio client**, not by a browser. The client
fetches `/manifest.json` and the catalog/stream endpoints over plain HTTP with no cookie
jar, no redirect handling and no way to complete an interactive OIDC login. Putting
AppShield in front makes the addon uninstallable in Stremio: the client receives the
Authelia login page instead of JSON and reports the addon as invalid. This is the same
class of exception the guidelines allow for a public endpoint.
2. MetaStremio writes its service registration into `/meta-core/services/`, a directory
created and owned by MetaCore's root-running container.
3. `/meta-core` is the shared leader-election and service-discovery directory. MetaCore is
a hard prerequisite of this app.
## Security mitigations in place
- The addon URL is **unguessable in practice**: it is `metastremio-<user>.<domain>`, a
per-user hostname on the user's own PCS.
- The container mounts **no user media**. Under Architecture V3 it has no `/files` mounts
at all; every byte it serves is fetched over WebDAV from MetaCore and is bounded by what
MetaCore exposes.
- It writes only to `/DATA/AppData/metastremio/cache/` (transcoding segments), declared in
`x-compose-app.folders`.
- `cpu_shares: 50`; image tag pinned.
## Alternatives considered and rejected
- **AppShield in front of everything.** Breaks the app completely — see above.
- **AppShield with `ALLOWED_PATHS` for the addon routes.** With `AUTH_HASH` inert under
Maison, an allowed path is reachable with no credential at all, so this is the current
arrangement with extra moving parts and a misleading "it's protected" appearance.
- **`OAUTH_RESOURCE` (OAuth 2.1 Bearer) on the addon paths.** The correct answer for
machine clients in general, but Stremio has no OAuth support; it would still break.
- **A shared-secret path prefix in the manifest URL.** Considered as a follow-up; it moves
the secret into a URL the user pastes around, and Stremio surfaces addon URLs in its UI.
## Data protection
MetaStremio stores no user data of its own beyond a transcoding cache that is safe to
delete. Because it is a public endpoint, the user should treat the addon URL as the access
control: anyone with it can browse the catalog the user's own MetaCore exposes. This is
stated in `tips.before_install`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB