Key points:
PUBLIC_ORIGINmust match the final public URL your users use (e.g.https://teable.example.com, without a trailing/)- We strongly recommend treating HTTPS + certificates as the default (don’t run production traffic over plain HTTP)
- If you rely on WebSocket features, your reverse proxy must forward the
Upgrade/Connectionheaders
Recommended: HTTPS (default / production)
Treat HTTPS as the default: serve end users on 443; keep port 80 only for redirecting to 443 (or for ACME HTTP-01 challenges). Below is a production‑style example (HTTPS + WebSocket + HTTP→HTTPS redirect). Replace the domain and certificate paths:Certificates (issuance / renewal)
- Let’s Encrypt (recommended): use Certbot or acme.sh for automatic issuance and renewal
- GUI tools: Nginx Proxy Manager can request and auto‑renew certificates from its UI
Example 1: Minimal location / (quick start)
Note: This is an HTTP-only example for internal networks or quick verification. For production, prefer the HTTPS configuration above.
Docker tips
- Nginx on the host, Teable in containers: typically use
proxy_pass http://127.0.0.1:3000;(assuming3000:3000is published) - Nginx and Teable in the same Docker network: you can route via the service/container name, e.g.
proxy_pass http://teable:3000;
Common pitfalls
- Avoid path rewrites: rewrites can break Teable’s internal routing unless you know exactly what you’re doing.
- Make sure
PUBLIC_ORIGINis correct: it affects generated URLs, redirects, import/upload flows, callbacks, etc.
Nginx Proxy Manager (NPM)
If you don’t want to write Nginx config by hand, GUI tools can help manage domains, certificates, and proxy hosts:- Nginx Proxy Manager (NPM): common in Docker-based setups
- Create a Proxy Host: set
Domain Namestoteable.example.com,Schemetohttp,Forward Hostname / IPto127.0.0.1(orteableinside a Docker network), andForward Portto3000 - Enable WebSocket support: turn on WebSocket support in Proxy Host options (label varies by version)
- Provision/attach SSL: request/select a Let’s Encrypt certificate and optionally force HTTPS redirect
- Don’t forget Teable env: set
PUBLIC_ORIGINto the final public URL (e.g.https://teable.example.com)