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.
:ro; myt-view never writes to, moves, or deletes your files.Website: https://mytview.comโ ยท Privacy: https://link.mytview.com/privacyโ
# 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.
| Container path | Purpose | Notes |
|---|---|---|
/media | Your video library | Mount read-only (:ro). myt-view never modifies it. |
/data | Accounts, sessions, watch state + the search index | Durable โ back this up. The index rebuilds from disk; your users/progress do not. |
/transcodes | Output for opt-in device-compatible copies | Optional. Its own writable dir, never inside your library. GC'd on scan. |
| Variable | Default | Purpose |
|---|---|---|
ALLOW_SIGNUP | invite | invite (first account = owner, then invite-only), all (open signup), or off. |
ALLOW_INVITES | owner | Who 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_HWACCEL | 0 | 1 enables Intel VAAPI HW transcoding (needs /dev/dri passthrough; amd64). Falls back to CPU. |
TRANSCODE_ALL | 0 | 1 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.
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.
latest, 0.2.0The 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.
Content type
Image
Digest
sha256:fd018ee54โฆ
Size
257.7 MB
Last updated
2 months ago
docker pull fbartolini/myt-view