111 lines
4.4 KiB
YAML
111 lines
4.4 KiB
YAML
# compose.yaml for Open Source SageTV
|
||
# Image: sagetvopen/sagetv-server-java11 (most stable as of 2024/2025)
|
||
#
|
||
# CRITICAL: network_mode must be "host". Without it, the SageTV server
|
||
# cannot distinguish LAN extenders (HD300) from remote Placeshifter
|
||
# clients, and the HD300 will be greeted with a login prompt instead
|
||
# of the SageTV UI.
|
||
#
|
||
# Because of host networking, the "ports:" section is omitted —
|
||
# the container shares the host's network stack directly.
|
||
# The port list below is for firewall reference only.
|
||
#
|
||
# Ports used by SageTV (all on host network):
|
||
# 8080/tcp - Jetty web UI (SageTV web interface)
|
||
# 42024/tcp - Primary client<->server communication
|
||
# 7818/tcp - Media streaming (large file transfers to clients)
|
||
# 8270/udp - Automatic server discovery (HD300 "find server" scan)
|
||
# 31099/tcp - Extender & Placeshifter server port
|
||
# 31100/udp - Extender communication
|
||
# 16867/udp - Extender media port
|
||
# 16869/udp - Extender media port
|
||
# 16881/tcp - Extender media port
|
||
|
||
services:
|
||
sagetv:
|
||
image: sagetvopen/sagetv-server-java11:latest
|
||
container_name: sagetv
|
||
network_mode: host
|
||
restart: unless-stopped
|
||
|
||
environment:
|
||
# --- SageTV Version ---
|
||
# "latest" pulls the newest release on each container start.
|
||
# Pin to a specific version (e.g., "9.2.16.368") to prevent
|
||
# automatic upgrades. Before upgrading, the container automatically
|
||
# backs up Sage.jar, Sage.properties, and Wiz.bin.
|
||
VERSION: "latest"
|
||
|
||
# --- Java Heap Memory ---
|
||
# Amount of RAM to give the SageTV JVM, in MB.
|
||
# 768 MB is the default; 1024–2048 is reasonable for a media server
|
||
# with a large library (several hundred recordings).
|
||
JAVA_MEM_MB: "1024"
|
||
|
||
# --- File Permissions ---
|
||
# PUID and PGID should match the UID/GID of the user on your HOST
|
||
# that owns the media and appdata directories. This avoids permission
|
||
# conflicts between the container process and your host filesystem.
|
||
#
|
||
# To find your UID/GID, run on your host: id $(whoami)
|
||
# Common values on a standard Linux system: UID=1000, GID=1000
|
||
PUID: "1000"
|
||
PGID: "1000"
|
||
|
||
# --- Optional: License Key ---
|
||
# SageTV v9+ is fully open source and does not require a license.
|
||
# Leave blank.
|
||
LICENCE_DATA: ""
|
||
|
||
# --- Optional Add-ons ---
|
||
# OPT_GENTUNER: Installs the GenericTuner plugin (not needed if
|
||
# you have no tuner hardware — set to N for a playback-only setup)
|
||
OPT_GENTUNER: "N"
|
||
|
||
# OPT_COMSKIP: Installs comskip binaries for commercial detection.
|
||
# Useful later but not needed for initial bring-up.
|
||
OPT_COMSKIP: "N"
|
||
|
||
# OPT_COMMANDIR: CommandIR IR blaster support. Leave N unless you
|
||
# have CommandIR hardware.
|
||
OPT_COMMANDIR: "N"
|
||
|
||
# OPT_SETPERMS: If Y, resets ownership/permissions on all SageTV
|
||
# files at every startup. Slower start, but fixes permission issues.
|
||
# Set to Y temporarily if you hit "permission denied" errors.
|
||
OPT_SETPERMS: "N"
|
||
|
||
volumes:
|
||
# --- SageTV Application Data ---
|
||
# This is where SageTV stores its configuration: Sage.properties,
|
||
# Wiz.bin (the recording database), plugins, and logs.
|
||
# Map to a persistent directory on your host.
|
||
# The container expects /opt/sagetv; it will create a "server"
|
||
# subdirectory here on first run.
|
||
- /opt/docker/sagetv/appdata:/opt/sagetv
|
||
|
||
# --- Recordings / Primary Media Directory ---
|
||
# SageTV will create a "tv" subdirectory here for recordings.
|
||
# Point this at the directory containing your existing SageTV
|
||
# recordings (.mpg files). Read-write so SageTV can manage them.
|
||
- /your/sagetv/recordings:/var/media
|
||
|
||
# --- Additional Media (Videos, Music, Photos) ---
|
||
# For your imported video library. SageTV will be configured
|
||
# (via its UI) to look here for non-recorded content.
|
||
# Read-only is fine if SageTV should not modify these files.
|
||
- /your/other/media:/var/mediaext:ro
|
||
|
||
# host networking has no "ports:" mapping — the container
|
||
# uses the host's ports directly. Shown here as documentation only:
|
||
#
|
||
# 8080/tcp Jetty web UI
|
||
# 42024/tcp Client/server protocol
|
||
# 7818/tcp Media streaming
|
||
# 8270/udp Server autodiscovery
|
||
# 31099/tcp Extender server port
|
||
# 31100/udp Extender comms
|
||
# 16867/udp Extender media
|
||
# 16869/udp Extender media
|
||
# 16881/tcp Extender media
|