- Installation
- Configuration (Core System)
- Add Sources & Targets
- API Proxy
- Streaming & Proxy
- Templates
- Mappings
services:
tuliprox:
container_name: tuliprox
image: ghcr.io/euzu/tuliprox-alpine:latest
working_dir: /app
volumes:
- /opt/tuliprox/config:/app/config
- /opt/tuliprox/data:/app/data
- /opt/tuliprox/backup:/app/backup
- /opt/tuliprox/downloads:/app/downloads
- /opt/tuliprox/cache:/app/cache
environment:
- TZ=Europe/Berlin
ports:
- "8901:8901"
restart: unless-stopped
healthcheck:
test: ["CMD", "/app/tuliprox", "-p", "/app/config", "--healthcheck"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10sOpen the Web UI afterward and continue with the configuration.
For a new setup, the usual first goal is:
- add one working input
- create one target
- confirm playlist output
- confirm one stream works
- only then add mapping, filtering, reverse proxy and metadata features
That keeps failures local and makes provider-specific issues much easier to diagnose.
Tuliprox has two main modes:
- CLI mode: process playlists once and exit
- Server mode: run the API, background tasks and Web UI integration
Run once:
cargo run --bin tuliprox -- -c config/config.yml -i config/source.ymlRun as server:
cargo run --bin tuliprox -- -s -c config/config.yml -i config/source.ymlGenerate a UI password hash:
cargo run --bin tuliprox -- --genpwdFor copy-paste Web UI REST API examples with curl and jq, see the
REST API Cookbook.
Usage: tuliprox [OPTIONS]
Options:
-H, --home <HOME>
-p, --config-path <CONFIG_PATH>
-c, --config <CONFIG_FILE>
-i, --source <SOURCE_FILE>
-m, --mapping <MAPPING_FILE>
-T, --template <TEMPLATE_FILE>
-t, --target <TARGET>
-a, --api-proxy <API_PROXY>
-s, --server
-l, --log-level <LOG_LEVEL>
--genpwd
--healthcheck
--scan-library
--force-library-rescan
--dbx
--dbm
--dbms
--dbe
--dbv
--dbx, --dbm, --dbe, --dbv and --dbms open the internal database viewers for Xtream, M3U, EPG, target-id mapping and metadata retry status files.
config/config.yml: application and server configurationconfig/source.yml: inputs, providers, targetsconfig/api-proxy.yml: users and published server URLsconfig/mapping.yml/config/template.yml: optional mapping and template rulesconfig/user.txt: Web UI login credentials (username:hash[:groups]). If:groupsis omitted, the user falls back to the legacyadminassignment. Examples:admin:$argon2id$...andeditor:$argon2id$...:operatorsconfig/groups.txt: RBAC permission group definitions (optional)
Tuliprox resolves its home directory in this order:
--homeTULIPROX_HOME- directory of the
tuliproxbinary
Typical directories below that home:
config/data/data/backup/downloads/web/cache/
All relative paths in the configuration are resolved against that home directory.