NAS · NAVIDROME · JELLYFIN · OPEN SUBSONIC

How to deploy Navidrome or Jellyfin on Synology and fnOS NAS, then connect Sanshuai Player

This guide uses reusable Docker Compose examples to set up a private music server on fnOS, Synology DSM, QNAP, TrueNAS SCALE, or Unraid, then explains exactly which server address and account Sanshuai Player needs.

Published: August 12, 2026Checked against OpenSubsonic, Navidrome, Jellyfin, and NAS vendor documentation
On this page11

QUICK ANSWER

What should you install on a NAS for Sanshuai Player?

Install Navidrome or Jellyfin. Navidrome is a focused music server that exposes a Subsonic/OpenSubsonic-compatible API. Jellyfin is a broader media server with its own API and can manage music alongside video. OpenSubsonic itself is an API specification, not a server package you install.

01

How are OpenSubsonic, Navidrome, and Jellyfin different?

OpenSubsonic

An open API specification for authentication, library browsing, search, cover art, and audio streaming. It describes communication; it does not scan a disk.

Navidrome

A self-hosted server focused on personal music collections. It scans your files and provides a Subsonic/OpenSubsonic-compatible client API.

Jellyfin

A self-hosted media server for video, television, and music. It uses the Jellyfin server API rather than OpenSubsonic.

The correct workflow is therefore to install a compatible server and select the matching server type in Sanshuai. API compatibility can vary by server version and does not guarantee that every optional extension behaves identically.

02

What should you prepare before deployment?

  1. Check the CPU architecture

    Navidrome publishes images for common amd64 and ARM platforms; Jellyfin also publishes multi-architecture images. Verify support before using an older or unusual NAS.

  2. Create two storage locations

    Use one persistent location for database, configuration, and cache data, plus one location for your music files. Mount the music collection read-only first.

  3. Confirm file permissions

    The container UID:GID must be allowed to read music and write to its configuration directory. `1000:1000` is only an example.

  4. Keep the NAS address stable

    Reserve its DHCP address in the router so client settings do not break after the IP changes.

  5. Start on the local network

    Verify scanning and playback before adding remote access. Do not begin by exposing an unencrypted service port to the internet.

04

How do you deploy Jellyfin with Docker Compose?

Choose Jellyfin if you want one server for music and video. This example maps only 8096/TCP, which is enough for a manually entered server address. UDP 7359 is used for local discovery and is not required for this connection method.

docker-compose.ymlJellyfin · 8096
services:
  jellyfin:
    image: jellyfin/jellyfin:10.11
    container_name: jellyfin
    user: "1000:1000"
    ports:
      - "8096:8096/tcp"
    restart: unless-stopped
    volumes:
      - /YOUR_APP_DATA/jellyfin/config:/config
      - /YOUR_APP_DATA/jellyfin/cache:/cache
      - /YOUR_MUSIC:/media:ro

Open http://NAS-IP:8096, complete the setup wizard, create a user, and add a Music library. Select the container path /media inside Jellyfin—not the host path named `/YOUR_MUSIC`.

The official image supports exact, minor-series, and `latest` tags. The example stays on the 10.11 minor line to avoid an unexpected major/minor jump. Back up `/config` and read the release notes before updating.

Official references: Jellyfin Container and Jellyfin Quick Start.

05

Where do you deploy the Compose file on each NAS?

NAS platformRecommended entry pointImportant detail
fnOSEnable Docker, open its Compose/Projects area, then paste or import the YAML.Copy the original absolute paths for music and app data from the file manager. Labels can change between fnOS versions.
Synology DSM 7.2+Install Container Manager and create a Project from a shared folder containing `compose.yaml`.Grant read access to the music share and write access to the configuration directory.
QNAP QTS / QuTSOpen Container Station, choose Create Application, paste the Compose YAML, and validate it.Create persistent shared folders first and make sure the host ports are unused.
TrueNAS SCALECheck the Apps Catalog first, or use the Custom App Compose YAML editor.Select an Apps pool and configure dataset/host-path permissions for the app identity.
UnraidUse Community Applications or Add Container and enter the image, ports, and paths individually.Unraid's official documentation says Docker Compose is not native; translate the YAML mappings into container form fields.

Every platform must produce the same four results: the correct image, persistent app data, a read-only music mount, and a port reachable from your local network. Never copy another person's `/volume1`, `/vol1`, or `/mnt/user` paths without replacing them.

Platform references: fnOS developer Docker documentation, Synology Container Manager Project, QNAP Container Station, TrueNAS Apps, and Unraid Docker Overview.

06

How do you connect the finished server to Sanshuai Player?

  1. Test the server in a browser first

    Connect the iPhone and NAS to the same Wi-Fi and make sure Safari can open the Navidrome or Jellyfin sign-in page.

  2. Allow Local Network access

    When iOS asks, allow Sanshuai Player to access devices on the local network.

  3. Select the matching server type

    Use the Navidrome/OpenSubsonic-compatible type for Navidrome and the Jellyfin type for Jellyfin. Labels may vary with the app version.

  4. Enter the complete base URL

    Examples: http://192.168.1.20:4533 for Navidrome or http://192.168.1.20:8096 for Jellyfin. Include any reverse-proxy base path.

  5. Use a media-server account

    Enter the account created inside Navidrome or Jellyfin—not the NAS administrator account. A separate, lower-privilege playback user is preferable.

  6. Connect and let the first sync finish

    Large libraries need time to load artists, albums, and artwork. Test one known album before configuring remote access.

07

How should you connect from outside your home network?

Prefer a trusted VPN into your home network or an HTTPS reverse proxy with a valid certificate. Do not expose unencrypted ports such as 4533 or 8096 directly to the public internet.

  • Use a dedicated hostname or a clearly configured base path and enter the final URL in Sanshuai.
  • Use a certificate trusted by iOS; self-signed certificates often cause client compatibility problems.
  • Use strong passwords and keep the NAS, container images, and proxy updated.
  • Navidrome works behind a reverse proxy by default. If the proxy adds its own sign-in, do not accidentally block the client-facing /rest/* API.
  • For Jellyfin, pass the required proxy headers. If a Base URL is configured, include it in the client address.
  • Never expose passwords, API keys, tokens, or private host details in public logs or support screenshots.

Security references: Navidrome Externalized Authentication, Jellyfin Networking, and Jellyfin Reverse Proxy.

08

What should you check when the connection fails?

SymptomCheck first
Safari cannot open the serverContainer status, port mapping, NAS firewall, changed IP address, and whether both devices are on the same LAN.
The web UI works, but Sanshuai cannot connectServer type, http/https, port, base path, Local Network permission, and certificate validity.
Wrong username or passwordUse the music-server account, retype it without trailing spaces, and do not substitute the NAS administrator account.
Connection succeeds, but the library is emptyHost-path mapping to `/music` or `/media`, read permission, and whether the server scan has finished.
Artwork appears, but audio does not playPlay the same track in the server web UI, then check the file, transcoding, proxy timeouts, and network path.
LAN works, remote access does notVPN/proxy routing, DNS, HTTPS certificate, port rules, and Jellyfin user remote-access permission.

If the problem remains, email [email protected] with the app version, iOS version, NAS platform, server type, LAN/remote scenario, a redacted URL shape, and the error message. Never send passwords, tokens, or unredacted logs.

09

Where do music, credentials, and playback data go?

Sanshuai connects directly to the NAS or music server you enter. Himhuu does not proxy your music traffic and does not upload your library, server account, or playback history to Himhuu. Connection settings stay on the device, while credentials or access tokens are stored in the system Keychain.

This does not mean every workflow is completely offline. Your chosen server, reverse proxy, DNS, or remote-access provider may process connection logs. When server-provided lyrics or artwork are unavailable and an online lookup is triggered, a third-party provider may receive track title, artist, album, or duration. See the Sanshuai Player privacy policy for the current boundary.

10

Frequently asked questions

Do I install OpenSubsonic on the NAS?

No. OpenSubsonic is an API specification. Install a compatible server such as Navidrome, then connect with a compatible client.

Should I choose Navidrome or Jellyfin?

Navidrome is a focused, lightweight choice for music. Jellyfin can be more convenient if it already manages several media types on your NAS. The right choice also depends on your hardware and existing setup.

Should a Navidrome URL end with /rest?

Usually no. Enter the server base URL, such as http://192.168.1.20:4533. Add a path only when the reverse proxy is explicitly configured with that base path.

Why should I avoid direct public port forwarding?

It expands the attack surface, and plain HTTP does not protect credentials or media requests. Prefer a VPN or a correctly configured HTTPS reverse proxy with a valid certificate.

Why mount the music library read-only?

A media server usually only needs to read audio and metadata. A read-only mount reduces the chance that a mistake or server vulnerability modifies original files. Keep the database and cache in a separate writable location.

Can I copy the Compose example without changes?

You can reuse its structure, but you must change paths, UID:GID, image versions, and ports for your NAS. Back up configuration and check current official documentation before deployment.

This article references public project and NAS documentation; it does not bundle third-party server code or images into Sanshuai. Navidrome is GPL-3.0, Jellyfin Server is GPL-2.0, and the OpenSubsonic specification repository is Apache-2.0. These projects are independently maintained, and Himhuu does not control their versions, availability, or data practices.