Hinatadocs

Hinata selbst hosten

Du betreibst Hinata auf deiner eigenen Infrastruktur, ohne Limits bei Nutzern, Boards oder Teams. Diese Seite zeigt, aus welchen Teilen Hinata besteht und was du vor dem Go-live einstellst. Jeder Punkt verweist auf eine Seite mit den konkreten Schritten.

Nur schnell eine Instanz starten? Dann nimm den Schnellstart.

Was du betreibst

Hinata läuft als kleiner Satz Container mit Docker Compose. Zwei Images liegen in der GitHub Container Registry unter ghcr.io/hinata-platform. Der Rest sind gängige Upstream-Images.

KomponenteImageRolle
Server (API)ghcr.io/hinata-platform/hinata-serverREST-API mit Spring Boot 4 und Java 21 unter /api/v1, SSE-Live-Updates, JWT-Auth
Web-Appghcr.io/hinata-platform/hinata-appDer kompilierte Flutter-Web-Client als statische Dateien
MongoDBmongo:8.0Hauptdatenspeicher. In Produktion ein Replica Set (2 Datenknoten + 1 Arbiter)
Objektspeicherminio/minioS3-kompatibler Speicher für Anhänge und Avatare (Presigned Downloads)
Maildein SMTP-Relay (axllent/mailpit in Dev)Ausgehende E-Mail: Verifizierung, Passwort-Reset, Benachrichtigungen
  • Der Server ist zustandslos. Alle Daten liegen in MongoDB und MinIO. Du kannst ihn also frei skalieren oder neu ausrollen.
  • Live-Updates kommen per Server-Sent Events (SSE). Einen Message Broker brauchst du nicht.

Du brauchst kein Firebase

Push und Universal Links laufen über das gehostete Hinata Connect Gateway. Die Push-Zugangsdaten der App liegen dort, nicht bei dir. Für Push musst du nichts betreiben und nichts einstellen.

Die zwei Compose-Dateien

Das Server-Repository enthält zwei Stack-Dateien. Der API-Stack ist die Basis, die App legst du optional darüber.

DateiWas sie startet
docker-compose.ymlDer vollständige Backend-Stack: Server, MongoDB Replica Set (mongo1, mongo2, mongo-arbiter) und MinIO. Das ist die Basis.
docker-compose.app.ymlEin Overlay mit der Flutter-Web-App (hinata-app) auf HINATA_APP_PORT. Damit lieferst du den Web-Client vom selben Host aus.

Nur den API-Stack starten:

docker compose up -d

API-Stack und Web-App zusammen starten:

docker compose -f docker-compose.yml -f docker-compose.app.yml up -d

Du musst die Web-App nicht zwingend selbst hosten

Die nativen Apps speichern mehrere Server, und der Web-Build zeigt auf die eingestellte API. Manche Betreiber starten daher nur den API-Stack, und die Nutzer verbinden sich über die Apps aus den Stores. Hoste die Web-App selbst, wenn du eine eigene Adresse wie https://track.example.com im Browser willst.

Für die lokale Entwicklung gibt es noch docker-compose.dev.yml. Sie startet nur Mongo, MinIO und Mailpit, den Server startest du aus der IDE. Siehe Entwicklung.

Profile: dev vs prod

Das Spring-Profil in SPRING_PROFILES_ACTIVE bestimmt das Verhalten:

  • prod: MongoDB ist ein Replica Set mit TLS und X.509-Clientauthentifizierung (kein Passwort im Connection String). Das nutzt docker-compose.yml, und das rollst du aus. Der Demo-Seeder ist nicht enthalten (@Profile("!prod")).
  • dev: MongoDB läuft standalone (weiterhin TLS + X.509) für eine Person auf localhost. Gedacht für docker-compose.dev.yml, wenn der Server aus dem Quellcode läuft.

Führe den Demo-Seeder niemals in Produktion aus

HINATA_DEMO_SEED=true legt einen englischen Demo-Workspace an (Login rebar / hinata-demo-2026), gedacht für Screenshots und zum Durchklicken.

Unter dem Profil prod wird der Seeder wegen @Profile("!prod") immer übersprungen, egal was das Flag sagt. Verlass dich trotzdem nicht allein darauf. Setze in jeder Produktions-.env HINATA_DEMO_SEED=false. Sonst landen ein Admin mit bekanntem Passwort und Testdaten in deiner echten Datenbank.

Konfigurations-Checkliste

Geh diese Punkte durch, bevor du die Instanz freigibst:

BereichWas zu setzen istSeite
Domain & TLSÖffentliche Hostnamen und ein Reverse Proxy, der HTTPS terminiert und an HINATA_PORT (API) und HINATA_APP_PORT (Web) weiterleitetReverse Proxy & TLS
JWT-SecretHINATA_JWT_SECRET: ein zufälliges HS512-Secret mit ≥ 64 Zeichen (in prod Pflicht)Produktiv-Deployment
MongoDB X.509PKI erzeugen, Clientzertifikat als $external-Nutzer registrierenMongoDB & X.509
ObjektspeicherMinIO-Zugangsdaten und Bucket, oder ein externes S3Objektspeicher
SMTPEin echtes Mail-Relay, damit Mails zu Verifizierung, Passwort-Reset und Benachrichtigungen ankommenE-Mail & SMTP
CORSHINATA_CORS_ALLOWED_ORIGINS: Browser-Origins, die die API aufrufen dürfenKonfigurationsreferenz
Trusted ProxiesHINATA_TRUSTED_PROXIES: CIDRs der Proxys, die X-Forwarded-For setzen dürfenReverse Proxy & TLS
GatewayMeist der Standard. HINATA_GATEWAY_BASE_URL nur für ein eigenes Gateway ändernHinata Connect Gateway
ErststartDen Setup-Assistenten in der App abschließen oder mit HINATA_SETUP_* automatisierenSetup & Erststart

Alle Umgebungsvariablen mit Gruppen, Standardwerten und Pflichtangabe stehen in der Konfigurationsreferenz.

Wie es weitergeht