Skip to content

arnesacnussem/jellyfin-plugin-meilisearch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

121 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": {
                "Database": "Data Source=/config/data/jellyfin.db;Cache=Default;Default Timeout=30;Pooling=True",
                "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

The core feature, which is to mutate the search request, is done by injecting an ActionFilter. So it may only support a few versions of Jellyfin. At the moment I'm using Jellyfin 10.11.0, but it should work on other versions as long as the required parameter name of /Items endpoint doesn't change.


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 the /Items endpoint is affected by this plugin, but it still improves a lot on my 200k items library.

About

A search plugin for Jellyfin

Topics

Resources

License

Stars

Watchers

Forks

Contributors