Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

148 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Meilisearch Plugin for Jellyfin

A plugin for Jellyfin that improves search by utilizing Meilisearch as a search engine. Search logic is offloaded to a Meilisearch instance, and the response from Jellyfin is modified

Improved:

Note

As long as your client uses /Items endpoint for search, it should be supported seamlessly I guess

Inspired by JellySearch.


Setup instructions

  1. Setup a Meilisearch instance (maybe a hosted one in the cloud will also work, but I don't recommend)

    • Docker is recommended. Example docker-compose.yml:
      services:
         meilisearch:
           container_name: meilisearch
           image: getmeili/meilisearch:v1.34 # older versions may have compatibility issues
           restart: unless-stopped
       
           environment:
             MEILI_ENV: production
             MEILI_NO_ANALYTICS: "true"
             MEILI_MASTER_KEY: super-secret-key
       
           volumes:
             # meilisearch's data
             - ./data:/meili_data
       
           ports:
             - 7700:7700
      
  2. Install the Meilisearch plugin

    • In Jellyfin:
      1. Add the plugin Repository:
        https://raw.githubusercontent.com/arnesacnussem/jellyfin-plugin-meilisearch/refs/heads/master/manifest.json
        
      2. Install the Meilisearch plugin
      3. Restart Jellyfin Server
  3. Configure the Meilisearch plugin

    • In Meilisearch plugin's page:
      1. Meilisearch URL: URL to your Meilisearch instance, as seen by Jellyfin (example: http://meilisearch:7700)
      2. Meilisearch Api Key: API key to access your Meilisearch instance (if required) (example: super-secret-key)
      3. Click Save
      4. The plugin's page should show a healthy status
        • Example:
          {
              "meilisearch": "Server: available",
              "meilisearchOk": true,
              "averageSearchTime": "0ms",
              "indexStatus": {
                "Items": "20569",
                "LastIndexed": "1/28/2026 4:10:01 PM"
              }
            }
          

Note

You can also set the environment variables in Jellyfin, to configure the plugin without editing the Jellyfin UI: MEILI_URL and MEILI_MASTER_KEY

Note

If you want share one Meilisearch instance across multiple Jellyfin instance, you can fill the Meilisearch Index Name, if leaving empty, it will use the server name.

  1. Test Meilisearch plugin search

    1. Try Jellyfin search
    2. Issues? Check Jellyfin's logs and Meilisearch's logs

Index will update on following events:

  • Server start
  • Configuration change
  • Library scan complete
  • Update index task being triggered

How it works

On Jellyfin 12.0 (the version this build targets), the core feature is implemented as a Jellyfin search provider (IExternalSearchProvider / ISearchProvider), which Jellyfin discovers via GetExports<ISearchProvider>(). It registers with a higher priority than the built-in SQL search provider, so search queries are served by Meilisearch first.

Because this hooks into Jellyfin internals, it only supports specific Jellyfin versions, and the mechanism has changed over time: on Jellyfin 10.11 it used an IItemRepository decorator instead of a search provider.


I've seen JellySearch, which is a wonderful project, but I don't really like setting up a reverse proxy or any of that hassle.

So I am writing this, but it still requires a Meilisearch instance.

At this moment, only search queries are handled by this plugin, but it still improves a lot on my 200k items library.

About

A search plugin for Jellyfin

Topics

Resources

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages