selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitLab
JellySearch logo

Self-host JellySearch

1.0.0

Meilisearch-backed full-text search proxy for Jellyfin

Open Sourcemit
Updatedlast year
Setup difficultyModerate
Port
5000 (HTTP port the JellySearch proxy listens on (backend target for the reverse proxy rule))
Requires
Jellyfin, Meilisearch
Docker
domistyle/jellysearch
Install with Docker Compose
JellySearch screenshot 1

What is JellySearch?

JellySearch is a proxy layer that makes library search on a Jellyfin media server much faster. It builds a Meilisearch index from the Jellyfin SQLite database, refreshes it on a cron schedule, and a reverse proxy routes any client request carrying the searchTerm query argument to JellySearch instead of Jellyfin; the proxy then looks the query up in the index and forwards the found items on to Jellyfin. Typo-ridden and multi-field queries still match, and on a large library per-request search time falls from roughly two seconds to about 1-150 milliseconds. Common clients such as the web client, Jellyfin for Android and Android TV, Finamp, Findroid, Delfin and Gelli work; genre searches are simply passed through because they are not supported yet. Deployment is an extra docker compose service using the domistyle/jellysearch image next to a Meilisearch container, with the Jellyfin config directory mounted read-only and routing rules for Traefik 3.0+, nginx or Nginx Proxy Manager. Note the search results are not filtered by user permissions, so entries from restricted libraries can be returned, and the maintainer now recommends switching to the official Meilisearch Jellyfin plugin. Running it outside Docker is possible but undocumented.

JellySearch alternatives

Should you self-host JellySearch?

JellySearch scores 50/100 on selfhost.directory (how scoring works) and ranks #64 of 119 in Media Server.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is mit-licensed.

Its closest alternative on selfhost.directory is Jellyfin (88/100, 59 235 stars). It scores higher overall, so compare the two before you pick. See JellySearch vs Jellyfin side by side.

Features

  • Client-transparent via reverse proxy
  • Full-text search proxy
  • Genre search
  • Multi-field search
  • Per-user permission filtering
  • Scheduled reindexing
  • Typo-tolerant search

How to install JellySearch

Install JellySearch with Docker Compose

Jellyfin running inside of Docker, Jellyfin running behind a reverse proxy
Environment variables
JELLYFIN_URL, JELLYFIN_CONFIG_DIR, MEILI_URL, MEILI_MASTER_KEY, INDEX_CRON
  jellysearch:
    image: domistyle/jellysearch
    restart: unless-stopped
    volumes:
      - config:/config:ro
    environment:
      MEILI_MASTER_KEY: "1234"
      INDEX_CRON: "0 0 0/2 ? * * *"
    labels:
      - traefik.enable=true
      - traefik.http.services.jellysearch.loadbalancer.server.port=5000

      - traefik.http.routers.jellysearch.rule=Host(`demo.jellyfin.org`) && (QueryRegexp(`searchTerm`, `(.*?)`) || QueryRegexp(`SearchTerm`, `(.*?)`))
  meilisearch:
    image: getmeili/meilisearch:v1.9
    restart: unless-stopped
    volumes:
      - meilisearch:/meili_data
    environment:
      MEILI_MASTER_KEY: "1234"

The /config volume should point at the Jellyfin config directory (read-only is enough). Traefik 3.0 or higher is required since support for QueryRegexp is missing in Traefik 2.0.

How to configure JellySearch

  • JELLYFIN_URLhttp://jellyfin:8096The full URL of your Jellyfin instance.
  • JELLYFIN_CONFIG_DIR/configThe directory where you mounted the config folder of your Jellyfin instance.
  • INDEX_CRONThe cron schedule to run the reindexing at, will not reindex automatically without it set.

    values: Quartz cron expression, e.g. `0 0 0/2 ? * * *`

  • MEILI_URLhttp://meilisearch:7700The URL where your Meilisearch instance is reachable.
  • MEILI_MASTER_KEYThe key used to authenticate with Meilisearch; must match the Meilisearch instance.

More in Media Server

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…