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:
@@ -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 |
@@ -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 |
Reference in New Issue
Block a user