embystream

Crates.ioembystream
lib.rsembystream
version0.0.16
created_at2025-08-01 04:17:00.25884+00
updated_at2025-08-27 11:39:20.449008+00
descriptionAnother Emby streaming application (frontend/backend separation) written in Rust.
homepagehttps://github.com/Open-PiliPili/EmbyStream
repositoryhttps://github.com/Open-PiliPili/EmbyStream
max_upload_size
id1776089
size579,239
OpenPiliPili (Open-PiliPili)

documentation

README

EmbyStream

EmbyStream Logo

EmbyStream

A highly customizable, decoupled frontend/backend application for Emby, written entirely in Rust.

Telegram Commit Activity Top Language Github License Linux CI Wiki

PART 1. About

EmbyStream is a highly customizable, decoupled frontend/backend application for Emby. It is written entirely in Rust for ultimate performance and memory safety.

To learn more about the architecture of a decoupled Emby setup, please refer to Wiki.

Screenshot:

PART 2. Features

  • Dual-Mode Support: Can operate as both a frontend and backend service simultaneously, or as standalone services.
  • Universal Compatibility: Supports all versions of Emby.
  • Multiple Backend Types:
    • disk: For locally mounted storage.
    • openlist: For integration with OpenList.
    • direct_link: For direct links or CDN streaming.
  • STRM Format Support: Perfectly compatible with .strm files, integrating seamlessly with plugins like StrmAssistant.
  • Link Encryption: Secures data transmission with link encryption.
  • Link Expiration Protection: All generated media links automatically expire after a configurable duration, preventing unauthorized redistribution.
  • User-Agent Filtering: Includes both allowlist and denylist modes for precise access control.
  • Anti-Reverse Proxy Filtering: Prevents unauthorized playback by restricting access to a specified host.
  • Speed Limit Support: Supports configurable speed limits per user device, with no limit applied by default.

PART 3. Install

From Cargo Crates

cargo install embystream

From Source (with Cargo)

  1. Clone the repository:

    git clone https://github.com/Open-PiliPili/EmbyStream.git
    
  2. Enter the directory and build the project:

    cd EmbyStream && cargo build --release
    
  3. Copy the compiled binary to your system's PATH:

    Linux:

    cp ./target/release/embystream /usr/bin
    

    macOS:

    cp ./target/release/embystream /usr/local/bin
    

From Docker

You can access the Docker Hub URL below and use Docker to install the image.
DockerHub: openpilipili/embystream

From Binaries

You can download pre-compiled binaries for macOS and Linux from the GitHub Releases page. Simply unzip the file and add the embystream executable to your $PATH.

PART 4. Run

Create config.toml based on one of the two templates below, and modify the contents as needed afterward.

frontend.toml
backend.toml

[!NOTE] The dual mode simply requires you to fill in both the frontend and backend configuration sections, and set the stream_mode in the template configuration file to dual.

With Binaries

## Default
/usr/bin/embystream run

## Custom
/usr/bin/embystream run --config "$HOME/.config/embystream/config.toml"

With Docker Run

docker run -d \
  --name ${CONTAINER_NAME:-embystream} \
  -p 50001:50001 \
  -e TZ="Asia/Shanghai" \
  -e PUID=1000 \
  -e PGID=1000 \
  -e UMASK=022 \
  -v ./config/config.toml:/config/embystream/config.toml \
  --privileged \
  --log-driver json-file \
  --log-opt max-size=50m \
  --log-opt max-file=3 \
  --restart unless-stopped \
  openpilipili/embystream:latest

With Docker Compose Run

Reference: docker-compose.yaml

docker-compose pull && docker-compose up -d

PART 5. CLI

Another Emby streaming application (frontend/backend separation) written in Rust.

Usage: embystream [COMMAND]

Commands:
  run   
  help  Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

PART 6. License

Copyright (c) 2025 open-pilipili.

EmbyStream is licensed under the GPL-V3 License.

Commit count: 241

cargo fmt