> ## 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 (зворотний проксі-сервер)

> Рекомендоване налаштування зворотного проксі-сервера Nginx для Teable: HTTPS (сертифікати), WebSocket, поради щодо Docker і Nginx Proxy Manager.

Якщо ви хочете відкривати Teable за доменним ім’ям, увімкнути HTTPS (завершення SSL-з’єднання) або залишити Teable у приватній мережі за єдиним шлюзом, поширеним рішенням є розміщення Nginx перед Teable.

<Callout type="info">
  Основне:

  * `PUBLIC_ORIGIN` має відповідати кінцевій загальнодоступній URL-адресі, яку використовують ваші користувачі (наприклад, `https://teable.example.com`, без кінцевої `/`)
  * Наполегливо рекомендуємо вважати **HTTPS + сертифікати** стандартом (не передавайте виробничий трафік через незахищений HTTP)
  * Якщо ви використовуєте функції WebSocket, зворотний проксі-сервер має пересилати заголовки `Upgrade/Connection`
</Callout>

<Tip>
  Teable часто використовують для **спільної роботи / роботи в реальному часі**, тому найнадійнішим варіантом зазвичай є ввімкнена підтримка WebSocket. Навіть якщо системою переважно користується одна людина, збереження цих налаштувань WebSocket не вплине на звичайний доступ.
</Tip>

## Рекомендовано: HTTPS (стандартно / для виробничого середовища)

Використовуйте HTTPS як стандарт: **обслуговуйте кінцевих користувачів через порт 443**; залиште порт 80 лише для переспрямування на 443 (або для перевірок ACME HTTP-01).

Нижче наведено приклад для виробничого середовища (HTTPS + WebSocket + переспрямування HTTP→HTTPS). Замініть домен і шляхи до сертифікатів:

```nginx theme={null}
upstream teable {
  server 127.0.0.1:3000;
  # Якщо Nginx працює в тій самій мережі Docker, що й Teable:
  # server teable:3000;
}

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

# Порт 80 лише переспрямовує запити (або використовується для перевірок ACME)
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;

  # Якщо ви впевнені, що домен завжди має використовувати HTTPS, можна ввімкнути HSTS (з обережністю)
  # 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;
  }
}
```

### Сертифікати (випуск / поновлення)

* **Let’s Encrypt (рекомендовано)**: використовуйте Certbot або acme.sh для автоматичного випуску й поновлення
* **Інструменти з графічним інтерфейсом**: Nginx Proxy Manager може запитувати й автоматично поновлювати сертифікати через свій інтерфейс

## Приклад 1. Мінімальний `location /` (швидкий початок)

> Примітка: це приклад **лише з HTTP** для внутрішніх мереж або швидкої перевірки. Для виробничого середовища використовуйте наведену вище конфігурацію HTTPS.

```nginx theme={null}
upstream teable {
  server 127.0.0.1:3000;
  # Якщо Nginx працює в тій самій мережі Docker, що й Teable:
  # 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

* **Nginx на хості, Teable у контейнерах**: зазвичай використовуйте `proxy_pass http://127.0.0.1:3000;` (за умови, що опубліковано `3000:3000`)
* **Nginx і Teable в одній мережі Docker**: можна спрямовувати трафік через назву сервісу/контейнера, наприклад `proxy_pass http://teable:3000;`

## Поширені помилки

* **Уникайте переписування шляхів**: воно може порушити внутрішню маршрутизацію Teable, якщо ви не знаєте достеменно, що робите.
* **Переконайтеся, що `PUBLIC_ORIGIN` указано правильно**: ця змінна впливає на згенеровані URL-адреси, переспрямування, імпорт і завантаження, зворотні виклики тощо.

## Nginx Proxy Manager (NPM)

Якщо ви не хочете писати конфігурацію Nginx вручну, інструменти з графічним інтерфейсом допоможуть керувати доменами, сертифікатами й проксі-хостами:

* **Nginx Proxy Manager (NPM)**: поширений варіант для конфігурацій на основі Docker

Типове налаштування **Nginx Proxy Manager**:

* **Створіть проксі-хост**: задайте для `Назви доменів` значення `teable.example.com`, для `Схема` — `http`, для `Ім’я хоста / IP для пересилання` — `127.0.0.1` (або `teable` у мережі Docker), а для `Порт пересилання` — `3000`
* **Увімкніть підтримку WebSocket**: увімкніть підтримку WebSocket у параметрах проксі-хоста (назва залежить від версії)
* **Підготуйте/підключіть SSL**: запросіть або виберіть сертифікат Let's Encrypt і за потреби примусово ввімкніть переспрямування на HTTPS
* **Не забудьте про змінну середовища Teable**: задайте для `PUBLIC_ORIGIN` кінцеву загальнодоступну URL-адресу (наприклад, `https://teable.example.com`)
