Journal-indexDockup / praktijknotitie
Note / self-host-typesense

Typesense zelf hosten in 2026: API-sleutels, collecties en back-ups

Host Typesense zelf met de juiste poorten, persistente opslag, HTTPS, secrets, back-ups en upgradecontroles. Leer hoe je problemen oplost wanneer de opdracht --data-dir weglaat.

De kortste Typesense-demo bewijst dat een proces op poort 8108 luistert. Voor productie is sterker bewijs nodig. De omgeving moet dit scenario ook doorstaan nadat de container is vervangen: definieer een collectieschema, importeer voorbeelddocumenten, voer een typo search, facets en filters uit en test vervolgens het health-endpoint.

Typesense wordt ingezet voor een duidelijk doel: een instant zoekmachine met een eenvoudige HTTP API. De meest voorkomende valkuil bij de deployment is dat de opdracht --data-dir weglaat of dat health checks het verkeerde pad aanroepen. Daarom verdienen de afhandeling van de publieke URL en duurzame state evenveel aandacht als het starten van de image.

Beperk de bevoegdheden van Typesense

Het toepassingsspecifieke beveiligingsrisico is het opnemen van de bootstrap-admin-API-sleutel in browsercode. De operationele oplossing is om de bootstrap-administratorsleutel nooit naar de browser te sturen; genereer voor publieke clients search keys met beperkte scope. Rond de bootstrap af via een afgeschermde route en verwijder tijdelijke toegang voor de setup direct daarna.

Behandel TYPESENSE_API_KEY volgens de rol die deze in Typesense heeft: houd gevoelige waarden buiten Git, documenteer de gevolgen van rotatie en gebruik nooit een publiek voorbeeld in productie. Geef het Typesense-proces alleen de gedocumenteerde mounts en dependency-routes; vermijd toegang tot de host-root en de Docker-socket. Log mislukte authenticatie en configuratiefouten, maar maskeer tokens, connection strings en gebruikerscontent.

De productieopzet van Typesense

Het Typesense HTTP-proces luistert op 8108; houd die poort op het applicatienetwerk en publiceer alleen de platformroute. De lokale runtime vereist schijfruimte voor collecties en voldoende geheugen voor de actieve dataset. Documenteer de verwachte capaciteit, eigenaar en foutmodus in plaats van dit aan een image-default over te laten.

Leg de grens vast in een kort contract: wie verantwoordelijk is voor de vereiste, welke credential wordt gebruikt, welke timeout acceptabel is en hoe een fout zichtbaar wordt. Voer vervolgens deze transactie uit: definieer een collectieschema, importeer voorbeelddocumenten, voer een typo search, facets en filters uit en test vervolgens het health-endpoint. Observeer tijdens deze run het RAM-gebruik voor actieve indexen, de omvang van bulk-imports, de persistentie op schijf en het clusterreplicatieverkeer. Deze workload levert namelijk een nuttiger uitgangspunt voor de capaciteit dan een inactieve container.

Containerinstellingen die je moet controleren

De eerste container moet eenvoudig te verwijderen en opnieuw aan te maken zijn. Houd data buiten de writable layer, bind poort 8108 alleen waar de proxy erbij kan en geef configuratie door tijdens runtime.

docker run -d \
  --name typesense \
  --restart unless-stopped \
  -p 127.0.0.1:8108:8108 \
  -v typesense-data:/data \
  -e TYPESENSE_API_KEY=replace-with-a-long-random-value \
  -e TYPESENSE_DATA_DIR=/data \
  typesense/typesense:latest

Pin de image na de eerste test. Lees de eerste startup-fout in plaats van de uiteindelijke restartmelding, controleer elke mount met docker inspect en volg de logs terwijl je een collectieschema definieert, voorbeelddocumenten importeert, een typo search, facets en filters uitvoert en vervolgens het health-endpoint test. Deze volgorde maakt onderscheid tussen een onjuiste image-opdracht en een probleem met dependencies of rechten.

De Typesense-releasegate

Een release candidate voor Typesense verdient verkeer door een vast scenario volledig uit te voeren: definieer een collectieschema, importeer voorbeelddocumenten, voer een typo search, facets en filters uit en test vervolgens het health-endpoint. Leg de image-digest, de effectieve niet-geheime configuratie, de publieke origin en de tijdstempels van dit scenario vast. De testdata moet wegwerpbaar zijn, maar realistisch genoeg om hetzelfde pad als gebruikers te doorlopen.

Voer de test opnieuw uit nadat je de runtime hebt vervangen. Bouw de service daarna opnieuw op vanuit de datadirectory en, voor clusters, vanuit consistente snapshots van elke node. De recovery is geslaagd wanneer collecties, aliassen, overrides en synonyms terugkeren en dezelfde query een equivalent gerangschikt resultaat oplevert. Vergelijk het gemeten RAM-gebruik voor actieve indexen, de omvang van bulk-imports, de persistentie op schijf en het clusterreplicatieverkeer met de vorige release. Onderzoek betekenisvolle afwijkingen voordat je de release promoveert.

Voer ten slotte deze gecontroleerde fout uit: dien onschuldige input in die dicht bij de resource- of formaatl limiet voor deze grens ligt: de opdracht laat --data-dir weg of health checks roepen het verkeerde pad aan. Controleer of Typesense de fout uitlegt, bestaande state niet beschadigt en hervat zodra de geldige situatie terugkeert. Bewaar een geredigeerd logfragment en de hersteltijd. Samen dekken deze controles gedrag, duurzaamheid en beheerbaarheid af, in plaats van alleen de uptime van het proces.

Routeer Typesense zonder onjuiste HTTPS-aannames

De publieke grens voor Typesense moet bestaan uit één canonieke hostnaam, automatische TLS en één intern doel op 8108. Routeer de HTTP API, maar houd peering ports privé, zodat clients terugkeren naar een adres dat de service herkent.

Als de acceptatietransactie mislukt, classificeer dan de eerste fout. Problemen met DNS, certificaten en 502 horen thuis in de TLS-validatiechecklist. De situatie “de opdracht laat --data-dir weg of health checks roepen het verkeerde pad aan” hoort aan de applicatiekant thuis, nadat een request Typesense succesvol heeft bereikt.

Oefen de risicovolle Typesense-wijziging

Gebruik het definiëren van een collectieschema, importeren van voorbeelddocumenten, uitvoeren van een typo search, facets en filters en testen van het health-endpoint als Typesense-smoketest na elke deployment. De bijbehorende metrics zijn het RAM-gebruik voor actieve indexen, de omvang van bulk-imports, de persistentie op schijf en het clusterreplicatieverkeer; stel alerts in op punten waarop deze resources de gebruikersactie beginnen te vertragen.

Het grootste wijzigingsrisico is dat wijzigingen aan collectieschema's en snapshots een repetitie vereisen, omdat een image-rollback een wijziging in het dataformaat niet ongedaan kan maken. Een veilige release begint met een herstelbare snapshot en valideert elke eenrichtingswijziging in state voordat verkeer wordt omgeleid. Wanneer de opdracht --data-dir weglaat of health checks het verkeerde pad aanroepen, houd je de mislukte container lang genoeg beschikbaar om de configuratie en de eerste fout te lezen.

Bewijs dat Typesense een vervanging overleeft

Maak een lijst van de state voordat het eerste echte record wordt aangemaakt: de datadirectory en, voor clusters, consistente snapshots van elke node. Mount /data vóór de bootstrap, schrijf onschuldige voorbeelddata en vervang de container om te bewijzen dat dit pad daadwerkelijk persistent is. Bevestig de mount door onschuldige data te schrijven, Typesense te vervangen en die data opnieuw te lezen.

Snapshots zijn waardevol voor een snelle rollback, maar een onafhankelijke back-up is nodig wanneer de host of het volume verdwijnt. Herstel in een lege omgeving met de gepinde image en controleer of collecties, aliassen, overrides en synonyms terugkeren en dezelfde query een equivalent gerangschikt resultaat oplevert. Gebruik persistente volumes en snapshots om deze twee herstelmechanismen van elkaar gescheiden te houden.

Een Dockup-deployment heeft nog steeds een Typesense-acceptatietest nodig

Routing, certificaten, het vervangen van services en gekoppelde opslag zijn geschikte doelen voor automation. Dockup regelt die onderdelen voor Typesense en kan de bijbehorende managed database provisionen of verbinding maken met services op de eigen server van een klant.

Wat Dockup niet zelf moet bedenken, is het trustbeleid van Typesense. Routeer na de deployment de HTTP API terwijl je peering ports privé houdt, dwing deze grens af — stuur de bootstrap-administratorsleutel nooit naar de browser; genereer search keys met beperkte scope voor publieke clients — en verifieer het resultaat van dit scenario: definieer een collectieschema, importeer voorbeelddocumenten, voer een typo search, facets en filters uit en test vervolgens het health-endpoint. Het resultaat is infrastructuur met één klik en een toepassingsspecifieke acceptatietest.

Veelgestelde vragen

Wat heeft Typesense nodig voor een deployment in productie?

Routeer de Typesense-container op poort 8108 via één HTTPS-origin. De lokale runtime vereist schijfruimte voor collecties en voldoende geheugen voor de actieve dataset. Beschouw Typesense pas als gereed wanneer je een collectieschema kunt definiëren, voorbeelddocumenten kunt importeren, een typo search, facets en filters kunt uitvoeren en vervolgens het health-endpoint kunt testen.

Welke Typesense-data hoort in een back-up?

Maak /data persistent en neem de datadirectory op in hetzelfde recovery-manifest als, voor clusters, consistente snapshots van elke node. Een schone Typesense-restore is alleen geslaagd wanneer collecties, aliassen, overrides en synonyms terugkeren en dezelfde query een equivalent gerangschikt resultaat oplevert.

Heeft Typesense HTTPS nodig achter een reverse proxy?

Gebruik HTTPS voor de publieke Typesense-origin en houd poort 8108 op de interne route. Pas de Typesense-instelling correct toe: routeer de HTTP API terwijl je peering ports privé houdt. Voor Typesense beschermt HTTPS credentials of gebruikerscontent tijdens transport en zorgt het voor consistent clientgedrag dat afhankelijk is van de origin.

Hoe moet je een Typesense-upgrade testen?

Herstel de huidige Typesense-state in een geïsoleerde deployment, pas de kandidaatversie toe en herhaal de acceptatietransactie. Let hier extra op, omdat wijzigingen aan collectieschema's en snapshots een repetitie vereisen: een image-rollback kan een wijziging in het dataformaat niet ongedaan maken. Houd de vorige Typesense-image beschikbaar totdat de grenzen voor datamigratie en rollback duidelijk zijn.