Wren TVDocs

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
  • /config holds 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: host on 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

  1. Install ffmpeg. The jellyfin-ffmpeg portable build is recommended. Note where ffmpeg.exe and ffprobe.exe are.

  2. Copy wrentv.exe to C:\Program Files\WrenTV\.

  3. From an administrator PowerShell, install and start the service:

    powershell& "C:\Program Files\WrenTV\wrentv.exe" install
    & "C:\Program Files\WrenTV\wrentv.exe" start

    This registers a Windows service named wrentv that starts with Windows.

  4. If ffmpeg isn't on your PATH, edit C:\ProgramData\WrenTV\wrentv.yaml (created on first start), set transcode.ffmpeg_path and transcode.ffprobe_path, and run wrentv.exe restart.

  5. 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):

CommandDoes
wrentvRun in the foreground (logs to the terminal)
wrentv installInstall the system service (systemd, launchd or Windows service), which then starts at boot
wrentv start / stop / restartControl the service
wrentv statusShow whether the service is running
wrentv uninstallRemove the service. Your data directory is kept
wrentv versionPrint 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

PlatformWhere the log is
Dockerdocker logs wrentv
Linuxjournalctl -u wrentv
macOS and WindowsRun 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.

Wren TV is in early access. Something here wrong or missing? Tell us in the beta.