# Demo-Modus

Der Demo-Modus macht aus einer Instanz eine öffentliche Demo: Jeder meldet sich mit einem
veröffentlichten Login an, sieht sich in einer erfundenen Softwarefirma um, und was er ändert,
ist am nächsten Morgen wieder weg. So kannst du Lalabase Kunden oder Kollegen zeigen, ohne
Konten für sie anzulegen.

<div class="docs-callout docs-callout--warning">
  <div class="docs-callout__title">Eine eigene Instanz</div>
  <p>Betreibe die Demo auf einer eigenen Instanz, nie auf einer mit echten Daten. Der nächtliche Reset leert die Datenbank bis auf die Einstellungen der Instanz.</p>
</div>

## Einschalten

Setze eine Umgebungsvariable für den Web-Prozess und den Worker:

```bash
LALABASE_DEMO=1
```

Nur der Wert `1` zählt. Ohne ihn gilt nichts von dieser Seite.

Lege die Demo dann einmal an, auf einer frischen Instanz:

```bash
docker compose exec web bin/rails lalabase:demo:setup
```

Der Task bricht ab, wenn die Instanz schon eine Organisation hat. Er schließt die
Registrierung, baut die Demo-Firma auf und zeigt den Login an.

## Was Besucher sehen

* Die Anmeldeseite zeigt den Demo-Login und einen Knopf, der ihn einträgt. Einen Link zur
  Registrierung gibt es nicht.
* Jede Seite nach der Anmeldung zeigt einen Hinweis: Alle Besucher teilen dieses Konto, und
  jede Nacht um 03:00 Uhr UTC wird alles zurückgesetzt.
* Die Demo-Person ist Projektleitung, nicht Kontoadmin. KI-Einstellungen, Rollen und
  Abrechnung sind außer Reichweite.
* Jede Seite ist englisch, egal welche Sprache der Browser oder ein Link verlangt: Die
  Demo-Firma ist auf Englisch geschrieben.

## Was abgeschaltet ist

Alle Besucher nutzen dasselbe Konto. Was an der Person gespeichert ist, gilt deshalb für alle,
und was die Instanz verlässt, verlässt sie mit ihrem Namen. Im Demo-Modus:

* E-Mail-Adresse oder Passwort ändern, Passwort zurücksetzen, Konto löschen, persönliche
  Zugangstokens (API, MCP), persönliche Einstellungen und der Datenexport sind gesperrt.
* Organisationen anlegen und Personen einladen ist gesperrt.
* Repositories, Doku-Sets und der Codebase-Import sind gesperrt: Jedes davon ließe die
  Instanz von einer Adresse laden, die ein Besucher eintippt.
* Keine E-Mail verlässt die Instanz.
* Jede Antwort trägt `X-Robots-Tag: noindex`, damit Suchmaschinen nicht aufnehmen, was
  Besucher schreiben.
* Eine Datei darf höchstens 5 MB groß sein, ein direkter Upload nur ein Bild oder eine PDF-Datei.
  Jede Adresse kann 30 Dateien pro Stunde hochladen, und alle gespeicherten Dateien zusammen
  enden bis zum nächsten Reset bei 1 GB.
* Fehlgeschlagene Anmeldungen sperren den Demo-Login nie.

## Der nächtliche Reset

Der Worker setzt die Demo jede Nacht um 03:00 Uhr UTC zurück. Er leert jede Tabelle außer den
Admins, den Systemeinstellungen, den KI-Zugängen und -Paketen und den Preislisten, löscht die
hochgeladenen Dateien und baut die Demo-Firma neu auf. Wer in diesem Moment angemeldet ist,
wird abgemeldet.

Von Hand zurücksetzen:

```bash
docker compose exec web bin/rails lalabase:demo:reset
```

Der Reset läuft nur, wenn beides gilt: `LALABASE_DEMO=1` ist gesetzt, und die Instanz wurde
mit `lalabase:demo:setup` angelegt. Wer die Variable versehentlich auf einer anderen Instanz
setzt, verliert nichts.

## KI in der Demo

Die Demo-Firma nutzt den KI-Zugang der Instanz (siehe [KI-Schlüssel](https://lalabase.com/docs/de/self-hosting/configuration/ai-byok)). Zwei
Grenzen halten die Kosten im Rahmen:

* Markiere den Zugang im Adminbereich mit **Zählt aufs Kontingent**. Der Verbrauch einer
  Organisation wird pro Monat gezählt, und der Reset beginnt ihn bei null. Aus dem
  Monatskontingent wird so ein Tageskontingent.
* Jede Adresse kann 10-mal in 10 Minuten ein Modell aufrufen: Assistent, Zusammenfassungen,
  Meeting-Analysen, Ticket-Vorschläge und die übrigen KI-Funktionen zusammen.

<div class="docs-callout docs-callout--tip">
  <div class="docs-callout__title">Eine harte Grenze</div>
  <p>Das Kontingent zählt Antworten, kein Geld. Für eine echte Obergrenze nimm bei deinem Anbieter einen eigenen Schlüssel mit Prepaid-Guthaben und ausgeschalteter automatischer Aufladung.</p>
</div>
