Meilisearch на VPS: мгновенный поиск для сайта и API — иллюстрация к статье Storm Cloud Blog, категория DevOps
Meilisearch на VPS: мгновенный поиск для сайта и API — иллюстрация к статье Storm Cloud Blog, категория DevOps
DevOps·2 мин··

Meilisearch на VPS: мгновенный поиск для сайта и API

Meilisearch на VPS: установка, индексация, typo-tolerance, интеграция с Laravel/Django/Next.js. Альтернатива Elasticsearch для малого и среднего проекта.

Краткий ответ: Meilisearch — быстрый full-text search с typo-tolerance и простым REST API. На VPS 1 GB RAM: Docker, master key, индексация из PostgreSQL или приложения.

SQL LIKE '%query%' ломается на 100k+ строк. Elasticsearch тяжёлый для pet-проекта. Meilisearch — зол середины.


Meilisearch vs Elasticsearch

Meilisearch Elasticsearch
RAM 512 MB–2 GB 4 GB+
Setup Минуты Часы
Typo-tolerance Из коробки Плагины
Analytics/logs Нет Да (ClickHouse)

Для логов — Loki. Для поиска товаров/статей — Meilisearch.


Docker

services:
  meilisearch:
    image: getmeili/meilisearch:v1.11
    restart: unless-stopped
    environment:
      MEILI_MASTER_KEY: ${MEILI_MASTER_KEY}
      MEILI_ENV: production
    volumes:
      - ./meili_data:/meili_data
    ports:
      - "127.0.0.1:7700:7700"
openssl rand -hex 32  # master key

Nginx reverse proxy + SSL. Не открывайте 7700 без auth.


Индексация

curl -X POST 'https://search.example.com/indexes/articles/documents' \
  -H "Authorization: Bearer MASTER_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @articles.json
[
  {"id": 1, "title": "VPS для новичка", "content": "..."},
  {"id": 2, "title": "Docker Compose", "content": "..."}
]

Поиск:

curl 'https://search.example.com/indexes/articles/search' \
  -H "Authorization: Bearer MASTER_KEY" \
  -d '{"q": "docker vps"}'

Laravel Scout

// .env
SCOUT_DRIVER=meilisearch
MEILISEARCH_HOST=https://search.example.com
MEILISEARCH_KEY=MASTER_KEY
php artisan scout:import "App\\Models\\Article"

См. также Laravel на VPS и Redis для кеша.


Django / Next.js

  • Django: django-meilisearch или прямой HTTP client
  • Next.js: server action → Meilisearch API, UI — instant search

Деплой приложения — Django / Next.js.


Бэкапы индекса

curl -X POST 'https://search.example.com/dumps' \
  -H "Authorization: Bearer MASTER_KEY"

Volume meili_data — в Restic. При падении — переиндексация из БД.


RAM и production

  • Dev: 512 MB
  • 100k документов: 1–2 GB
  • Несколько индексов: 2 GB VPS

Мониторинг — Netdata или Grafana.


Итог

Meilisearch на VPS — поиск за вечер. Docker + master key + reverse proxy = production-ready для SaaS и e-commerce.

VPS 1–2 GB — StormNet Cloud. Стек приложения — Docker Compose.

Частые вопросы

Meilisearch или Elasticsearch для поиска на сайте?

Meilisearch — проще и легче (1–2 GB RAM), typo-tolerance из коробки. Elasticsearch — для больших кластеров и log analytics.

Сколько RAM нужно Meilisearch на VPS?

512 MB для dev, 1–2 GB для production с сотнями тысяч документов. Зависит от размера индекса.