Guides

Record IPTV with GridStreamr DVR on Docker and Synology NAS

Step-by-step guide to run GridStreamr DVR in Docker on Synology DSM, Unraid or Linux — volumes, port 8787, pairing from the app and scheduling from Smart Collections.

10 min read

Responsible use

GridStreamr does not provide IPTV channels, VOD, or playlists. You bring your own authorized Xtream Codes or M3U sources. You are responsible for complying with applicable terms, licenses, and local law.

Running GridStreamr Home DVR in Docker on a Synology NAS (or any Linux host) keeps IPTV recordings on your volumes, schedulable from the GridStreamr app, without leaving a desktop PC powered on 24/7. This guide walks through image selection, compose file, Synology Container Manager setup, LAN pairing and day-to-day scheduling from Smart Collections.

What you need before starting

RequirementNotes
Synology NAS with Container ManagerFormerly Docker package; enable in Package Center
Premium GridStreamr accountPricing / trial
IPTV Smart CollectionAt least one curated lineup with channels to record
Storage volumeDedicated shared folder for recordings (TB-scale for HD sports)
LAN accessPhone/TV on same network for initial pairing
Architecture know-howamd64 vs arm64 image selection

Download page with compose snippets: /download/dvr

Feature overview: Home IPTV DVR

Choose the correct Docker image

GridStreamr publishes two images on Docker Hub:

CPU architectureImageTypical hardware
linux/amd64gridstreamr/gridstreamr-dvr-amd64:latestIntel Synology (DS918+, DS920+, etc.), most x86 NAS
linux/arm64gridstreamr/gridstreamr-dvr-arm64:latestARM Synology models, Raspberry Pi, Apple Silicon Linux VMs

Check architecture:

uname -m

x86_64amd64. aarch64arm64.

On Synology without SSH: read DSM Control Panel → Info → Model and vendor specs, or inspect Container Manager when pulling multi-arch manifests.

Sample Docker Compose file

Create docker-compose.yml on the NAS (or paste into Container Manager project):

services:
  gridstreamr-dvr:
    image: gridstreamr/gridstreamr-dvr-amd64:latest
    container_name: gridstreamr-dvr
    restart: unless-stopped
    environment:
      GRIDSTREAMR_BIND_ADDRESS: "0.0.0.0:8787"
      GRIDSTREAMR_DATABASE_PATH: "/data/dvr.db"
      GRIDSTREAMR_RECORDINGS_PATH: "/recordings"
      TZ: "America/New_York"
    ports:
      - "8787:8787"
    volumes:
      - ./data:/data
      - ./recordings:/recordings

ARM Synology: replace image with gridstreamr/gridstreamr-dvr-arm64:latest.

Timezone: set TZ to your locale so schedules match programme times in EPG.

Volumes:

  • ./data → SQLite job database (dvr.db)
  • ./recordings → finished media files

On Synology prefer absolute paths to shared folders:

volumes:
  - /volume1/docker/gridstreamr-dvr/data:/data
  - /volume1/video/dvr-recordings:/recordings

Create folders in File Station first; grant the container user read/write (often via high-privilege container user or ACL adjustment on DSM 7).

Synology Container Manager setup

Option A — Project from compose (DSM 7.2+)

  1. Open Container Manager → Project → Create
  2. Name project gridstreamr-dvr
  3. Paste compose YAML (adjust paths and image arch)
  4. Build/Deploy — pull image and start container
  5. Confirm container Running and port 8787 published

Option B — GUI container create

  1. Registry → search gridstreamr/gridstreamr-dvr-amd64 → Download
  2. Container → Create from image
  3. General settings — enable auto-restart
  4. Port settings — map local 8787 → container 8787
  5. Volume — mount /data and /recordings to shared folders
  6. Environment — add variables from compose (GRIDSTREAMR_BIND_ADDRESS, paths, TZ)
  7. Start container

Firewall

If Synology firewall enabled, allow 8787/tcp from LAN subnets so phones can pair.

Verify the dashboard

On a PC browser on the same LAN:

http://YOUR-SYNOLOGY-IP:8787

You should see the GridStreamr DVR dashboard with pairing code area and job list (empty initially).

Closing the browser does not stop the background service — same as desktop installs.

Default port constant: 8787 (see dvr-downloads.ts reference implementation on site).

Pair from GridStreamr app (Premium)

On iPhone or Android (same Wi‑Fi):

  1. Open Settings → DVR → LAN
  2. Tap Find on Wi‑Fi or enter http://192.168.x.x:8787 manually
  3. Enter one-time pairing code from dashboard
  4. Select recordings storage path if prompted (container path /recordings maps to your volume)
  5. Confirm paired status in app and dashboard

mDNS caveat: Docker bridge networking often fails Bonjour/mDNS discovery. If Find on Wi‑Fi misses the NAS, always fall back to static LAN IP — documented on /download/dvr.

Schedule your first recording

  1. Open a Smart Collection with live channels from your Xtream or M3U source
  2. Tune into a channel or pick from guide (EPG mapping helps titles)
  3. Choose Record or Schedule (wording varies by version)
  4. Set start/end or duration; save job
  5. Watch dashboard — active jobs show FFmpeg progress
  6. Files appear under /volume1/video/dvr-recordings (or your mount)

GridStreamr bundles pinned FFmpeg inside the image — no separate FFmpeg install on Synology.

Cloud Relay for remote job control

Away from home, enable Cloud Relay in dashboard and link under Settings → DVR → Cloud in app. This maintains an outbound secure tunnel for scheduling without port forwarding.

Important: Cloud Relay does not stream recordings over the internet by itself. Playback or download still needs LAN access, VPN home, or your own public reverse proxy you trust.

Documentation: Home DVR setup

Desktop alternatives (Windows and Mac)

Not using NAS? Native installers from /download/dvr:

PlatformFile
macOS Apple siliconGridStreamrDVR-arm64.pkg
macOS IntelGridStreamrDVR-amd64.pkg
Windows x64GridStreamrDVR-Setup-x64.exe

Installers register launchd or Windows Service, same port 8787, same pairing flow. Recordings land on local disk paths you choose during setup.

Linux without Docker: build from gridstreamr-dvr-releases and install systemd unit (advanced).

Storage and retention tips

HD IPTV recordings consume ~2–4 GB/hour depending on bitrate — plan volumes accordingly.

  • Use ** BTRFS free space alerts** on Synology
  • Rotate recordings with Hyper Backup or simple cron move to cold storage
  • Separate SSD for metadata (/data) and HDD volume for recordings if hybrid NAS

Pair with Jellyfin on same NAS to browse finished files — optional workflow outside GridStreamr player.

Troubleshooting Synology Docker

Container exits immediately

  • Check logs in Container Manager → gridstreamr-dvr → Log
  • Verify volume paths exist and permissions allow write
  • Confirm correct amd64/arm64 image

App cannot find DVR

  • Use http://nas-ip:8787 not hostname
  • Same subnet — guest Wi‑Fi isolation blocks LAN
  • Firewall rule missing 8787

Recordings empty or zero bytes

  • Upstream IPTV stream offline — GridStreamr records provider stream, not synthetic content
  • Job ended before FFmpeg connected — retry live channel first in player

Clock skew

  • Set DSM NTP sync and correct TZ env var — EPG schedules rely on accurate time

High CPU during record

  • Expected for transcode-heavy streams; prefer direct record when provider codec matches container settings

Security checklist

  • Do not expose port 8787 to 0.0.0.0 on the public internet without hardening
  • Use VPN (Synology VPN Server, Tailscale, WireGuard) for remote admin
  • Treat dashboard like admin credentials — pairing codes grant schedule control
  • Record only content your provider terms allow personal recording of

Unraid and generic Linux

This Synology guide transfers directly:

  1. Create appdata and recordings paths on array/cache
  2. Paste same compose in Compose Plugin or Portainer
  3. Pair with LAN IP of Unraid server

ARM home servers (Pi 4/5) use arm64 image — adequate for one concurrent HD job; scale expectations for 4K.

Next steps after DVR works

  • Schedule recurring series from EPG alerts
  • Organize recordings in Jellyfin library folder
  • Read IPTV DVR feature page for TimeShift vs DVR differences
  • Share live lineup separately via Smart Collection tokens — recordings stay local

Download DVR images and installers

Start Docker on NAS or install on desktop — pair on Premium to schedule from the app.

Frequently asked questions

Which Docker image should Synology use?

Intel/AMD Synology models: gridstreamr/gridstreamr-dvr-amd64:latest. ARM-based models (some J series): gridstreamr/gridstreamr-dvr-arm64:latest. Run uname -m on SSH or check Synology specs.

What port must be open on the LAN?

8787/tcp by default for the DVR dashboard and app pairing. Docker bridge often breaks mDNS — use the NAS LAN IP in GridStreamr Settings → DVR, not a hostname.

Do I need Premium to record?

Yes. Pairing, scheduling and job management require Premium. Docker images and installers are free to download from gridstreamr.com/download/dvr.

Where do recording files land?

In the host folder you map to /recordings inside the container — for example /volume1/video/dvr-recordings on Synology. GridStreamr does not cloud-upload your files.

Can I record channels I do not have in a Smart Collection?

Scheduling targets channels and titles from Smart Collections backed by your own Xtream or M3U sources. GridStreamr does not provide streams to record.

Does this work on macOS or Windows instead of NAS?

Yes. Use native .pkg or .exe installers from the DVR download page for desktop setups. This guide focuses on Docker/Synology; steps transfer to Unraid and generic Linux compose.

Get started

Download gridstreamr free

Add your sources, build a Smart Collection, then upgrade to Premium in-app when you need more.

Related

Keep reading