Self-hosting Meilisearch the easy way

Self-hosting Meilisearch the easy way

Yulei Chen - Content-Engineerin bei sliplane.ioYulei Chen
5 min

Meilisearch is a lightning-fast, open-source search engine built for modern apps. It gives you typo-tolerant full-text search, filters, faceting, and instant results out of the box. Meilisearch Cloud exists, but pricing starts at $30/month for production use, and you're locked into their infrastructure.

Sliplane is a managed container platform that makes self-hosting painless. With one-click deployment, you can get Meilisearch up and running in minutes with no server setup, no reverse proxy config, and no infrastructure to maintain.

Prerequisites

Before deploying, ensure you have a Sliplane account (free trial available).

Quick start

Sliplane provides one-click deployment with presets.

SliplaneDeploy Meilisearch >
  1. Click the deploy button above
  2. Select a project
  3. Select a server. If you just signed up you get a 48-hour free trial server
  4. Click Deploy!

About the preset

The one-click deploy above uses Sliplane's Meilisearch preset. Here's what's included:

  • Official getmeili/meilisearch Docker image
  • Pinned to version v1.42.1 for stability (check Docker Hub for newer versions)
  • Persistent storage mounted to /meili_data so your indexes survive restarts
  • Production mode enabled (MEILI_ENV=production)
  • Analytics disabled by default (MEILI_NO_ANALYTICS=true)
  • A randomly generated master key for API authentication

Next steps

Once Meilisearch is running on Sliplane, access it using the domain Sliplane provided (e.g. meilisearch-xxxx.sliplane.app).

Authentication

Meilisearch uses API key-based authentication. In production mode, the master key is required to access the API. You can find it in the MEILI_MASTER_KEY environment variable in your Sliplane service settings.

The master key is used to generate two default API keys:

  • Default Search API Key: for client-side search queries only
  • Default Admin API Key: for indexing, settings, and all other operations

To retrieve these keys, call the keys endpoint with your master key:

curl -H "Authorization: Bearer YOUR_MASTER_KEY" \
  https://meilisearch-xxxx.sliplane.app/keys

Use the Admin API Key for indexing and the Search API Key for frontend queries. Never expose your master key in client-side code.

Adding documents

To index your first documents, send a POST request with the Admin API Key:

curl -X POST "https://meilisearch-xxxx.sliplane.app/indexes/movies/documents" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_ADMIN_API_KEY" \
  --data-binary '[
    { "id": 1, "title": "The Matrix", "genre": "sci-fi" },
    { "id": 2, "title": "Inception", "genre": "sci-fi" },
    { "id": 3, "title": "Parasite", "genre": "thriller" }
  ]'

Environment variables

Here are the key environment variables you can customize in your Sliplane service settings:

VariableDefaultDescription
MEILI_MASTER_KEY(generated)Master key for API authentication
MEILI_ENVproductionSet to development for detailed error messages
MEILI_NO_ANALYTICStrueDisable anonymous analytics
MEILI_MAX_INDEXING_MEMORY(auto)Max RAM for indexing, e.g. 1 GiB
MEILI_MAX_INDEXING_THREADS(auto)Max threads for indexing

See the Meilisearch configuration docs for a full list of options.

Logging

Meilisearch logs to STDOUT by default, which works perfectly with Sliplane's built-in log viewer. You can adjust the log level with the MEILI_LOG_LEVEL environment variable. For more logging tips, check out our post on how to use Docker logs.

VariableOptions
MEILI_LOG_LEVELERROR, WARN, INFO (default), DEBUG, TRACE

Troubleshooting

If something isn't working as expected, set MEILI_LOG_LEVEL to DEBUG in your environment variables and redeploy. This gives you much more detail about what Meilisearch is doing under the hood.

You can also check the health endpoint at /health to confirm the service is running. A healthy instance returns {"status":"available"}.

Cost comparison

Of course you can also self-host Meilisearch with other cloud providers. Here is a pricing comparison for the most common ones:

ProvidervCPU CoresRAMDiskEstimated Monthly CostNotes
Sliplane22 GB40 GB€9charge per server
Render12 GB40 GB~$35-$45VM Small
Fly.io22 GB40 GB~$20-$25VM + volume
Railway22 GB40 GB~$15-$66Usage-based

FAQ

What can I use Meilisearch for?

Meilisearch is great for any app that needs fast, typo-tolerant search. Common use cases include e-commerce product search, documentation search, autocomplete, and content discovery. It handles filters, faceted search, and geo search out of the box.

How do I configure search ranking and relevancy?

Meilisearch lets you customize ranking rules, searchable attributes, and filterable attributes per index. You can configure these through the settings API. For example, you can prioritize certain fields or add custom ranking rules based on your data.

How do I update Meilisearch?

Change the image tag in your service settings (e.g. from v1.42.1 to a newer version) and redeploy. Check Docker Hub for the latest stable version. Meilisearch handles database migrations automatically on startup.

How does Meilisearch compare to Elasticsearch?

Meilisearch is designed for instant, front-facing search with minimal configuration. Elasticsearch is more powerful for complex analytics and log aggregation but comes with significantly more operational overhead. If you need simple, fast search for your app, Meilisearch is the better choice.

How much data can Meilisearch handle?

Meilisearch stores its index in memory-mapped files, so disk space is your main constraint. On the Sliplane starter plan with 40 GB disk, you can comfortably index millions of documents depending on document size. For very large datasets, consider upgrading to a server with more RAM and disk.

Self-host Meilisearch now - It's easy!

Sliplane gives you everything you need to run Meilisearch without server hassle.