Guides / Synology

OwnMedia on Synology

Jellyfin in Container Manager and the OwnMedia plugin from the plugin catalogue. No Windows installer needed. About half an hour, once.

What you get: movies, shows, music and photos from the NAS on your phone, photo backup from the phone to the NAS, invites for friends and access from the internet.

1. Can this NAS run it?

Open Package Center and look for Container Manager. If it is there, follow this guide.

If it isn’t (smaller models), Jellyfin comes as a SynoCommunity package, but usually an old version, and the OwnMedia plugin needs Jellyfin 12.1 or newer. In that case write to us and we’ll find another way.

2. Folders

The shared folder docker appears when Container Manager is installed. In File Station, create:

  • docker/jellyfin/config and docker/jellyfin/cache for Jellyfin itself;
  • a folder for photos backed up from phones, for example photo/OwnMedia.

Leave your movies, shows and music where they are; below you only need the paths to their folders (for example /volume1/video, /volume1/music). File Station shows the path: right-click a folder → Properties.

Each folder has its own volume number: on a NAS with several volumes, docker may be on /volume1 while movies and photos are on /volume4. In step 3, type the paths exactly as Properties shows them.

3. Jellyfin in Container Manager

Container Manager → Project → Create:

  • Project name: ownmedia
  • Path: /volume1/docker/jellyfin
  • Source: Create docker-compose.yml, and paste the file below. Replace the paths left of the colon with yours from step 2, volume number included; don’t touch the right side.
services:
  jellyfin:
    image: jellyfin/jellyfin:12.1
    container_name: jellyfin
    # The NAS's own network: phones on the Wi-Fi find the server by themselves ("Add your server").
    network_mode: host
    restart: unless-stopped
    volumes:
      - /volume1/docker/jellyfin/config:/config
      - /volume1/docker/jellyfin/cache:/cache
      - /volume1/video:/media/video:ro
      - /volume1/music:/media/music:ro
      - /volume1/photo/OwnMedia:/media/photos

Next → Done. Container Manager downloads Jellyfin (about 300 MB) and starts it.

:ro means read-only: Jellyfin can’t change anything in your movies and music. The photo folder has no :ro, because backups from the phone are written there.

4. First setup of Jellyfin

In a browser on your computer, open http://<NAS address>:8096, the same address you open DSM at, for example http://192.168.1.50:8096:

  1. Language → create a user: a name and a password (you’ll type them on the phone).
  2. Libraries: “Movies” → folder /media/video, “Music” → /media/music, and if you like “Photos” → /media/photos.
  3. Remote access: leave it on. Done.

5. The OwnMedia plugin

In Jellyfin: Dashboard → Plugins → Manage Repositories → +:

  • Name: OwnMedia
  • URL:
https://raw.githubusercontent.com/3dengineering01-star/Homeplayer/main/jellyfin-repo/manifest.json

Save → go back to Plugins, choose the All filter (or search) → Homeplay Backup → Install. Then restart Jellyfin with the Restart button on the main Dashboard page (not in Plugins). After the restart the plugin is under the Installed filter, marked Active.

In the settings of Homeplay Backup, set the folder for photo backups: /media/photos.

Jellyfin shows new versions of the plugin by itself, under Plugins.

6. The phone

In OwnMedia, tap Add your server: the NAS is found by itself if the phone is on the same Wi-Fi. If not, type <NAS address>:8096. Use the name and password from step 4.

A page with a QR code for phones: http://<NAS address>:8096/Homeplay/Phone.

If http://<NAS address>:8096 doesn’t open in the browser, or the phone doesn’t find the NAS, and the DSM firewall is on (Control Panel → Security → Firewall), add an Allow rule to its profile for ports 8096 (TCP) and 7359 (UDP; phones use it to find the server on the Wi-Fi).

7. Access from the internet and invites for friends (Tailscale)

Only Jellyfin (port 8096) is opened to the internet; DSM stays closed, and nothing changes on the router.

  1. Package Center → Tailscale → install → open → sign in with your Tailscale account. If Tailscale was on this NAS before, you’ll see “Your device’s key has expired → Reauthenticate” instead: that’s fine, press it and sign in.
  2. A folder for task results (needed in step 4): in File Station create, for example, docker/tasklogs. Then Control Panel → Task Scheduler → Settings → Save output results → this folder.
  3. Task Scheduler → Create → Triggered Task → User-defined script:
    • General tab: name OwnMedia Funnel, user root, event Boot-up, Enabled;
    • Task Settings tab, script:
    /var/packages/Tailscale/target/bin/tailscale funnel --bg 8096

    When you save, DSM warns about a task run as root and asks for the password of your DSM account (the one you are signed in to DSM with). Have it ready.

  4. Select the task → Run. The result is in the folder from step 2: <folder>/OwnMedia Funnel/<time>/output.log. It should say:
    Available on the internet:
    https://<NAS name>.<your tailnet>.ts.net/
    |-- proxy http://127.0.0.1:8096

    If it shows a link to enable Funnel instead, open it, press Enable Funnel and run the task again. The setting is kept; the boot-up task is a safety net after the NAS restarts.

  5. Check: open https://<NAS name>.<your tailnet>.ts.net/Homeplay/Phone on a phone with Wi-Fi turned off. In the first minutes the address may sometimes fail to open (a secure connection error): wait 2–3 minutes.
  6. In OwnMedia: the server’s menu ⋮ → Share with friends → I have an address already → this address.

Tested on an RS2423+ with DSM 7.3.2 and the Tailscale package 1.58.2.

If video stutters

First find out whether the server converts the video: while it plays, open Jellyfin in a browser → Dashboard → the “i” icon next to the playback. Direct playing means the server sends the file as it is, and the bottleneck is the way to the phone, not the NAS.

How fast that way is:

  • At home, add the NAS to OwnMedia once more by its home address (<NAS address>:8096) and watch through it: video goes over the Wi-Fi directly, at full speed.
  • Away from home, install the Tailscale app on the phone and sign in to the same account as on the NAS. Then the https://….ts.net address goes through Tailscale rather than Funnel.
  • Tailscale connects the phone to the NAS directly or, when the router doesn’t allow it, through its relay server. Through the relay, as through Funnel (for friends), you get around 20 Mbit/s. That is enough for ordinary 1080p movies and shows (5–10 Mbit/s), but not for heavy 4K files: 4K at 60 frames per second needs about 40 Mbit/s and will stutter (“plays 2 seconds, waits 2 seconds”).
  • Whether the connection is direct shows on a computer in the same tailnet: tailscale ping <NAS name>; “via DERP” means through the relay. A direct connection usually comes with a fresh Tailscale package on the NAS (Package Center may have an old one; the new one is at pkgs.tailscale.com), or with UDP port 41641 opened on the NAS’s router towards the NAS (only Tailscale’s encrypted traffic goes through it; DSM stays closed).

What to do with heavy files without a direct connection:

  • download them in advance while you’re at home: long-press → Download, then watch from Downloads;
  • pick a lower quality (1080p) in the player: the server converts the video. A NAS without a graphics card converts on the processor and may not keep up with 4K.

The app for friends

Nothing to set up: the invite page and the QR code send friends to download the newest app from ownmedia.app. This needs the plugin 1.8 or newer; Jellyfin offers the update under Dashboard → Plugins.

Removing OwnMedia from the NAS

  1. Container Manager → Project → ownmedia → Stop → Delete, then Image → jellyfin/jellyfin → Delete (about 1.7 GB).
  2. Task Scheduler → OwnMedia Funnel → Delete. This doesn’t turn off access from the internet: Funnel stays on in Tailscale itself (the address opens, with an error). To turn it off, either remove the Tailscale package (Package Center → Tailscale → Uninstall, then remove the NAS from the Machines list on the Tailscale website), or, if you need Tailscale for something else, run a one-time task as root: /var/packages/Tailscale/target/bin/tailscale funnel --https=443 off.
  3. File Station: delete docker/jellyfin and docker/tasklogs. If the shared folder docker is now empty, you can delete it in Control Panel → Shared Folder (next time you make a project you’ll have to create it again).
  4. Your movies, music and photo backups aren’t touched: delete the backup folder yourself if you don’t need it.
  5. In OwnMedia on the phone: the server’s menu ⋮ → remove the server.