Typesense installieren: Docker, Bare Metal und Production-Setup

Typesense lässt sich sehr schnell installieren. Fßr lokale Tests reicht ein einzelner Docker-Befehl. Fßr Produktion braucht es jedoch mehr: persistente Daten, API-Key-Strategie, Reverse Proxy, HTTPS, Backups, Monitoring und ein klares Sicherheitsmodell.

Dieser Leitfaden zeigt drei Stufen:

  • Docker-Quickstart fĂźr Entwicklung
  • Docker Compose fĂźr reproduzierbare Setups
  • Bare-Metal- und Production-Setup mit Reverse Proxy und API Keys

Der offizielle Typesense-Installationsleitfaden beschreibt Docker, Linux-Pakete, macOS/Homebrew und Typesense Cloud als Installationswege; standardmäßig startet Typesense auf Port 8108.

Wie installiere ich Typesense am schnellsten?

Der schnellste Weg fßhrt ßber Docker. Damit starten Sie einen lauffähigen Typesense-Server mit persistentem Volume und API-Key in wenigen Sekunden.

docker run -p 8108:8108 \
-v typesense-data:/data \
typesense/typesense:0.25.2 \
--data-dir /data \
--api-key=xyz-super-secret \
--enable-cors

Danach testen Sie die Erreichbarkeit:

curl http://localhost:8108/health

Erwartete Antwort:

{"ok":true}

Der Ăśffentliche Docker-Hub-Eintrag typesense/typesense wird von Typesense gepflegt und beschreibt Typesense als Suchengine fĂźr Instant Search, Auto-Suggest, Facetten- und Vektorsuche.

 

Welche Installations-Optionen bietet Typesense?

Docker

Docker ist der pragmatischste Einstieg.

Geeignet fĂźr:

  • lokale Entwicklung
  • Testsysteme
  • kleine Staging-Umgebungen
  • Container-basierte Deployments

Vorteile:

  • schnell startklar
  • leicht reproduzierbar
  • einfach zu entfernen
  • gut fĂźr CI/CD

 

Native Linux-Pakete

FĂźr produktive Linux-Server ohne Container-Stack eignen sich DEB- und RPM-Pakete.

Vorteile:

  • systemd-Integration
  • Journal-Logging
  • Auto-Restart
  • klassische Serverwartung

Die offizielle Dokumentation nennt native Linux-Pakete als unterstĂźtzten Installationsweg.

 

macOS und Typesense Cloud

FĂźr lokale Experimente unter macOS ist Homebrew praktisch.

Wer gar keine Infrastruktur betreiben mĂśchte, nutzt Typesense Cloud. Die Entscheidung zwischen Cloud und Self-Hosted sollte jedoch nicht nur Ăźber Kosten, sondern auch Ăźber Betriebskompetenz getroffen werden.

Mehr dazu: /typesense-cloud-vs-self-hosted/

 

Stabiles Docker-Compose-Setup

FĂźr Teams ist Docker Compose meist besser als ein einzelner docker run-Befehl.

services:
typesense:
image: typesense/typesense:0.25.2
restart: unless-stopped
ports:
- "8108:8108"
volumes:
- typesense-data:/data
environment:
TYPESENSE_API_KEY: ${TYPESENSE_API_KEY}
TYPESENSE_DATA_DIR: /data
TYPESENSE_ENABLE_CORS: "true"

volumes:
typesense-data:

Die .env-Datei:

TYPESENSE_API_KEY=xyz-super-secret

Start:

docker compose up -d

Logs prĂźfen:

docker compose logs -f typesense

Wichtig: Die .env-Datei gehĂśrt nicht ins Git-Repository.

 

Typesense Bare Metal auf Linux installieren

Auf produktiven Linux-Servern ohne Container-Layer ist die Paketinstallation eine robuste Option.

 

Debian / Ubuntu

curl -O https://dl.typesense.org/releases/0.25.2/typesense-server-0.25.2-amd64.deb
sudo apt install ./typesense-server-0.25.2-amd64.deb

 

RHEL / AlmaLinux / Rocky Linux

sudo dnf install https://dl.typesense.org/releases/0.25.2/typesense-server-0.25.2-1.x86_64.rpm

Dienst aktivieren:

sudo systemctl enable --now typesense-server
sudo systemctl status typesense-server

Die Typesense-Dokumentation weist darauf hin, dass der API-Key in der Konfigurationsdatei unter /etc/typesense/typesense-server.ini eingesehen oder geändert werden kann.

 

Was steht in der Typesense-Konfiguration?

Die zentrale Konfiguration liegt typischerweise in:

/etc/typesense/typesense-server.ini

Beispiel:

[server]
api-key = xyz-super-secret
data-dir = /var/lib/typesense
api-port = 8108
peering-port = 8107
enable-cors = true
log-dir = /var/log/typesense
log-level = INFO
snapshot-interval-seconds = 3600

Wichtige Parameter:

Parameter Bedeutung
api-key Admin- oder Bootstrap-Key
data-dir Datenverzeichnis
api-port HTTP-API-Port
peering-port Cluster-Kommunikation
enable-cors CORS fĂźr Browserzugriffe
snapshot-interval-seconds Snapshot-Intervall

 

Der API-Port ist standardmäßig 8108. Für Cluster-Kommunikation wird zusätzlich ein Peering-Port genutzt; dieser sollte niemals öffentlich exponiert werden.

 

Reverse Proxy und HTTPS einrichten

FĂźr Production sollte Typesense nicht ungeschĂźtzt Ăźber HTTP ins Internet gestellt werden.

Die offizielle Production-Dokumentation empfiehlt fĂźr produktive Setups HTTPS, Firewall-Regeln und eine saubere Zertifikatskonfiguration.

 

Caddy

Caddy ist fĂźr viele Teams der einfachste Weg zu HTTPS.

search.example.com {
reverse_proxy 127.0.0.1:8108
}

Caddy Ăźbernimmt:

  • HTTPS
  • Zertifikatsausstellung
  • automatische Erneuerung
  • Reverse Proxy

Die Caddy-Dokumentation beschreibt reverse_proxy als Standard-Direktive fĂźr Weiterleitung an Upstream-Services.

 

Nginx

server {
listen 443 ssl http2;
server_name search.example.com;

ssl_certificate /etc/letsencrypt/live/search.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/search.example.com/privkey.pem;

location / {
proxy_pass http://127.0.0.1:8108;
proxy_set_header Host $host;
}
}

Caddy ist oft schneller eingerichtet. Nginx passt besser, wenn bereits ein etablierter Nginx-Stack existiert.

 

Warum Scoped API Keys ins Frontend gehĂśren

Der Admin-Key darf nie im Browser landen.

Er erlaubt weitreichenden Zugriff auf Collections und Dokumente. Für Frontends sollten ausschließlich Search-only oder Scoped API Keys verwendet werden.

Typesense unterstßtzt API Keys mit feingranularen Einschränkungen. Scoped Search Keys erzwingen eingebettete Suchparameter serverseitig; Nutzer kÜnnen diese Einschränkungen nicht ßberschreiben.

Beispiel:

import Typesense from "typesense";

const adminClient = new Typesense.Client({
nodes: [{ host: "search.example.com", port: 443, protocol: "https" }],
apiKey: process.env.TYPESENSE_ADMIN_KEY,
});

const scopedKey = adminClient.keys().generateScopedSearchKey(
process.env.TYPESENSE_SEARCH_ONLY_KEY,
{
filter_by: "tenant_id:=acme",
expires_at: Math.floor(Date.now() / 1000) + 3600
}
);

Typische Einsatzfälle:

  • Mandantentrennung
  • Kundengruppen-Sichtbarkeit
  • B2B-Preis- und Sortimentstrennung
  • zeitlich begrenzte Suchzugriffe

 

Erste Collection anlegen und Suche testen

Collection erstellen

curl "http://localhost:8108/collections" \
-X POST \
-H "X-TYPESENSE-API-KEY: xyz-super-secret" \
-H "Content-Type: application/json" \
-d '{
"name":"products",
"fields":[
{"name":"title","type":"string"},
{"name":"price","type":"float"}
]
}'

Dokument indexieren

curl "http://localhost:8108/collections/products/documents" \
-X POST \
-H "X-TYPESENSE-API-KEY: xyz-super-secret" \
-H "Content-Type: application/json" \
-d '{
"id":"1",
"title":"Akku-Bohrschrauber 18V",
"price":129.90
}'

Suche ausfĂźhren

curl "http://localhost:8108/collections/products/documents/search?q=bohr&query_by=title" \
-H "X-TYPESENSE-API-KEY: xyz-super-secret"

Damit ist die Installation funktional geprĂźft.

 

Häufige Fallstricke bei der Installation

Port 8108 ist bereits belegt

PrĂźfen:

ss -tulpn | grep 8108

Häufige Ursache:

  • alter Testcontainer
  • lokaler Entwicklungsserver
  • parallele Typesense-Instanz

 

Volume-Permissions stimmen nicht

Bei Bind-Mounts kĂśnnen Schreibrechte fehlen.

Typische LĂśsung:

sudo chown -R 1000:1000 ./typesense-data


Zu wenig RAM

Typesense arbeitet stark speicherorientiert.

Faustregel:

  • Indexgröße + 50 % Puffer
  • kleine Tests: 1-2 GB
  • mittlere Shops: 4-8 GB
  • größere B2B-Kataloge: 16 GB+

 

Snapshot-Frequenz zu aggressiv

Sehr häufige Snapshots kÜnnen auf schwachen Disks Latenzspitzen erzeugen.

FĂźr viele Setups ist ein Intervall von 3600 Sekunden ein sinnvoller Startpunkt.

 

Production-Hardening-Checkliste

Vor Go-Live prĂźfen:

  • HTTPS aktiv
  • Admin-Key nur serverseitig
  • Search-only oder Scoped Keys im Frontend
  • Firewall erlaubt nur nĂśtige Ports
  • Datenverzeichnis persistent
  • Snapshots aktiv
  • Restore getestet
  • Monitoring aktiv
  • API-Key-Rotation geplant
  • Logs zentralisiert
  • Peering-Port nicht Ăśffentlich

Typesense empfiehlt in Production unter anderem Firewall-Regeln, HTTPS und eine Strategie fĂźr API-Key-Rotation.

 

Fazit

Typesense ist schnell installiert. FĂźr lokale Tests reicht Docker. FĂźr Produktion braucht es aber ein sauberes Betriebsmodell.

Der pragmatische Weg:

  1. lokal mit Docker starten
  2. Staging mit Docker Compose aufsetzen
  3. Production mit Reverse Proxy, HTTPS, Scoped Keys und Monitoring betreiben
  4. bei hĂśheren Anforderungen Cloud vs. Self-Hosted sauber bewerten

Die Installation ist der einfache Teil. Stabiler Betrieb entsteht durch Backups, Monitoring, API-Key-Strategie und saubere Daten-Pipelines.

FAQ

Welcher Port wird standardmäßig genutzt?

Typesense nutzt standardmäßig Port 8108 für die HTTP-API. Für Cluster-Kommunikation wird zusätzlich ein Peering-Port verwendet.

Brauche ich Docker fĂźr Typesense?

Nein. Docker ist der schnellste Einstieg, aber Typesense kann auch Ăźber native Linux-Pakete installiert werden.

Kann ich Typesense ohne Cloud betreiben?

Ja. Typesense kann vollständig self-hosted auf Docker, Linux-Servern, Kubernetes oder Bare Metal betrieben werden.

Darf der Admin-Key ins Frontend?

Nein. Der Admin-Key gehört ausschließlich auf den Server. Für Browser-Clients sollten Search-only oder Scoped API Keys verwendet werden.

Wie teste ich, ob Typesense läuft?

Mit curl http://localhost:8108/health. Eine erfolgreiche Antwort lautet {"ok":true}.

Brauche ich HTTPS vor Typesense?

Ja, fĂźr produktive Ăśffentliche Setups sollte Typesense nur Ăźber HTTPS erreichbar sein, idealerweise hinter einem Reverse Proxy.

Welche Hardware brauche ich fĂźr Typesense?

Fßr kleine Setups reichen 1-2 GB RAM. Produktive B2B-Shops sollten abhängig vom Index eher mit 4-16 GB RAM starten.

Was sind typische Installationsfehler?

Belegter Port 8108, falsche Volume-Rechte, zu wenig RAM, fehlende Snapshots und versehentlich exponierte Admin-Keys.

Â