This is a maintained fork of vanchaxy/plexio. Upstream is dormant (last release May 2025). This fork adds fixes and improvements for self-hosted deployments.
behaviorHints.filenameon stream objects — populates the Stremio-standard field used by clients for release fingerprinting (IntroDB skip intro, Trakt scrobbling, OpenSubtitles hash lookup). Closes a gap vs AIOStreams and other Stremio-standard addons. (upstream PR #69)- Wider default CORS regex — covers localhost on any port, private LAN ranges (
192.168.x.x,10.x.x.x,172.16-31.x.x), Tailscale tailnet domains (*.ts.net), andapp.strem.io. Reduces friction for self-hosted deployments behind reverse proxies or on Tailscale.CORS_ORIGIN_REGEXenv var override is preserved. behaviorHints.videoSizeon stream objects — exposes each version's file size so clients can display or choose by size. (0.3.1)BASE_URLenv var — sets the public origin used for install-URL generation behind a reverse proxy / Tailscale Funnel, instead of relying onwindow.location.origin. (0.3.0)- Server-side sessions (optional) — install URLs can reference a stored session id (
/{session_id}/...) instead of embedding the full config (including the Plex token) as base64. Config is persisted in SQLite under/data; legacy base64 URLs continue to work unchanged. Requires a writable/datavolume (see Installation). (0.4.0) - Encrypted sessions + revocation — stored session config is Fernet-encrypted at rest (
SESSION_ENCRYPTION_KEY, or an auto-generatedsession.keynext to the DB). Operators can list and revoke sessions via admin-gatedGET/DELETE /api/v1/sessions(ADMIN_KEY). (0.4.1) - Configure page uses sessions by default — the configure UI now creates a server-side session on install and generates the short
/{session_id}/manifest.jsonURL (Plex token never in the URL), automatically falling back to the legacy base64 URL if the session store is disabled or unreachable. (0.4.2) - Idempotent session creation — submitting an identical config returns the existing session instead of minting a duplicate, keeping the admin session list clean (e.g. clicking clipboard then Install no longer creates two). (0.4.3)
- Health endpoints —
GET /api/v1/healthis a dependency-aware liveness probe (app + session store; 503 if the store is down), andGET /api/v1/health/{session_id}deep-checks whether that session's Plex backend is actually reachable (reachability only, never the token), so an uptime monitor can catch backend outages rather than just web-server outages. (0.5.0) - Continue Watching & Recently Added catalogs — adds discovery rows to the Stremio board: "Continue Watching" (Plex On Deck — in-progress movies plus next-up/in-progress episodes, the latter surfaced as their parent series, deduped) and "Recently Added", each split into Movies / Shows and shown only for the library types you've configured. Catalog items resolve through the normal meta/stream flow (imdb-matched where Plex has the id). Discovery rows only — these don't feed Stremio's native Continue Watching bar, and a series row opens the show page rather than resuming the exact episode. (0.6.0)
Pull the published image:
docker run -d -p 7777:80 -v plexio-data:/data ghcr.io/natedogg058/plexio:latestOr build from source with docker build -t plexio-fork ..
Persistent storage (sessions): the optional server-side session store keeps a SQLite DB at /data/sessions.db. The image creates /data owned by the unit app user (uid 999), so a Docker named volume (as above) inherits writable ownership automatically. If you bind-mount a host directory instead, chown 999:999 it first. Disable the store entirely with ENABLE_SESSIONS=false, in which case no /data access is needed.
Session env vars: ADMIN_KEY enables and protects the list/revoke endpoints (unset = those endpoints return 403). SESSION_ENCRYPTION_KEY sets the Fernet key for encryption at rest; if unset, a key file is created automatically alongside the database.
See ISSUES for open work. Planned fork-specific additions:
- Documentation expansion for self-hosting behind reverse proxies
- Investigation of upstream toggle-default behaviour
Original upstream README below.
Plexio is an addon that bridges the gap between Plex and Stremio, enabling seamless integration of your Plex media within the Stremio interface. With Plexio, you can discover and stream your Plex content directly in Stremio.
- offers both direct and transcoded streams;
- stream locally or from remote devices;
- allows searching through your Plex library;
- works with Cinemeta and other IMDB-based addons;
- handles media without IMDB matching;
- uses OAuth for safe login without sharing passwords;
- fully open-source with self-hosting support.
If you'd prefer to self-host Plexio, you can do so easily using Docker. Follow these steps:
- Use the following command to start a Plexio instance:
docker run -d -p 7777:80 ghcr.io/vanchaxy/plexio
- Plexio addon will be available at http://localhost:7777/.
- CORS_ORIGIN_REGEX: A regex pattern to define allowed CORS origins
(default:
https?:\/\/localhost:\d+|.*plexio.stream|.*strem.io|.*stremio.com). - PLEX_REQUESTS_TIMEOUT: Timeout for Plex server requests in seconds (default:
20). - CACHE_TYPE: Defines the cache type to use
memory/redis(default:memory). - REDIS_URL: URL for a Redis instance if you use
rediscache (default:redis://redis:6399/0). - PLEX_MATCHING_TOKEN: Auth token for Plex media matching (default:
None). - SENTRY_DSN: DSN for error tracking with Sentry (default:
None).
If you are using Plexio with a Plex server that you do not own (you will see a "shared" badge
next to the server name), you must provide the PLEX_MATCHING_TOKEN environment variable.
This token is an access token from a Plex server you own, which will be used to
query the Plex API and resolve the Plex GUID using IMDB IDs.
To find your Plex authentication token, open any media on a Plex server you own.
Look for the XML data for the media and find the X-Plex-Token in the URL.
Copy the token from the URL.
You can learn more about finding your authentication token in the official Plex article "Finding an authentication token".
- Fork the Repository.
- Clone the Repository:
git clone https://github.com/yourusername/plexio.git
- Create a
.envfile and configure the required environment variables. - Run doker-compose:
docker-compose up --build
For bug reports, feature requests, or general questions, join our Discord support forum.
Alternatively, you can open an issue directly in this repository.