Sign inSign up

fbartolini/myt-view

By fbartolini

โ€ขUpdated 2 months ago

Image
0

842

fbartolini/myt-view repository overview

โ myt-view

A clean, fast, read-only viewer for a self-hosted video library โ€” video files plus their .info.json sidecars โ€” with basic multi-user auth and per-user watch state. Run the server on your own hardware (NAS, home server, mini-PC) and watch your library in any browser, or with the native iPhone / iPad / Apple TV apps.

  • ๐Ÿ”’ Private by design โ€” no cloud, no analytics, no ads. Your videos stream straight from your server to your device.
  • ๐Ÿ“š Read-only โ€” your library is mounted :ro; myt-view never writes to, moves, or deletes your files.
  • ๐Ÿ‘ฅ Multi-user โ€” each person gets their own sign-in, watch state, and per-channel visibility.
  • ๐ŸŽž๏ธ Direct-play first โ€” plays supported formats as-is; optional opt-in transcoding for other clients.

Website: https://mytview.comโ  ยท Privacy: https://link.mytview.com/privacyโ 


โ Quick start

# docker-compose.yml
services:
  myt-view:
    image: fbartolini/myt-view:latest
    container_name: myt-view
    restart: unless-stopped
    ports:
      - "8700:8700"
    environment:
      ALLOW_SIGNUP: invite          # first account becomes the owner
      # ORIGIN: https://mytview.example.com   # only behind a reverse proxy / TLS
    volumes:
      - /path/to/your/library:/media:ro   # your video library โ€” READ-ONLY
      - myt-view-data:/data               # accounts + watch state + index (keep this)
      # - /path/to/transcodes:/transcodes # optional: device-compatible copies
volumes:
  myt-view-data:
docker compose up -d

Then open http://your-host:8700โ , and sign up โ€” the first account bootstraps the owner. After that, signup requires a single-use invite (from /invite) unless ALLOW_SIGNUP=all.


โ Configuration

โ Volumes
Container pathPurposeNotes
/mediaYour video libraryMount read-only (:ro). myt-view never modifies it.
/dataAccounts, sessions, watch state + the search indexDurable โ€” back this up. The index rebuilds from disk; your users/progress do not.
/transcodesOutput for opt-in device-compatible copiesOptional. Its own writable dir, never inside your library. GC'd on scan.
โ Environment
VariableDefaultPurpose
ALLOW_SIGNUPinviteinvite (first account = owner, then invite-only), all (open signup), or off.
ALLOW_INVITESownerWho may create invite links: owner (only the owner) or all (any user).
ORIGINโ€”Your external URL โ€” set only when behind a reverse proxy / TLS.
TRANSCODE_HWACCEL01 enables Intel VAAPI HW transcoding (needs /dev/dri passthrough; amd64). Falls back to CPU.
TRANSCODE_ALL01 pre-bakes device-compatible copies in the background; unset = on-demand only.

Baked into the image (override only if you must): PORT=8700, HOST=0.0.0.0, MEDIA_ROOT=/media, DB_PATH=/data/index.db, TRANSCODE_DIR=/transcodes.

โ Optional: hardware transcoding (amd64 + Intel iGPU)
    environment:
      TRANSCODE_HWACCEL: "1"
    devices:
      - /dev/dri:/dev/dri

Transcoding is off by default and opt-in. On arm64 (and without a GPU) it uses the CPU (libx264) path. Check the container's VA stack with docker exec myt-view vainfo.


โ Tags & architectures

  • latest, 0.2.0
  • Multi-arch manifest: linux/amd64 and linux/arm64.

โ First run

The first visit hits /login โ†’ Sign up to create the owner account. Point the mobile apps at your server's address and sign in with the same account. Re-index the library any time from the UI (or POST /api/scan); the owner can force a full re-parse from the menu.

Tag summary

Content type

Image

Digest

sha256:fd018ee54โ€ฆ

Size

257.7 MB

Last updated

2 months ago

docker pull fbartolini/myt-view