Общие сведения
Надёжность и безопасность
Покупка лицензии
Начало работы
Роли в системе
Проекты
Концепции
Компоненты
Инструкции
Задачи
Финансы
Ресурсы
Таймшиты
FAQ
Клиенты
Вики
Затраты
Отчёты и аналитика
Типы отчётов
Использование отчётов
Группировка данных источника
Группировка данных в отчёте
Типы виджетов
Общие отчёты и шаблоны
Настройка отчёта
Экспорт отчётов
Пользовательские настройки отчёта
Вычисляемые поля
Особые колонки отчётов с временными рядами
Использование панелей мониторинга
Публикация панелей
Панели сущностей
Фильтры источников данных
Отчёты по сущностям
FAQ
Настройка и администрирование
Типовой порядок настройки системы
Интеграция с Mattermost
Язык формул и выражений
Язык шаблонов
API
Общие сведения
Аутентификация
Примеры использования API
Справочник API
API для структуры проекта
Reporting API
Рекомендации по работе с Reporting API
Ограничения
Timetta MCP Server
On-premises
История изменений
2026
Термины и определения

Маршрутизация сервисов Timetta по FQDN

Обновлено: 14.04.2026

В текущей конфигурации Docker Compose внешний доступ пользователей к системе организуется через единый порт 443/TCP.

Входной точкой выступает контейнер nginx-proxy. Он принимает HTTPS-запросы и маршрутизирует их к нужному внутреннему сервису по доменному имени, используя заголовок Host.

Требования к доменной конфигурации

Для корректной работы схемы доступа через порт 443 необходимо заранее настроить DNS-записи для поддоменов.

Общая схема доступа

Пользователь обращается к системе по HTTPS, используя один из доменов экземпляра:

  • timetta.domain.com — клиентская часть приложения;
  • api-timetta.domain.com — основной сервис API;
  • auth-timetta.domain.com — сервис аутентификации;
  • ws-timetta.domain.com — хаб WebSockets для уведомлений;
  • reporting-timetta.domain.com — сервис формирования отчётов;
  • scheduler-timetta.domain.com — сервис выполнения задач по расписанию;
  • ai-timetta.domain.com — клиентская часть AI-ассистента.

Все домены указывают на один внешний IP-адрес и используют порт 443.

Контейнер nginx-proxy перенаправляет запросы во внутреннюю сеть Docker Compose по HTTP на соответствующий сервис.

Маршрутизация запросов

Внутри nginx-proxy используется маршрутизация по параметру server_name.

Соответствие доменов и внутренних сервисов:

  • timetta.domain.com → http://client:80;
  • api-timetta.domain.com → http://api:80;
  • auth-timetta.domain.com → http://passport:80;
  • ws-timetta.domain.com → http://web-socket:80;
  • reporting-timetta.domain.com → http://reporting:80;
  • scheduler-timetta.domain.com → http://scheduler:80;
  • ai-timetta.domain.com → http://ai-bot:80.

Сервис embeddings не публикуется во внешнюю сеть. Backend обращается к нему внутри сети Docker Compose по адресу http://embeddings:8080.

Связь с конфигурацией приложения

В файлах settings.json, client-settings.json и ai-client-settings.json внешние адреса сервисов задаются как HTTPS-адреса на отдельных поддоменах.

client-settings.json

{
  "api": {
    "url": "https://api-timetta.domain.com"
  },
  "passport": {
    "url": "https://auth-timetta.domain.com"
  },
  "websocket": {
    "url": "https://ws-timetta.domain.com"
  },
  "aiBotLoader": "https://ai-timetta.domain.com/loader.js"
}

ai-client-settings.json

{
  "passportUrl": "https://auth-timetta.domain.com",
  "apiUrl": "https://api-timetta.domain.com",
  "aiBotUrl": "https://ai-timetta.domain.com",
  "webSocketUrl": "https://ws-timetta.domain.com",
  "apiTimettaUrl": "https://api-timetta.domain.com",
  "baseAppUrl": "https://timetta.domain.com"
}

Настройка settings.json

В конфигурации settings.json параметры TokenIssuer и RedirectUris должны указывать на доменное имя сервиса аутентификации.

Не используйте адрес с портом 5401.

Рекомендуется использовать:

https://auth-timetta.domain.com

вместо:

http://<host>:5401

Добавьте домен AI-клиента в CORS и OAuth-настройки, сохранив уже настроенные URI:

"AppUrl": "https://timetta.domain.com",
"AllowedCorsOrigins": "https://timetta.domain.com,https://ai-timetta.domain.com",
"TokenIssuer": "https://auth-timetta.domain.com",
"WepAppClient": {
  "RedirectUris": "https://timetta.domain.com,https://timetta.domain.com/auth-callback,https://timetta.domain.com/assets/silent-refresh.html,https://auth-timetta.domain.com/login-successful,https://ai-timetta.domain.com/auth-callback,https://ai-timetta.domain.com/auth-callback.html,https://ai-timetta.domain.com/assets/silent-refresh.html",
  "PostLogoutRedirectUris": "https://auth-timetta.domain.com/logout-successful,https://ai-timetta.domain.com/logout-successful",
  "AllowedCorsOrigins": "https://timetta.domain.com,https://ai-timetta.domain.com"
}

Конфигурация обратного прокси

SSL/TLS-сертификаты

Для работы HTTPS-доступа необходимо настроить SSL/TLS-сертификаты в контейнере nginx-proxy.

Сертификат должен покрывать все используемые домены:

  • timetta.domain.com;
  • api-timetta.domain.com;
  • auth-timetta.domain.com;
  • ws-timetta.domain.com;
  • reporting-timetta.domain.com;
  • scheduler-timetta.domain.com;
  • ai-timetta.domain.com.

Допустимые варианты настройки:

  1. Использовать wildcard-сертификат (*.domain.com).
  2. Использовать сертификат с поддержкой нескольких доменов (SAN-сертификат).

Если используется не wildcard-сертификат, он должен явно включать все перечисленные поддомены.

Сертификаты подключаются к контейнеру nginx-proxy через конфигурацию:

configs:
  - source: proxy_cert
    target: /etc/nginx/ssl/cert.pem
  - source: proxy_key
    target: /etc/nginx/ssl/key.pem

Для публикации сервисов через единый внешний порт 443 необходимо обновить конфигурацию обратного прокси в файле proxy/nginx.conf.

proxy/nginx.conf

events {
    worker_connections 1024;
}

http {
    # Основной параметр для больших файлов
    client_max_body_size 100M;
    # Буферизация и таймауты
    client_body_buffer_size 128k;
    client_body_timeout 300s;

    # Для proxy 
    proxy_read_timeout 300s;
    proxy_connect_timeout 300s;
    proxy_send_timeout 300s;

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
    #Подключение сертификатов
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;

    proxy_pass_request_headers on;

    proxy_set_header Authorization $http_authorization;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Port 443;

    server {
        listen 80;
        listen [::]:80;
        server_name timetta.domain.com
                    api-timetta.domain.com
                    auth-timetta.domain.com
                    ws-timetta.domain.com
                    reporting-timetta.domain.com
                    scheduler-timetta.domain.com
                    ai-timetta.domain.com;
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name timetta.domain.com;
        location / {
            proxy_pass http://client:80;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name api-timetta.domain.com;
        location / {
            proxy_pass http://api:80;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name auth-timetta.domain.com;
        location / {
            proxy_pass http://passport:80;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name ws-timetta.domain.com;
        location / {
            proxy_pass http://web-socket:80;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name reporting-timetta.domain.com;
        location / {
            proxy_pass http://reporting:80;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name scheduler-timetta.domain.com;
        location / {
            proxy_pass http://scheduler:80;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name ai-timetta.domain.com;

        add_header Access-Control-Allow-Origin "https://timetta.domain.com" always;
        add_header Vary "Origin" always;

        location / {
            proxy_pass http://ai-bot:80;
        }
    }
}

Настройка портов в nginx-proxy

В контейнере nginx-proxy должны быть открыты только внешние порты 443 и 80.

Все пользовательские запросы проходят через обратный прокси с маршрутизацией по доменному имени.

nginx-proxy:
  container_name: nginx-proxy
  image: nginx
  ports:
    - "443:443"
    - "80:80"
  configs:
    - source: proxy_config
      target: /etc/nginx/nginx.conf
    - source: proxy_cert
      target: /etc/nginx/ssl/cert.pem
    - source: proxy_key
      target: /etc/nginx/ssl/key.pem
  depends_on:
    - api
    - consumer
    - passport
    - web-socket
    - scheduler
    - client
    - ai-bot

Отдельный внешний порт 5402 для AI-клиента в этой схеме не требуется: он доступен по адресу https://ai-timetta.domain.com через порт 443.

Предыдущая
 Установка Docker
Следующая
AI on-premises 

Содержание

Требования к доменной конфигурации Общая схема доступа Маршрутизация запросов Связь с конфигурацией приложения client-settings.json ai-client-settings.json Настройка settings.json Конфигурация обратного прокси SSL/TLS-сертификаты proxy/nginx.conf Настройка портов в nginx-proxy
Спросить ИИ Получить ответ по материалам документации
Введите запрос для поиска по документации
Ничего не найдено, уточните запрос
AI

Похоже, вам удобнее русский язык. Перейти на русскую версию?