Индекс на дневникаDockup / бележка от практиката
Note / self-host-meilisearch

Как да хоствате Meilisearch самостоятелно през 2026 г.: master keys, индекси и dump файлове

Хоствайте Meilisearch самостоятелно с правилни портове, persistent storage, HTTPS, secrets, backup-и и проверки при upgrade. Научете как да отстраните проблема, когато MEILI_ENV остава development.

Самостоятелното хостване на Meilisearch става интересно при първия redeploy, а не при първия docker run. Ако MEILI_ENV остане development или data volume-ът бъде изгубен при redeploy, Docker все пак може да отчита напълно здрав процес. Разглежданото по-долу deployment решение е организирано около наблюдаемо поведение: създаване на индекс, импортиране на документи, конфигуриране на filterable attributes и доказване, че typo-tolerant заявка и filter връщат очакваните записи.

Предназначението на Meilisearch е ясно: typo-tolerant full-text search с бърз HTTP API. Това описание показва какво трябва да остане публично, какво трябва да остане private и какво трябва да може да възстанови един backup.

Картирайте Meilisearch, преди да докоснете Docker

Разделете четири области при Meilisearch: ingress, listener-а на 7700, durable state и supporting services или локалния капацитет. Локалното изискване за runtime е дисково пространство за индексите плюс резерв за rebuild-и и dump файлове. Направете lifecycle-а му явен, така че преместването на Meilisearch между хостове да не променя поведението незабелязано.

Изпълнете известната работеща транзакция — създайте индекс, импортирайте документи, конфигурирайте filterable attributes и докажете, че typo-tolerant заявка и filter връщат очакваните записи — преди да приемете, че разделянето е завършено. Измерете memory usage при batch indexing, временния дисков обем по време на изграждане на индексите, броя документи и concurrent search traffic, и съхранете резултата заедно с deployment записа. Това осигурява както критерий за приемане, така и първа baseline стойност за капацитета.

Направете стартирането на Meilisearch възпроизводимо

Използвайте команда, която показва всеки важен избор. Тази baseline конфигурация свързва Meilisearch с loopback интерфейса на хоста, добавя известните data mounts и задава първата необходима настройка. Потвърдете локалното изискване, преди да го изложите публично: дисково пространство за индексите плюс резерв за rebuild-и и dump файлове.

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 tag-овете с тествана версия или digest. След стартирането прегледайте docker logs --tail 200 meilisearch и потвърдете, че процесът слуша на 7700. След това изпълнете acceptance действието за Meilisearch; отговорът от root страницата не може да докаже, че целият сценарий работи успешно: създайте индекс, импортирайте документи, конфигурирайте filterable attributes и докажете, че typo-tolerant заявка и filter връщат очакваните записи.

Дайте на Meilisearch един canonical адрес

Приемайте външния URL на Meilisearch като конфигурация, която трябва да се запази при redeploy. Първо предоставете HTTP API през един authenticated HTTPS origin, след което насочете hostname-а към порт 7700, като запазите оригиналните host и scheme.

Checklist-ът за reachability на deployment-а може да докаже, че заявките влизат в container-а. След тази точка известният проблем — MEILI_ENV остава development или data volume-ът е изгубен при redeploy — трябва да се изследва в Meilisearch, неговото state състояние или workload-а, а не в автоматизацията на сертификатите.

Възстановете Meilisearch на празен хост

Надеждният recovery комплект включва планирани dump файлове или snapshots плюс persistent data директорията. Монтирайте /meili_data преди bootstrap, запишете безобидни примерни данни и заменете container-а, за да докажете, че този path наистина е persistent. Volume-ът защитава данните от подмяна на container-а, но не и от загуба на хоста, случайно изтриване или corruption на ниво приложение.

Правете backup-и, които разбират източника на данните: използвайте logical dump-ове за live бази данни, когато е необходимо, и копирайте файлове само от consistent state. Съхранявайте едно encrypted копие извън хоста на Meilisearch. Критерият за приемане при restore трябва да е конкретен — dump файлът се импортира в clean server със същите настройки, брой документи и представително ranking поведение. Ръководството за backup-и, тествани чрез restore обяснява защо единствено успешното изпълнение на job не е достатъчно.

Защитете ценната част на Meilisearch

Не пренасяйте security предположенията от локален tutorial. Специфичният риск при Meilisearch е production да бъде стартиран без master key. Затова в production master key-ят трябва да се използва само за administration, а browser search клиентите да получават ограничени search keys.

Третирайте MEILI_MASTER_KEY според ролята му в Meilisearch: пазете sensitive стойностите извън Git, документирайте ефектите от rotation и никога не заменяйте публичен пример с реална production стойност. Ограничете filesystem и network достъпа, защитете setup endpoint-ите и дефинирайте upload, request или execution limits около memory usage при batch indexing, временния дисков обем по време на изграждане на индексите, броя документи и concurrent search traffic.

Наблюдавайте workload-а, а не само container-а

Capacity тестовете трябва да упражняват memory usage при batch indexing, временния дисков обем по време на изграждане на индексите, броя документи и concurrent search traffic, а не да повтарят заявка към /. Изпълнете сценария „създайте индекс, импортирайте документи, конфигурирайте filterable attributes и докажете, че typo-tolerant заявка и filter връщат очакваните записи“ при реалистична concurrency и записвайте latency, error rate и ръста на storage.

Планирането на upgrade трябва да отчита този риск: съвместимостта на Meilisearch dump файловете и изискванията за index rebuild трябва да бъдат проверени, преди да смените версиите. Тествайте новия release с representative input, след това повторете acceptance транзакцията и сравнете резултата. Ако MEILI_ENV остане development или data volume-ът бъде изгубен при redeploy, запишете неуспешната транзакция и проверете първата засегната граница, вместо да приемате, че причината е ingress.

Превърнете smoke теста на Meilisearch в release проверка

При Meilisearch дефинирайте известна работеща транзакция преди старта: създайте индекс, импортирайте документи, конфигурирайте filterable attributes и докажете, че typo-tolerant заявка и filter връщат очакваните записи. Съхранявайте нейните prerequisites, очаквания response и стъпките за cleanup във version control, без secret стойности. Pin-нете image-а, използван за създаването на тази reference конфигурация.

Използвайте транзакцията, за да валидирате replacement и независим restore. Възстановената услуга е приемлива само когато dump файлът се импортира в clean server със същите настройки, брой документи и представително ranking поведение. Едновременно с това наблюдавайте memory usage при batch indexing, временния дисков обем по време на изграждане на индексите, броя документи и concurrent search traffic, и превърнете най-бавната или най-ограничената част в service-level alert.

Gate-ът трябва да включва и negative case: изпратете безобиден input близо до resource или format limit-а, свързан с тази граница: MEILI_ENV остава development или data volume-ът е изгубен при redeploy. Потвърдете, че Meilisearch генерира actionable error, като същевременно запазва данните, възстановете валидното състояние и повторете известната работеща транзакция. Съхраняването на двата резултата предотвратява превръщането на повърхностен health endpoint в единственото production доказателство.

Поддържайте Meilisearch ясен, докато Dockup управлява routing-а

One-click deployment-ът на Meilisearch в Dockup трябва да прави replacement-а безопасен: route-ът продължава да сочи към 7700, secrets не са вградени в image-а, а persistent path-овете се появяват отново в новия container. Същият deployment може да работи върху Dockup compute или на attached машина.

Завършете специфичната за приложението работа, като потвърдите локалното изискване — дисково пространство за индексите плюс резерв за rebuild-и и dump файлове, приложите canonical публичния адрес и изпълните тази acceptance проверка: създайте индекс, импортирайте документи, конфигурирайте filterable attributes и докажете, че typo-tolerant заявка и filter връщат очакваните записи. Добавете резултата от restore-а към runbook-а, преди да допуснете реални потребители.

Често задавани въпроси

Какво е необходимо на Meilisearch за production deployment?

Насочете Meilisearch container-а на порт 7700 през един HTTPS origin. Локалното изискване за runtime е дисково пространство за индексите плюс резерв за rebuild-и и dump файлове. Не приемайте Meilisearch за готов, докато не можете да създадете индекс, да импортирате документи, да конфигурирате filterable attributes и да докажете, че typo-tolerant заявка и filter връщат очакваните записи.

Кои данни на Meilisearch трябва да бъдат включени в backup?

Направете /meili_data persistent и включете планираните dump файлове или snapshots плюс persistent data директорията в един и същ recovery manifest. Един clean Meilisearch restore е успешен само когато dump файлът се импортира в clean server със същите настройки, брой документи и представително ranking поведение.

Изисква ли Meilisearch HTTPS зад reverse proxy?

Използвайте HTTPS за публичния Meilisearch origin и оставете порт 7700 във вътрешния route. Приложете настройката на Meilisearch правилно: предоставяйте HTTP API през един authenticated HTTPS origin. При Meilisearch HTTPS защитава credentials или потребителското съдържание по време на преноса и поддържа consistent поведението на клиентите, зависещо от origin-а.

Как трябва да бъде тестван upgrade на Meilisearch?

Възстановете текущото state състояние на Meilisearch в изолирано deployment решение, приложете candidate версията и повторете acceptance транзакцията. Обърнете специално внимание, защото съвместимостта на Meilisearch dump файловете и изискванията за index rebuild трябва да бъдат проверени преди смяна на версиите. Запазете предишния Meilisearch image, докато не изясните границите на data migration и rollback.