JournalindeksDockup / feltnotat
Note / self-host-meilisearch

Slik selvhoster du Meilisearch i 2026: master keys, indekser og dumps

Selvhost Meilisearch med riktige porter, persistent lagring, HTTPS, secrets, sikkerhetskopier og kontroller før oppgradering. Lær hvordan du løser problemet når MEILI_ENV forblir development.

Det er ved den første redeployen at selvhosting av Meilisearch virkelig blir interessant – ikke ved den første docker run. Hvis MEILI_ENV forblir development eller datavolumet går tapt under en redeploy, kan Docker fortsatt rapportere at prosessen er helt frisk. Distribusjonen nedenfor er bygget rundt observerbar oppførsel: opprett en indeks, importer dokumenter, konfigurer filterable attributes og bevis at et typo-tolerant søk og filter returnerer de forventede postene.

Meilisearch har én tydelig oppgave: typo-tolerant full-text search med et raskt HTTP API. Denne beskrivelsen forteller oss hva som må være offentlig, hva som bør forbli privat, og hva en backup må kunne gjenopprette.

Kartlegg Meilisearch før du rører Docker

Skill mellom fire forhold i Meilisearch: ingress, listeneren på 7700, persistent state og støttetjenester eller lokal kapasitet. Det lokale runtime-kravet er disk dimensjonert for indekser, pluss margin for rebuilds og dumps. Hold livssyklusen eksplisitt, slik at flytting av Meilisearch mellom verter ikke endrer oppførselen i det stille.

Kjør den kjente, fungerende transaksjonen – opprett en indeks, importer dokumenter, konfigurer filterable attributes og bevis at et typo-tolerant søk og filter returnerer de forventede postene – før du anser separasjonen som fullført. Mål minnebruk ved batch indexing, midlertidig diskbruk under index builds, antall dokumenter og samtidig søketrafikk, og lagre resultatet sammen med distribusjonsdokumentasjonen. Det gir både et akseptansekriterium og den første kapasitetsbaseline.

Gjør oppstarten av Meilisearch reproduserbar

Bruk en kommando som eksponerer alle viktige valg. Denne baseline-konfigurasjonen binder Meilisearch til loopback på verten, legger til de kjente datamontene og angir den første nødvendige innstillingen. Bekreft det lokale kravet før eksponering: disk dimensjonert for indekser, pluss margin for rebuilds og 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

Bytt ut flytende tags med en testet versjon eller digest. Kontroller docker logs --tail 200 meilisearch etter oppstart, og bekreft at prosessen lytter på 7700. Kjør deretter Meilisearch-akseptansetesten. Et svar fra root-siden kan ikke bevise at hele scenariet fungerer: opprett en indeks, importer dokumenter, konfigurer filterable attributes og bevis at et typo-tolerant søk og filter returnerer de forventede postene.

Gi Meilisearch én kanonisk adresse

Behandle den eksterne Meilisearch-URL-en som konfigurasjon som skal overleve redeploys. Betjen først HTTP API-et gjennom én autentisert HTTPS-origin. Rutelegg deretter hostnavnet til port 7700, med den opprinnelige hosten og scheme intakt.

Kontrollisten for tilgjengelighet etter deployment kan bevise at forespørsler kommer inn i containeren. Etter dette bør den kjente feilen – at MEILI_ENV forblir development eller at datavolumet går tapt under en redeploy – undersøkes i Meilisearch, state-en eller workloaden, ikke i sertifikatautomatiseringen.

Gjenopprett Meilisearch på en tom vert

Det persistente gjenopprettingsgrunnlaget er planlagte dumps eller snapshots, i tillegg til den persistente datakatalogen. Monter /meili_data før bootstrap, skriv ufarlige eksempeldata og erstatt containeren for å bevise at banen faktisk er persistent. Et volum beskytter data mot at containeren erstattes, men ikke mot tap av verten, utilsiktet sletting eller korrupsjon på applikasjonsnivå.

Ta backup som forstår datakilden: bruk logical dumps for aktive databaser når det er nødvendig, og kopier filer bare fra en konsistent state. Oppbevar én kryptert kopi utenfor Meilisearch-verten. Akseptansekriteriet for en restore må være konkret – en dump importeres til en ren server med de samme innstillingene, samme antall dokumenter og en representativ ranking. Guiden for restore-testede backuper forklarer hvorfor det ikke er nok at jobben rapporterer suksess.

Beskytt den verdifulle delen av Meilisearch

Ikke overfør sikkerhetsantakelser fra en lokal tutorial. Meilisearchs spesifikke utfordring er å starte produksjon uten en master key. I produksjon bør master key derfor reserveres for administrasjon, mens nettleserbaserte søkeklienter får begrensede search keys.

Behandle MEILI_MASTER_KEY i tråd med rollen den har i Meilisearch: hold sensitive verdier ute av Git, dokumenter konsekvensene av rotasjon, og bruk aldri et offentlig eksempel i produksjon. Begrens tilgang til filsystem og nettverk, beskytt setup-endepunkter, og definer grenser for upload, requests eller kjøring rundt minnebruk ved batch indexing, midlertidig diskbruk under index builds, antall dokumenter og samtidig søketrafikk.

Overvåk workloaden, ikke bare containeren

Kapasitetstester bør dekke minnebruk ved batch indexing, midlertidig diskbruk under index builds, antall dokumenter og samtidig søketrafikk – ikke gjentatte forespørsler til /. Kjør scenariet «opprett en indeks, importer dokumenter, konfigurer filterable attributes og bevis at et typo-tolerant søk og filter returnerer de forventede postene» med realistisk samtidighet, og registrer latency, error rate og vekst i lagringsforbruket.

Planlegging av oppgraderinger må ta høyde for denne risikoen: kompatibilitet for Meilisearch-dumper og krav til index rebuild må kontrolleres før versjoner endres. Test den nye releasen med representative inputdata, kjør deretter akseptansetransaksjonen på nytt og sammenlign resultatet. Hvis MEILI_ENV forblir development eller datavolumet går tapt under en redeploy, må du dokumentere den feilede transaksjonen og undersøke den første involverte grensen i stedet for å anta at ingress er årsaken.

Gjør Meilisearch smoke-testen til en release-sjekk

For Meilisearch bør du definere en kjent, fungerende transaksjon før lansering: opprett en indeks, importer dokumenter, konfigurer filterable attributes og bevis at et typo-tolerant søk og filter returnerer de forventede postene. Legg forutsetninger, forventet respons og cleanup-steg i versjonskontroll, uten secret-verdier. Lås imaget som brukes til å etablere denne referansen.

Bruk transaksjonen til å validere både en erstatning og en uavhengig restore. Den gjenopprettede tjenesten er bare godkjent når en dump importeres til en ren server med de samme innstillingene, samme antall dokumenter og en representativ ranking. Overvåk samtidig minnebruk ved batch indexing, midlertidig diskbruk under index builds, antall dokumenter og samtidig søketrafikk, og gjør den tregeste eller mest begrensede delen om til et service-level-varsel.

Sjekkpunktet trenger også et negativt testtilfelle: send inn ufarlige data nær ressurs- eller formatgrensen som er knyttet til denne grensen: MEILI_ENV forblir development eller datavolumet går tapt under en redeploy. Bekreft at Meilisearch produserer en handlingsrettet feilmelding samtidig som dataene bevares, gjenopprett den gyldige tilstanden og kjør den kjente, fungerende transaksjonen på nytt. Når du beholder begge resultatene, hindrer du at et overfladisk health-endepunkt blir det eneste produksjonsbeviset.

Hold Meilisearch eksplisitt mens Dockup håndterer ruting

Dockups ettklikksdistribusjon av Meilisearch bør gjøre erstatning trygg: ruten fortsetter å peke mot 7700, secrets bygges ikke inn i imaget, og persistente paths kommer tilbake i den nye containeren. Den samme distribusjonen kan kjøre på Dockup compute eller en tilkoblet maskin.

Fullfør det applikasjonsspesifikke arbeidet ved å bekrefte det lokale kravet – disk dimensjonert for indekser, pluss margin for rebuilds og dumps – bruke den kanoniske offentlige adressen og kjøre denne akseptansetesten: opprett en indeks, importer dokumenter, konfigurer filterable attributes og bevis at et typo-tolerant søk og filter returnerer de forventede postene. Legg restore-resultatet i runbooken før ekte brukere tar tjenesten i bruk.

Vanlige spørsmål

Hva trenger Meilisearch i en produksjonsdistribusjon?

Rutelegg Meilisearch-containeren på port 7700 gjennom én HTTPS-origin. Det lokale runtime-kravet er disk dimensjonert for indekser, pluss margin for rebuilds og dumps. Ikke erklær Meilisearch klar før du kan opprette en indeks, importere dokumenter, konfigurere filterable attributes og bevise at et typo-tolerant søk og filter returnerer de forventede postene.

Hvilke Meilisearch-data hører hjemme i en backup?

Gjør /meili_data persistent, og inkluder planlagte dumps eller snapshots samt den persistente datakatalogen i det samme gjenopprettingsmanifestet. En ren Meilisearch-restore er bare godkjent når en dump importeres til en ren server med de samme innstillingene, samme antall dokumenter og en representativ ranking.

Krever Meilisearch HTTPS bak en reverse proxy?

Bruk HTTPS for den offentlige Meilisearch-originen, og behold port 7700 på den interne ruten. Bruk Meilisearch-innstillingen riktig: betjen HTTP API-et gjennom én autentisert HTTPS-origin. For Meilisearch beskytter HTTPS credentials eller brukerinnhold under overføring og sørger for konsistent klientoppførsel som avhenger av origin.

Hvordan bør en Meilisearch-oppgradering testes?

Gjenopprett den gjeldende Meilisearch-state-en i en isolert distribusjon, bruk kandidatversjonen og kjør akseptansetransaksjonen på nytt. Vær spesielt oppmerksom på at kompatibilitet for Meilisearch-dumper og krav til index rebuild må kontrolleres før versjoner endres. Behold det forrige Meilisearch-imaget til grensene for datamigrering og rollback er forstått.