Files
MetaAppStore/Apps/MetaTransportTorrent/docker-compose.yml
T

168 lines
6.0 KiB
YAML

name: metatransporttorrent
# One of MetaShare's transport plugins (meta-transport-torrent). MetaShare (the
# hull) reaches it at http://metashare-torrent:3000 over `pcs` — the default entry
# in its plugin list — and probes it every 10 s, so installing or removing this
# app takes effect with no other step. Manage it from MetaShare → Plugins.
#
# It shares MetaShare's data volume (same /data layout the monolith used: the
# `tmp/` → `cache/` promote is one rename(2), and the hull reads plugin-written
# files directly). Its own settings live in its state dir (config.json), edited
# through MetaShare's dashboard.
services:
metashare-torrent:
image: ghcr.io/worph/meta-transport-torrent:1.1.0
container_name: metashare-torrent
hostname: metashare-torrent
restart: unless-stopped
cpu_shares: 20
# Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM instead of swap.
mem_limit: 1g
memswap_limit: 1g
# Clean redb / session shutdown on SIGTERM before docker escalates.
stop_grace_period: 30s
# Root, like MetaShare: the shared data volume is root-owned.
user: 0:0
expose:
- 3000 # transport contract (internal, reached by MetaShare only)
# BitTorrent peer port (librqbit). Must stay published on the host so
# other peers can connect for the torrents this node seeds.
ports:
- "4240:4240"
volumes:
- ${DATA_ROOT:-/DATA}/AppData/metashare/data:/data:rw
- ${DATA_ROOT:-/DATA}/AppData/metatransporttorrent/state:/state:rw
environment:
- META_SHARE_HULL_URL=http://metashare-app:3001
- TZ=$TZ
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:3000/health"]
interval: 10s
timeout: 3s
retries: 10
start_period: 30s
networks:
- metatransporttorrent
- pcs
# OIDC perimeter in front of the plugin's own config page (the tile link).
# MetaShare's dashboard embeds the same page through its own proxy.
metatransporttorrent:
image: ghcr.io/yundera/appshield:2.0.9
cpu_shares: 80
container_name: metatransporttorrent
hostname: metatransporttorrent
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: "metashare-torrent"
BACKEND_PORT: "3000"
LISTEN_PORT: "80"
labels:
caddy_0: metatransporttorrent-${APP_DOMAIN}
caddy_0.import: gateway_tls
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_1: metatransporttorrent-${APP_PUBLIC_IP_DASH}.nip.io
caddy_1.import: gateway_tls
caddy_1.reverse_proxy: "{{upstreams 80}}"
caddy_2: metatransporttorrent-${APP_PUBLIC_IP_DASH}.sslip.io
caddy_2.reverse_proxy: "{{upstreams 80}}"
depends_on:
- metashare-torrent
networks:
- metatransporttorrent
- pcs
networks:
metatransporttorrent:
name: metatransporttorrent
driver: bridge
pcs:
name: ${APP_NET:-pcs}
external: true
x-casaos:
architectures:
- amd64
- arm64
author: Worph Team
category: Media
tags: ["media"]
developer: Aptero Team
main: metatransporttorrent
webui_port: 80
index: /config
description:
en_us: |
**BitTorrent transport for MetaShare.**
Lets MetaShare fetch torrent content **by byte range**, so a video starts
playing in seconds and seeks without downloading the whole file first. What
a viewer genuinely watches is completed in the background and **seeded**
back to the swarm (watch-commit).
**One of MetaShare's transport plugins** — each protocol is its own app, so
you install only the ones you want, and a competing implementation can
replace this one. MetaShare finds it automatically once installed; manage
and configure it from **MetaShare → Plugins** (watch-commit, disk floor,
timeouts).
**Requires:** **MetaShare** (it shares MetaShare's storage).
**Port 4240 (TCP)** is published so other peers can reach the torrents
you seed.
fr_fr: |
**Transport BitTorrent pour MetaShare.**
Permet à MetaShare de récupérer un torrent **par plages d'octets** : la vidéo
démarre en quelques secondes et se parcourt sans tout télécharger. Ce qui est
réellement regardé est complété en arrière-plan puis **partagé** sur le swarm.
**Un des plugins de transport de MetaShare** — chaque protocole est une app à
part. MetaShare le détecte dès l'installation ; gestion et réglages dans
**MetaShare → Plugins**.
**Nécessite :** **MetaShare** (il partage son stockage). Le **port 4240** est
publié pour les pairs distants.
tagline:
en_us: BitTorrent for MetaShare — stream torrents by range, seed what you watch
fr_fr: BitTorrent pour MetaShare — lecture de torrents par plages, partage de ce que vous regardez
title:
en_us: MetaTransport · BitTorrent
icon: https://cdn.jsdelivr.net/gh/Worph/MetaAppStore@main/Apps/MetaTransportTorrent/icon.png
thumbnail: https://cdn.jsdelivr.net/gh/Worph/MetaAppStore@main/Apps/MetaTransportTorrent/thumbnail.png
store_app_id: metatransporttorrent
is_uncontrolled: false
tips:
before_install:
en_us: |
**Install MetaShare first** — this plugin shares its storage and is
driven by it. MetaShare picks it up automatically within ~10 s; check
**MetaShare → Plugins**, where it shows as *live*.
Settings: **MetaShare → Plugins → torrent → configure** (or this app's own
tile). Saving restarts the plugin to apply.
# Maison (Yundera dashboard) configuration. Read in preference to x-casaos.
x-compose-app:
schema_version: 2
folders:
- path: /DATA/AppData/metatransporttorrent/state
user: $PUID
group: $PGID
# Same string as the caddy_0 label, so the tile link and the route agree.
webui-host: metatransporttorrent-${domain}
webui-path: "/config"