Running a server
Install the server
Run Wren TV with Docker, or as a system service on Linux, macOS or Windows.
Wren TV is a single program that runs in the background as a system service. It needs ffmpeg and ffprobe to read and convert video. The Docker image bundles them.
What you need
- A computer that stays on: a NAS, a home server, a mini PC, a Mac or a Windows PC. Direct play needs very little CPU. Transcoding 4K benefits from a GPU (see hardware acceleration).
- Your movies and shows in folders the server can read. They can be on a network share.
- Port 32500 (TCP) reachable from your devices.
Docker
The image is ghcr.io/ltagroup/wrentv:latest. It bundles jellyfin-ffmpeg, which includes the GPU drivers' ffmpeg
support.
yamlservices:
wrentv:
image: ghcr.io/ltagroup/wrentv:latest
container_name: wrentv
restart: unless-stopped
network_mode: host
environment:
- WRENTV_SERVER_NAME=Wren TV
# - WRENTV_TMDB_API_KEY=your-key
# - WRENTV_HWACCEL=auto # auto | nvenc | qsv | vaapi | none
volumes:
- ./config:/config
- /path/to/media:/media:ro
# Optional: transcode scratch space on fast local disk or RAM
# - /dev/shm/wrentv:/config/transcode
# Intel or AMD GPU (Quick Sync / VAAPI): pass the render node through.
# devices:
# - /dev/dri:/dev/dri
# NVIDIA GPU (needs nvidia-container-toolkit):
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu, video, compute, utility]
bashdocker compose up -d
/configholds the configuration, the database, artwork and certificates. Keep it, and back it up.Mount your media read-only (
:ro). Wren TV never writes to your media folders, except the folders you choose for streaming downloads; mount those writable. Inside Wren TV, use the container's paths, such as/media/Movies.Use
network_mode: hoston Linux, so automatic port forwarding (UPnP) and LAN address detection see your real network. Docker Desktop on macOS and Windows doesn't support it: publish the ports instead:yaml
ports: - "32500:32500"
Linux
Install ffmpeg from your package manager, put the wrentv binary in /usr/local/bin, and install the service:
bashsudo apt install ffmpeg # or dnf, pacman, …
sudo install -m 755 wrentv /usr/local/bin/wrentv
sudo wrentv install # registers a systemd service that starts at boot
sudo wrentv start
sudo wrentv status
The service runs as root and keeps its data in /var/lib/wrentv. If you run wrentv as your own user instead, the
data goes to ~/.local/share/wrentv.
Running as a dedicated user
The repository includes a hardened unit file, deploy/systemd/wrentv.service, that runs as a wrentv user. It adds
that user to the render and video groups, so it can use /dev/dri for hardware transcoding:
bashsudo useradd --system --home /var/lib/wrentv wrentv
sudo cp deploy/systemd/wrentv.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now wrentv
Make sure the wrentv user can read your media folders.
macOS
Install ffmpeg with Homebrew, then install Wren TV as a launchd service. Hardware transcoding uses VideoToolbox, which every Mac has.
bashbrew install ffmpeg
sudo ./wrentv install
sudo ./wrentv start
The data directory is ~/Library/Application Support/Wren TV. A native Mac app is on the way.
Windows
Install ffmpeg. The jellyfin-ffmpeg portable build is recommended. Note where
ffmpeg.exeandffprobe.exeare.Copy
wrentv.exetoC:\Program Files\WrenTV\.From an administrator PowerShell, install and start the service:
powershell
& "C:\Program Files\WrenTV\wrentv.exe" install & "C:\Program Files\WrenTV\wrentv.exe" startThis registers a Windows service named
wrentvthat starts with Windows.If ffmpeg isn't on your
PATH, editC:\ProgramData\WrenTV\wrentv.yaml(created on first start), settranscode.ffmpeg_pathandtranscode.ffprobe_path, and runwrentv.exe restart.Allow TCP 32500 through Windows Firewall.
Hardware transcoding is detected in this order: NVIDIA (NVENC), Intel (Quick Sync), AMD (AMF).
Service commands
The same commands work on every platform (with sudo on Linux and macOS, or an administrator prompt on Windows):
| Command | Does |
|---|---|
wrentv | Run in the foreground (logs to the terminal) |
wrentv install | Install the system service (systemd, launchd or Windows service), which then starts at boot |
wrentv start / stop / restart | Control the service |
wrentv status | Show whether the service is running |
wrentv uninstall | Remove the service. Your data directory is kept |
wrentv version | Print the version |
Two options work with any of these: -data <dir> uses a different data directory
(install bakes it into the service), and -v turns on debug logging.
Logs
| Platform | Where the log is |
|---|---|
| Docker | docker logs wrentv |
| Linux | journalctl -u wrentv |
| macOS and Windows | Run wrentv in the foreground after stopping the service, or use -v for more detail |
Build from source
Wren TV is written in Go. With Go installed:
bashgit clone https://github.com/LTAGROUP/WrenTV.git
cd WrenTV
go build -o bin/wrentv ./cmd/wrentv
./bin/wrentv
Next
Open http://<your-server>:32500 and continue with First run and claiming.