Plex Media Server on Synology
My family's video collection ended up on the NAS, and streaming it to the TV from a shared folder got old quickly. So Plex. It indexes the files, fetches metadata and streams to TVs, phones and browsers, transcoding when a client can't play the original format. You can install it from Package Center or from Plex's own site, and the real question is whether your NAS can transcode at all.
Some background before starting. Plex publishes packages for x86 and ARM on DSM 6.1 or 6.2, but transcoding on ARM units is unrealistic; they can only direct-play. For hardware transcoding you want an Intel CPU with Quick Sync (DS218+, DS718+, DS918+ and similar Plus models) and a Plex Pass. Name your media the way Plex expects: Movies/Title (Year)/Title (Year).mkv and TV Shows/Show/Season 01/Show - s01e01.mkv.
Get the right package
Package Center offers Plex Media Server, but it's often several versions behind, so I don't use it. Go to plex.tv/media-server-downloads, select Synology and download the SPK for your CPU architecture. To find yours over SSH:
uname -m
cat /proc/cpuinfo | grep "model name" | head -1
x86_64 means the Intel/AMD package; armv7l or aarch64 need the matching ARM build. Then Package Center → Manual Install → pick the SPK. If Package Center refuses it, set Control Panel → Package Center → Settings → Trust Level to "Any publisher" or "Synology Inc. and trusted publishers" after importing Plex's public key.
Installation creates a Plex shared folder on volume 1 holding the library database at /volume1/Plex/Library/Application Support/Plex Media Server/, and a system user named plex.
Permissions on the media folders
The plex user must be able to read your media shares. Control Panel → Shared Folder → select video → Edit → Permissions → switch the dropdown to System internal user → give plex Read only. Repeat for music and photo. Without this, libraries appear empty and the server log shows permission denied entries.
Tick "Apply to this folder, sub-folders and files" so the ACL is pushed down to existing files; otherwise older subfolders keep their previous permissions.
Claim the server and add libraries
Open http://<nas-ip>:32400/web. The first run asks you to sign in to Plex; this claims the server to your account. If you are doing this from a machine on a different subnet than the NAS, the claim step fails; connect from the same LAN or use an SSH tunnel:
ssh -L 32400:localhost:32400 admin@<nas-ip>
then browse to http://localhost:32400/web.
Add a library: Movies → point to /volume1/video/Movies. Add TV Shows separately. Under Advanced for each library, I turn off "Enable video preview thumbnails"; generating them re-reads every file and doubles the database size.
In Settings → Server → Library, enable "Scan my library automatically" and "Run a partial scan when changes are detected". This uses inotify on the shares and works on ext4 and Btrfs volumes.
Hardware transcoding
Settings → Server → Transcoder → Show Advanced → tick "Use hardware acceleration when available". This needs Plex Pass. Confirm the device node exists on the NAS:
ls -l /dev/dri
You should see card0 and renderD128. If /dev/dri is missing, the model has no supported iGPU and only software transcoding is available. Keep Transcoder quality at Automatic and set "Transcoder temporary directory" to a folder on an SSD volume if you have one.
Also open Control Panel → Security → Firewall and allow TCP 32400 from the LAN. For remote access, Settings → Remote Access → Manually specify public port, and forward that port on the router to 32400 on the NAS.
Is it really using the GPU?
Play a 1080p H.264 file from a browser on a laptop; the browser forces a transcode. Open Settings → Status → Now Playing (or the dashboard in the newer web app). The stream should show "Transcode (hw)" when hardware acceleration is working. On the NAS, top should show Plex Transcoder using far less CPU than a full core per stream.
Check the log if anything looks wrong:
tail -f "/volume1/Plex/Library/Application Support/Plex Media Server/Logs/Plex Media Server.log"
Gotchas
- "Library is empty" after adding a folder: the
plexuser lacks read permission on the shared folder. Fix the share permissions, then Scan Library Files. - "Not authorized. You do not have access to this server" when opening the web UI: the server is unclaimed and you are connecting from a different subnet. Use the SSH tunnel method above.
- Playback stutters and Now Playing shows "Transcode" without "(hw)": Plex Pass is not active, hardware acceleration is unticked, or the file uses a codec the iGPU does not decode (10-bit HEVC on older Celerons). Direct play by using a client that supports the codec.
- The package fails to update with "Invalid file format": the SPK is for the wrong architecture. Download the one matching
uname -m.
A Plus model with Quick Sync handles two or three simultaneous 1080p transcodes without effort, which is plenty for a household. Put the library database in your Hyper Backup task. I lost a watched-state history once and nobody in the house forgave me.