Как разместить Meilisearch на собственном сервере в 2026 году: master keys, индексы и dumps
Разместите Meilisearch на собственном сервере с корректными портами, постоянным хранилищем, HTTPS, секретами, резервным копированием и проверками обновлений. Узнайте, как исправить ситуацию, когда MEILI_ENV остаётся development.
Преимущества самостоятельного размещения Meilisearch становятся очевидны при первом redeploy, а не после первого docker run. Если MEILI_ENV остаётся development или при redeploy теряется data volume, Docker всё равно может сообщать, что процесс полностью работоспособен. Ниже приведена схема deployment, основанная на наблюдаемом поведении: создать индекс, импортировать документы, настроить filterable attributes и убедиться, что typo-tolerant query и filter возвращают ожидаемые записи.
Назначение Meilisearch однозначно: полнотекстовый поиск с поддержкой опечаток и быстрым HTTP API. Это описание сразу показывает, что должно оставаться публичным, что следует держать приватным и что должен уметь восстанавливать backup.
Разберитесь в устройстве Meilisearch до настройки Docker
Разделите для Meilisearch четыре компонента: ingress, listener на 7700, постоянное состояние и supporting services или локальные ресурсы. Локальное требование к runtime — дисковое пространство для индексов с запасом под rebuild и dumps. Явно зафиксируйте lifecycle, чтобы перенос Meilisearch между хостами не менял поведение незаметно.
Выполните проверенную транзакцию — создайте индекс, импортируйте документы, настройте filterable attributes и убедитесь, что typo-tolerant query и filter возвращают ожидаемые записи, — прежде чем считать такое разделение завершённым. Измерьте потребление памяти при batch indexing, объём временного диска во время построения индексов, количество документов и нагрузку от одновременных поисковых запросов; сохраните результаты вместе с данными deployment. Это даст критерий приёмки и первую базовую оценку capacity.
Сделайте запуск Meilisearch воспроизводимым
Используйте команду, в которой явно указаны все важные параметры. В этой базовой конфигурации Meilisearch привязан к loopback хоста, подключены необходимые data mounts и задана первая обязательная настройка. До публикации сервиса подтвердите локальное требование: дисковое пространство для индексов с запасом под rebuild и dumps.
docker run -d \
--name meilisearch \
--restart unless-stopped \
-p 127.0.0.1:7700:7700 \
-v meilisearch-data:/meili_data \
-e MEILI_MASTER_KEY=replace-with-a-long-random-value \
getmeili/meilisearch:latest
Замените floating tags на протестированную версию или digest. После запуска проверьте docker logs --tail 200 meilisearch и убедитесь, что процесс слушает порт 7700. Затем выполните acceptance action для Meilisearch; ответ root page не доказывает успешность всего сценария: создайте индекс, импортируйте документы, настройте filterable attributes и убедитесь, что typo-tolerant query и filter возвращают ожидаемые записи.
Задайте для Meilisearch единый canonical address
Считайте внешний URL Meilisearch конфигурацией, которая должна сохраняться после redeploy. Сначала предоставьте HTTP API через один authenticated HTTPS origin, затем направьте hostname на порт 7700, сохранив исходные host и scheme.
Checklist доступности deployment поможет проверить, что запросы попадают в контейнер. После этого известную проблему — MEILI_ENV остаётся development или при redeploy теряется data volume — следует искать в Meilisearch, его состоянии или workload, а не в автоматизации сертификатов.
Восстановите Meilisearch на пустом хосте
Набор данных для надёжного восстановления состоит из scheduled dumps или snapshots и persistent data directory. Подключите /meili_data до bootstrap, запишите безвредные тестовые данные и замените контейнер, чтобы доказать фактическую сохранность этого пути. Volume защищает данные от замены контейнера, но не от потери хоста, случайного удаления или corruption на уровне приложения.
Создавайте backups с учётом источника данных: при необходимости используйте logical dumps для работающих баз данных, а файлы копируйте только из согласованного состояния. Храните одну зашифрованную копию отдельно от хоста Meilisearch. Критерий приёмки восстановления должен быть конкретным — dump импортируется на чистый сервер с теми же настройками, количеством документов и репрезентативным ranking. В руководстве по backup с проверенным восстановлением объясняется, почему одного успешного завершения job недостаточно.
Защитите самые ценные данные Meilisearch
Не переносите security assumptions из локального tutorial. Главная особенность Meilisearch — риск запуска production без master key. Поэтому в production master key следует использовать только для администрирования, а browser search clients выдавать ограниченные search keys.
Работайте с MEILI_MASTER_KEY с учётом его роли в Meilisearch: не храните чувствительные значения в Git, документируйте последствия rotation и никогда не подставляйте публичный пример в production. Ограничьте доступ к файловой системе и сети, защитите setup endpoints и задайте лимиты upload, request или execution для batch indexing memory, временного диска во время построения индексов, количества документов и одновременного search traffic.
Следите за workload, а не только за контейнером
Capacity tests должны проверять batch indexing memory, временный диск во время построения индексов, количество документов и одновременный search traffic, а не отправлять повторные запросы к /. Запустите сценарий «создать индекс, импортировать документы, настроить filterable attributes и убедиться, что typo-tolerant query и filter возвращают ожидаемые записи» при реалистичной concurrency; зафиксируйте latency, error rate и рост storage.
При планировании upgrade необходимо учитывать следующий риск: до смены версий нужно проверить совместимость Meilisearch dumps и требования к rebuild индексов. Протестируйте новый release на репрезентативных данных, затем повторите acceptance transaction и сравните результат. Если MEILI_ENV остаётся development или при redeploy теряется data volume, зафиксируйте неудачную транзакцию и проверьте первую затронутую границу вместо того, чтобы считать причиной ingress.
Превратите smoke test Meilisearch в release check
Для Meilisearch определите проверенную транзакцию до запуска: создайте индекс, импортируйте документы, настройте filterable attributes и убедитесь, что typo-tolerant query и filter возвращают ожидаемые записи. Храните в version control её prerequisites, ожидаемый response и шаги cleanup, но не секретные значения. Закрепите image, использованный для создания этого эталона.
Используйте транзакцию для проверки replacement и независимого restore. Восстановленный сервис считается пригодным только в том случае, если dump импортируется на чистый сервер с теми же настройками, количеством документов и репрезентативным ranking. Одновременно наблюдайте за batch indexing memory, временным диском во время построения индексов, количеством документов и одновременным search traffic; самую медленную или наиболее ограниченную часть превратите в service-level alert.
В gate также должен входить negative case: отправьте безвредные данные, близкие к resource или format limit, связанному с этой границей: MEILI_ENV остаётся development или при redeploy теряется data volume. Убедитесь, что Meilisearch выдаёт понятную actionable error, сохраняя данные, затем восстановите корректное состояние и повторите проверенную транзакцию. Хранение обоих результатов не позволит поверхностному health endpoint стать единственным свидетельством работоспособности production.
Сохраняйте настройки Meilisearch явными, пока Dockup занимается routing
One-click deployment Meilisearch в Dockup должен обеспечивать безопасную замену: route продолжает направлять запросы на 7700, секреты не встраиваются в image, а persistent paths возвращаются в новом контейнере. Тот же deployment можно запускать на compute-ресурсах Dockup или на подключённой машине.
Завершите app-specific настройку, подтвердив локальное требование — дисковое пространство для индексов с запасом под rebuild и dumps, задав canonical public address и выполнив следующую acceptance check: создайте индекс, импортируйте документы, настройте filterable attributes и убедитесь, что typo-tolerant query и filter возвращают ожидаемые записи. До появления реальных пользователей добавьте результат restore в runbook.
Часто задаваемые вопросы
Что нужно Meilisearch для production deployment?
Направьте контейнер Meilisearch на порту 7700 через один HTTPS origin. Локальное требование к runtime — дисковое пространство для индексов с запасом под rebuild и dumps. Не объявляйте Meilisearch готовым, пока не сможете создать индекс, импортировать документы, настроить filterable attributes и убедиться, что typo-tolerant query и filter возвращают ожидаемые записи.
Какие данные Meilisearch нужно включить в backup?
Сохраняйте /meili_data и включайте scheduled dumps или snapshots вместе с persistent data directory в единый recovery manifest. Чистое восстановление Meilisearch считается успешным только тогда, когда dump импортируется на чистый сервер с теми же настройками, количеством документов и репрезентативным ranking.
Нужен ли Meilisearch HTTPS за reverse proxy?
Используйте HTTPS для публичного origin Meilisearch, а порт 7700 оставляйте во внутреннем route. Корректно примените настройку Meilisearch: предоставляйте HTTP API через один authenticated HTTPS origin. Для Meilisearch HTTPS защищает credentials или пользовательский контент при передаче и обеспечивает согласованное поведение клиентов, зависящее от origin.
Как тестировать upgrade Meilisearch?
Восстановите текущее состояние Meilisearch в изолированном deployment, примените candidate version и повторите acceptance transaction. Будьте особенно внимательны: до смены версий нужно проверить совместимость Meilisearch dumps и требования к rebuild индексов. Сохраняйте предыдущий Meilisearch image, пока не будут понятны границы data migration и rollback.
