Sign inSign up

kryspal/kryspalmedia

By kryspal

โ€ขUpdated about 8 hours ago

Media server for NAS: Emby and Jellyfin API for Infuse, SenPlayer, VidHub. Fast on huge libraries.

Image
Content management system
1

662

kryspal/kryspalmedia repository overview

โ Kryspal Media

Your library, beautifully played. Kryspal Media is a self-hosted media server for people who use 3rd-party players for Emby and Jellyfin, such as Infuse, VidHub and SenPlayer. Keep your players, bring your library.

Latest release: 0.9.11-betaโ  ยท 2026-10-27

  • Merge files that share a main name into one title with several versions, and let a metadata plugin name each version
  • Search puts closer matches first and keeps loading as you scroll
  • Choose the source and minimum score for rating badges on posters, with a live preview

This is the server image. It runs together with the database image kryspal/kryspalmedia-postgresโ , and the Compose file below starts both.

โ Highlights

  • Fast on huge libraries. Built for libraries of nearly 200,000 movies, with PostgreSQL doing the querying, sorting and filtering.
  • Original quality. Direct play keeps 4K, HDR and lossless audio. Video is never transcoded; the browser player only repackages and converts audio when it has to.
  • Works with your players. Third-party players for Emby and Jellyfin, such as Infuse, SenPlayer and VidHub, connect as usual.
  • Move from Emby or Jellyfin. Libraries, members and watch history come along.
  • Cloud-drive friendly. Play .strm files that point to your own cloud drive.
  • Tidy, even with messy names. Flexible folder layouts, version grouping and name recognition.
  • Skip intros and outros. Mark them by hand, or detect them automatically.
  • Members and parental controls. A separate watch history for every member.
  • Plugins and an open SDK. Plugins run in isolated processes with a signed catalog. The official plugins are open source and the Plugin SDK is Apache-2.0.
  • No account needed. An email and a key. The FREE plan is a complete media server.

Some features need a paid plan; see Plansโ .

โ Quick start

You need Docker 24 or newer with Compose v2, on a 64-bit Linux host.

  1. Save this as compose.yaml in an empty folder.
  2. Replace /path/to/media with the folder that holds your media. Add one line per extra media folder (the commented lines show the pattern).
  3. Run docker compose up -d.
  4. Open http://<host>:5797 and create the first administrator in the setup wizard, then add your libraries in the admin console.
services:
  server:
    image: kryspal/kryspalmedia:latest
    restart: unless-stopped
    stop_grace_period: 60s
    ports:
      - "5797:5797" # LAN
      - "5798:5798" # WAN
      # - "7359:7359/udp" # discovery
    environment:
      EXTERNAL_HTTP_ADDR: ":5798" # WAN
    volumes:
      - /path/to/media:/media
      # 2+ folders: use these instead
      # - /mnt/movies:/media/mnt/movies
      # - /mnt/tv:/media/mnt/tv
      - data:/var/lib/mediaserver
      - db:/var/lib/kryspal-db:ro
    depends_on:
      - postgres
  postgres:
    image: kryspal/kryspalmedia-postgres:16
    restart: unless-stopped
    stop_grace_period: 60s
    volumes:
      - pgdata:/var/lib/postgresql/data
      - db:/var/lib/kryspal-db
volumes:
  data:
  pgdata:
  db:

There is no .env file and no variable to set. The database password is generated on the first start and shared between the two containers through the db volume.

The media folder is mounted read-write on purpose: subtitle download and NFO write-back, both optional and off by default, write next to your video files. The server writes there only when you turn those features on.

On a Linux host or VPS you can also use the install script, which writes the same Compose file, starts it and waits until the server is healthy. Read it before you run it:

curl -fsSL https://media.kryspal.net/install.sh -o install.sh
less install.sh
bash install.sh --media /srv/media

NAS users can paste the Compose file into the container manager of their NAS.

โ Ports

PortUse
5797/tcpHTTP for players, the web player and the admin console.
5798/tcpExternal-only port. Forward only this port on your router: requests that arrive on it count as coming from outside your home network.
7359/udpAutomatic discovery of the server by players on your local network. Commented out by default, because other media servers such as Emby and Jellyfin also use this port. Remove the # only if nothing else on the host uses it.

PostgreSQL does not publish a port to the host. For remote access, put a reverse proxy with HTTPS in front of port 5797.

โ Data

The Compose file creates three named volumes:

  • data: the server's settings and data (/var/lib/mediaserver).
  • pgdata: the PostgreSQL database.
  • db: the generated database password, shared by the two containers.

Your media folders are not touched by the container. Files the server writes there, such as downloaded subtitles and NFO files, stay where they are. docker compose down keeps your data; docker compose down -v deletes the volumes.

Details: Upgrade and back upโ .

To upgrade:

docker compose pull
docker compose up -d

Beta upgrades can change the database in ways that cannot be rolled back, so export it first with pg_dump.

โ Supported platforms

linux/amd64 and linux/arm64. Docker pulls the right one for your host.

โ Tags

TagMeaning
<version>One exact release, for example the one under Latest release above. Version tags never move.
betaThe newest beta release.
latestThe newest release. While Kryspal Media is in beta, this is the newest beta; after the first stable release it follows stable releases only.

Stable releases will also carry <major>.<minor> and <major> tags. Kryspal Media is currently in beta.

โ License

Kryspal Media is proprietary software. The FREE plan costs nothing; see Plansโ  for what PRO and MAX add. Third-party components and their licenses are listed in NOTICE.md, attached to each release. The source code is not published.

Tag summary

Content type

Image

Digest

sha256:d15379d19โ€ฆ

Size

140.6 MB

Last updated

about 8 hours ago

docker pull kryspal/kryspalmedia