OpenEasyX

OpenEasyX

Docker app from Raccommode's Repository

Overview

Open EasyX is one private, self-hosted application for discovering, downloading, organizing, browsing, and playing videos and images. It includes download queues, isolated partial downloads, library indexing, favorites, history, watch progress, live-cam playback, local subtitle transcription and translation, browser-assisted plugin login, and a built-in plugin store.

Open EasyX

Open EasyX is one private, self-hosted application for discovering, downloading, organizing, browsing, and playing media: one Node server, one React application, one Docker container, and one media volume.

What is included

  • performer discovery and source association;
  • automatic and manual download queues;
  • isolated partial downloads in media/.downloads, with restart-from-zero recovery;
  • an indexed video and photo library with favorites, history, progress, previews, and statistics;
  • direct live-cam aggregation and playback from installed source plugins;
  • local subtitle transcription and translation;
  • an official, built-in plugin store;
  • additional plugin repositories from GitHub, Gitea, Forgejo, GitLab, or any compatible HTTP(S), SSH, or Git remote;
  • integrated browser login for plugins that need an authenticated session.

No bridge, iframe, or second application runs behind Open EasyX.

Screenshots

One optimized navigation and media library

Open EasyX media library

Built-in and community plugin stores

Open EasyX plugin repositories

Start with Docker Compose

mkdir -p data media plugins-external
docker compose up -d

Open http://localhost:3210. The default Compose project starts one container named open-easyx.

Completed media is organized below /media/<performer>/<source>/. Active transfers stay below /media/.downloads and are never exposed to the library. On restart, interrupted transfers are discarded and queued again from zero.

Local development

Requirements: Node.js 22.5 or newer, Git, FFmpeg, and the downloader helpers used by the plugins you enable.

npm install
npm run dev

Run the full validation suite with:

npm run check

Plugins and stores

Plugins are grouped in the UI by what they add:

  • Sources & discovery — identity search, source discovery, scraping, and download resolution;
  • Live cam — live directories and stream resolution;
  • Features & addons — library hooks and other local features.

The official store lives in plugins/ and cannot be removed. In Plugins → Repositories, an administrator can install another Git repository URL. Open EasyX validates and clones it into /data/plugin-repositories, loads plugins from either its root or plugins/, and lets the administrator update or remove that repository later.

See docs/PLUGINS.md for the SDK contract, or start a store from the public Open EasyX Community Plugins template.

Persistent paths

Container path Purpose
/data databases, sessions, plugin repository checkouts, thumbnails, subtitles, and models
/media completed media library plus private .downloads staging
/plugins optional legacy read-only local plugin folder

Important environment variables include PUID, PGID, EASYX_SCAN_INTERVAL_MINUTES, EASYX_WHISPER_MODEL, EASYX_TRANSLATION_MODEL, and EASYX_LOG_LEVEL.

Container publishing

Every push and pull request runs tests, TypeScript, the production web build, a Docker build, and runtime checks. Successful pushes publish multi-architecture images to ghcr.io/raccommode/open-easyx with latest, branch, tag, and commit SHA tags.

Responsible use

Only download, retain, and view material you are legally authorized to access. Third-party plugins execute trusted server-side code; review their source before installation.

License

MIT

Install OpenEasyX on Unraid in a few clicks.

Find OpenEasyX in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for OpenEasyX Review the template variables and paths Click Install

Requirements

Open EasyX is intended for content you are legally allowed to access and retain. Third-party plugins execute trusted server-side code, so review them before installation. The application is designed for a private LAN or an authenticated reverse proxy; do not expose port 3210 directly to the public internet. The Data path contains databases, sessions, plugin repositories, thumbnails, subtitles, and downloaded AI models, so protect it and include it in backups. Subtitle transcription and translation can download large models and require significant CPU, memory, and storage. This template uses Unraid's nobody:users identity through PUID 99 and PGID 100 while the container entrypoint prepares writable paths before dropping privileges.

Details

Repository
ghcr.io/raccommode/open-easyx:latest
Last Updated2026-08-26
First Seen2026-08-26

Runtime arguments

Web UI
http://[IP]:[PORT:3210]
Network
bridge
Shell
sh
Privileged
false

Template configuration

Web UI PortPorttcp

Open EasyX web interface and API port. Keep this accessible only on a trusted LAN or through an authenticated reverse proxy. Container port: 3210.

Target
3210
Default
3210
Value
3210
DataPathrw

Stores databases, sessions, plugin repository checkouts, thumbnails, subtitles, logs, and downloaded AI models. Back up and protect this path.

Target
/data
Default
/mnt/user/appdata/open-easyx
Value
/mnt/user/appdata/open-easyx
MediaPathrw

Stores the completed media library and private .downloads staging directory used for active transfers.

Target
/media
Default
/mnt/user/OpenEasyX
Value
/mnt/user/OpenEasyX
External PluginsPathro

Optional legacy directory containing trusted external plugin folders. The built-in plugin store and added Git repositories are stored under Data instead.

Target
/plugins
Default
/mnt/user/appdata/open-easyx/plugins
Value
/mnt/user/appdata/open-easyx/plugins
PUIDVariable

Host user ID used for files written to Data and Media. Unraid's nobody user is UID 99.

Default
99
Value
99
PGIDVariable

Host group ID used for files written to Data and Media. Unraid's users group is GID 100.

Default
100
Value
100
Scan IntervalVariable

Minutes between automatic media-library scans. The minimum effective value is 1 minute.

Target
EASYX_SCAN_INTERVAL_MINUTES
Default
10
Value
10
Whisper ModelVariable

Whisper model used for local subtitle transcription. Larger models require more memory, storage, and processing time.

Target
EASYX_WHISPER_MODEL
Default
small
Value
small
Translation ModelVariable

Hugging Face model used for local subtitle translation.

Target
EASYX_TRANSLATION_MODEL
Default
facebook/nllb-200-distilled-600M
Value
facebook/nllb-200-distilled-600M
Subtitle Chunk SecondsVariable

Subtitle processing chunk length in seconds. Open EasyX constrains this value between 120 and 1800.

Target
EASYX_SUBTITLE_CHUNK_SECONDS
Default
600
Value
600
Log LevelVariable

Application log level, for example fatal, error, warn, info, debug, trace, or silent.

Target
EASYX_LOG_LEVEL
Default
info
Value
info
TimezoneVariable

Timezone used by the container, for example America/Toronto.

Target
TZ
Default
America/Toronto
Value
America/Toronto