> ## Documentation Index
> Fetch the complete documentation index at: https://help.teable.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Nginx (Reverse Proxy)

> Empfohlene Nginx-Reverse-Proxy-Einrichtung für Teable: HTTPS (Zertifikate), WebSocket, Docker-Tipps und Nginx Proxy Manager.

Wenn Sie über einen Domainnamen auf Teable zugreifen, HTTPS (SSL-Terminierung) aktivieren oder Teable in einem privaten Netzwerk hinter einem einzigen Gateway betreiben möchten, ist Nginx vor Teable eine gängige Einrichtung.

<Callout type="info">
  Wichtige Punkte:

  * `PUBLIC_ORIGIN` muss mit der endgültigen öffentlichen URL übereinstimmen, die Ihre Benutzer verwenden (z. B. `https://teable.example.com`, ohne abschließendes `/`)
  * Wir empfehlen dringend, **HTTPS + Zertifikate** als Standard zu behandeln (Produktionsdatenverkehr nicht über unverschlüsseltes HTTP ausführen)
  * Wenn Sie WebSocket-Funktionen nutzen, muss Ihr Reverse Proxy die Header `Upgrade/Connection` weiterleiten
</Callout>

<Tip>
  Teable wird häufig für **kollaborative / Echtzeit**-Workflows verwendet. Daher ist es in der Regel am zuverlässigsten, die WebSocket-Unterstützung aktiviert zu lassen. Selbst bei überwiegend Einzelbenutzung beeinträchtigen diese WebSocket-bezogenen Einstellungen den normalen Zugriff nicht.
</Tip>

## Empfohlen: HTTPS (Standard / Produktion)

Behandeln Sie HTTPS als Standard: **Bedienen Sie Endbenutzer über 443**; behalten Sie Port 80 nur für die Weiterleitung auf 443 (oder für ACME-HTTP-01-Challenges).

Unten finden Sie ein produktionsnahes Beispiel (HTTPS + WebSocket + HTTP→HTTPS-Weiterleitung). Ersetzen Sie Domain und Zertifikatspfade:

```nginx theme={null}
upstream teable {
  server 127.0.0.1:3000;
  # Wenn Nginx im selben Docker-Netzwerk wie Teable läuft:
  # server teable:3000;
}

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

# Port 80 leitet nur weiter (oder wird für ACME-Prüfungen verwendet)
server {
  listen 80;
  server_name teable.example.com;
  return 301 https://$host$request_uri;
}

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

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

  # Wenn die Domain immer HTTPS verwenden soll, können Sie HSTS aktivieren (mit Vorsicht)
  # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

  location / {
    proxy_pass http://teable;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $host;

    proxy_http_version 1.1;
  }
}
```

### Zertifikate (Ausstellung / Erneuerung)

* **Let’s Encrypt (empfohlen)**: Verwenden Sie Certbot oder acme.sh für die automatische Ausstellung und Erneuerung
* **GUI-Tools**: Nginx Proxy Manager kann Zertifikate über seine Benutzeroberfläche anfordern und automatisch erneuern

## Beispiel 1: Minimales `location /` (Schnellstart)

> Hinweis: Dies ist ein **reines HTTP**-Beispiel für interne Netzwerke oder eine schnelle Überprüfung. Für die Produktion bevorzugen Sie die obige HTTPS-Konfiguration.

```nginx theme={null}
upstream teable {
  server 127.0.0.1:3000;
  # Wenn Nginx im selben Docker-Netzwerk wie Teable läuft:
  # server teable:3000;
}

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

server {
  listen 80;
  server_name teable.example.com;

  location / {
    proxy_pass http://teable;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $host;

    proxy_http_version 1.1;
  }
}
```

## Docker-Tipps

* **Nginx auf dem Host, Teable in Containern**: Verwenden Sie üblicherweise `proxy_pass http://127.0.0.1:3000;` (vorausgesetzt, `3000:3000` ist veröffentlicht)
* **Nginx und Teable im selben Docker-Netzwerk**: Sie können über den Dienst-/Containernamen routen, z. B. `proxy_pass http://teable:3000;`

## Häufige Fallstricke

* **Vermeiden Sie Pfadumschreibungen**: Umschreibungen können das interne Routing von Teable beeinträchtigen, sofern Sie nicht genau wissen, was Sie tun.
* **Stellen Sie sicher, dass `PUBLIC_ORIGIN` korrekt ist**: Dies beeinflusst generierte URLs, Weiterleitungen, Import-/Upload-Abläufe, Callbacks usw.

## Nginx Proxy Manager (NPM)

Wenn Sie keine Nginx-Konfiguration von Hand schreiben möchten, können GUI-Tools bei der Verwaltung von Domains, Zertifikaten und Proxy-Hosts helfen:

* **Nginx Proxy Manager (NPM)**: Häufig bei Docker-basierten Einrichtungen

Für **Nginx Proxy Manager** ist eine typische Einrichtung:

* **Einen Proxy Host erstellen**: Setzen Sie `Domainnamen` auf `teable.example.com`, `Schema` auf `http`, `Weiterleitungs-Hostname / IP` auf `127.0.0.1` (oder `teable` innerhalb eines Docker-Netzwerks) und `Weiterleitungsport` auf `3000`
* **WebSocket-Unterstützung aktivieren**: Aktivieren Sie die WebSocket-Unterstützung in den Proxy-Host-Optionen (die Bezeichnung variiert je nach Version)
* **SSL bereitstellen/anhängen**: Fordern Sie ein Let’s-Encrypt-Zertifikat an bzw. wählen Sie es aus und erzwingen Sie optional die HTTPS-Weiterleitung
* **Teable-Umgebung nicht vergessen**: Setzen Sie `PUBLIC_ORIGIN` auf die endgültige öffentliche URL (z. B. `https://teable.example.com`)
