Публикация INFRAX в продакшн

Обзор

Для публикации INFRAX в продакшн доступны два варианта:

Вариант 1: Прямая публикация

INFRAX можно опубликовать напрямую, используя встроенный веб-сервер с собственными SSL сертификатами. Этот вариант подходит для простых сценариев развертывания.

  • ✅ Простота настройки - не требуется установка дополнительного ПО
  • ✅ Подходит для небольших и средних установок

Вариант 2: Публикация через Reverse Proxy

Использование reverse proxy сервера (Nginx, Traefik, Caddy, HAProxy, Apache) обеспечивает:

  • Централизованное управление SSL сертификатами
  • Использование стандартных портов 80/443
  • Дополнительный уровень безопасности
  • Балансировку нагрузки (при необходимости)
  • Единую точку входа для всех сервисов
💡 Рекомендация

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

ℹ️ Архитектура

INFRAX состоит из нескольких сервисов, которые будут опубликованы через reverse proxy:

  • INFRAX - основное приложение (порты 8045 - веб-интерфейс, 8042 - нативные клиенты)
  • IDENTYX - система управления пользователями (порт 8040)
⚠️ Важно для нативных клиентов

Если вы планируете использовать нативные клиенты (RDP, SSH, VNC) для удаленных подключений извне вашей сети, порт 8042 контейнера INFRAX должен быть доступен напрямую, без проксирования. См. раздел Доступ для нативных клиентов.

Настройка URL приложений

Перед настройкой reverse proxy необходимо настроить URL приложений в самой системе INFRAX:

Шаг 1: Запуск меню управления

Linux / macOS / Git Bash:

sudo bash infrax.sh

Windows (Command Prompt или PowerShell):

infrax.bat

Шаг 2: Настройка URL

  1. Выберите пункт "7. ⚙️ Настроить URL приложений"
  2. Выберите пункт "3. Полностью ввести свой URL"
  3. Укажите домены для ваших сервисов:
    Введите URL для INFRAX: https://infrax.mydomain.ru
    Введите URL для IDENTYX: https://auth.mydomain.ru
⚠️ Важно

Используйте реальные доменные имена, которые будут настроены в вашем DNS. Убедитесь, что:

  • DNS записи A или CNAME указывают на IP адрес вашего сервера
  • Используется протокол https://
  • Домены доступны для проверки при получении SSL сертификатов

Вариант 1: Прямая публикация

INFRAX имеет встроенный веб-сервер, который может быть опубликован напрямую в интернет с использованием собственных SSL сертификатов.

ℹ️ Важная особенность

При первом запуске с новыми публичными URL, INFRAX автоматически генерирует самоподписанные SSL сертификаты для этих доменов. После этого вы можете заменить их на свои валидные сертификаты.

Важно: Если заменить сертификаты до первого запуска с новыми URL, приложение перезапишет их самоподписанными при старте!

Шаг 1: Настройка URL

Настройте публичные URL через меню управления INFRAX (см. раздел Настройка URL приложений выше).

Шаг 2: Первый запуск с новыми URL

Запустите приложение с новыми URL. При этом INFRAX автоматически сгенерирует самоподписанные SSL сертификаты для указанных доменов:

# Linux / macOS / Git Bash
sudo bash infrax.sh
# Выберите: 1. ▶️ Запустить приложение

# Windows
infrax.bat
# Выберите: 1. ▶️ Запустить приложение

Подождите 1-2 минуты, пока все сервисы полностью запустятся и самоподписанные сертификаты будут созданы.

⚠️ Почему нужен этот шаг?

Приложение создает самоподписанные сертификаты при первом запуске с новыми URL. Если пропустить этот шаг и сразу заменить сертификаты, то при следующем запуске приложение перезапишет ваши валидные сертификаты на самоподписанные!

Шаг 3: Остановка приложения

Остановите приложение для замены самоподписанных сертификатов на валидные:

# Linux / macOS / Git Bash
sudo bash infrax.sh
# Выберите: 2. ⏹️ Остановить приложение

# Windows
infrax.bat
# Выберите: 2. ⏹️ Остановить приложение

Шаг 4: Замена SSL сертификатов

Теперь замените самоподписанные сертификаты на ваши валидные в папке ./data/identyx/data/ssl:

📁 Расположение сертификатов

Путь к папке с сертификатами зависит от места установки:

  • Linux (стандартная установка): /opt/infrax/data/identyx/data/ssl
  • Другое расположение: <путь_установки>/data/identyx/data/ssl

В этой папке нужно разместить следующие файлы:

  • apache.crt - ваш SSL сертификат (с цепочкой сертификатов)
  • apache.key - приватный ключ

Пример замены сертификатов:

# Перейдите в директорию с сертификатами
cd /opt/infrax/data/identyx/data/ssl

# Создайте резервную копию старых сертификатов
sudo mv apache.crt apache.crt.bak
sudo mv apache.key apache.key.bak

# Скопируйте ваши сертификаты
sudo cp /path/to/your/apache.crt ./
sudo cp /path/to/your/apache.key ./

# Установите правильные права доступа
sudo chmod 644 apache.crt
sudo chmod 600 apache.key

Шаг 5: Запуск приложения

Запустите приложение с новыми сертификатами:

# Linux / macOS / Git Bash
sudo bash infrax.sh
# Выберите: 1. ▶️ Запустить приложение

# Windows
infrax.bat
# Выберите: 1. ▶️ Запустить приложение

Шаг 6: Настройка firewall

Откройте необходимые порты в firewall:

# UFW (Ubuntu/Debian)
sudo ufw allow 8040/tcp  # Identyx
sudo ufw allow 8042/tcp  # Video Gateway (нативные клиенты)
sudo ufw allow 8045/tcp  # INFRAX

# Firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=8040/tcp
sudo firewall-cmd --permanent --add-port=8042/tcp
sudo firewall-cmd --permanent --add-port=8045/tcp
sudo firewall-cmd --reload

Шаг 7: Проверка

Откройте в браузере ваши домены:

  • INFRAX: https://infrax.mydomain.ru:8045
  • Identyx: https://auth.mydomain.ru:8040

Убедитесь, что:

  • ✅ Браузер показывает зеленый замок (валидный SSL сертификат)
  • ✅ Вход в систему работает
  • ✅ Все функции приложения доступны
✅ Готово!

Ваша установка INFRAX теперь доступна напрямую через интернет с валидными SSL сертификатами!

⚠️ Обновление сертификатов

При обновлении SSL сертификатов (например, после истечения срока действия) повторите шаги 3-5: остановите приложение, замените сертификаты, запустите приложение.

Вариант 2: Публикация через Reverse Proxy

Ниже представлены готовые конфигурации для различных популярных reverse proxy решений. Все конфигурации идентичны по функциональности и обеспечивают:

  • ✅ HTTPS терминацию с SSL сертификатами
  • ✅ Поддержку WebSocket для real-time обновлений
  • ✅ Загрузку файлов размером до 20GB
  • ✅ Увеличенные таймауты (300s) для длительных операций
  • ✅ Правильную передачу заголовков (Host, X-Real-IP, X-Forwarded-For, X-Forwarded-Proto)
  • ✅ Отключение проверки самоподписанных сертификатов backend
💡 Выбор решения

Выберите reverse proxy решение в зависимости от ваших потребностей. Каждое решение описано со своими преимуществами и готовой конфигурацией.

Nginx

Nginx — самый популярный высокопроизводительный веб-сервер и reverse proxy с низким потреблением ресурсов.

Преимущества

  • Проверенная технология с огромным сообществом
  • Отличная производительность
  • Обширная документация и примеры
  • Широко используется в продакшене
💡 Предварительные требования

Убедитесь, что на вашем сервере установлены Nginx и Certbot. Инструкции по установке:

Для временных сертификатов можно использовать пакет ssl-cert (Ubuntu/Debian).

Конфигурация Nginx

Создайте конфигурационный файл:

sudo nano /etc/nginx/conf.d/reverse-proxy.conf

Содержимое файла:

# /etc/nginx/conf.d/reverse-proxy.conf

# Общие настройки прокси
proxy_http_version 1.1;
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-Proto $scheme;

# Reverse Proxy для IDENTYX (IAM система)
server {
    listen 443 ssl;
    server_name auth.mydomain.ru;

    # Временные самоподписанные сертификаты
    ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
    ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass https://127.0.0.1:8040;
        proxy_ssl_verify off;
        
        # Поддержка WebSocket для реального времени
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

# Reverse Proxy для INFRAX (основное приложение)
server {
    listen 443 ssl;
    server_name infrax.mydomain.ru;

    # Временные самоподписанные сертификаты
    ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
    ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass https://127.0.0.1:8045;
        proxy_ssl_verify off;

        # Увеличенный лимит для загрузки файлов
        client_max_body_size 20G;
        
        # Отключение буферизации для больших файлов
        proxy_buffering off;
        proxy_request_buffering off;

        # Увеличенные таймауты для длительных операций
        proxy_read_timeout 300s;
        proxy_send_timeout 300s;

        # Поддержка WebSocket
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

# HTTP → HTTPS редирект
server {
    listen 80;
    server_name auth.mydomain.ru infrax.mydomain.ru;
    return 301 https://$host$request_uri;
}

# Переменная для корректной установки Connection на Upgrade/keep-alive
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}
⚠️ Замените домены

Не забудьте заменить auth.mydomain.ru и infrax.mydomain.ru на ваши реальные домены!

Применение конфигурации

# Проверка синтаксиса
sudo nginx -t

# Перезагрузка Nginx
sudo systemctl reload nginx

# Получение SSL сертификатов от Let's Encrypt
sudo certbot --nginx -d infrax.mydomain.ru -d auth.mydomain.ru

Traefik

Traefik — современный облачный reverse proxy с автоматическим обнаружением сервисов и встроенной интеграцией с Let's Encrypt.

Преимущества

  • Автоматическое обнаружение сервисов в Docker
  • Встроенная интеграция с Let's Encrypt
  • Динамическая конфигурация без перезапуска
  • Современный веб-интерфейс для мониторинга
💡 Предварительные требования

Убедитесь, что Traefik установлен на вашем сервере. Инструкции по установке см. в официальной документации Traefik.

Docker Compose конфигурация (опционально)

# traefik-docker-compose.yml
version: '3.8'

services:
  traefik:
    image: traefik:v2.10
    container_name: traefik
    restart: unless-stopped
    networks:
      - infrax-network
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik-data/traefik.yml:/traefik.yml:ro
      - ./traefik-data/acme.json:/acme.json
      - ./traefik-data/config.yml:/config.yml:ro

networks:
  infrax-network:
    external: true

Конфигурация Traefik (traefik.yml)

api:
  dashboard: true

entryPoints:
  http:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: https
          scheme: https
  https:
    address: ":443"
    transport:
      respondingTimeouts:
        readTimeout: 300s
        writeTimeout: 300s

serversTransport:
  insecureSkipVerify: true
  forwardingTimeouts:
    responseHeaderTimeout: 300s
    idleConnTimeout: 300s

providers:
  file:
    filename: /config.yml

certificatesResolvers:
  letsencrypt:
    acme:
      email: admin@mydomain.ru
      storage: acme.json
      tlsChallenge: {}

Настройка маршрутов (config.yml)

http:
  routers:
    # INFRAX основное приложение
    infrax:
      entryPoints:
        - https
      rule: "Host(`infrax.mydomain.ru`)"
      tls:
        certResolver: letsencrypt
      service: infrax
      middlewares:
        - infrax-headers
        - infrax-buffering
    
    # IDENTYX IAM система
    identyx:
      entryPoints:
        - https
      rule: "Host(`auth.mydomain.ru`)"
      tls:
        certResolver: letsencrypt
      service: identyx
      middlewares:
        - infrax-headers

  services:
    infrax:
      loadBalancer:
        servers:
          - url: "https://127.0.0.1:8045"
        serversTransport: insecureTransport
    
    identyx:
      loadBalancer:
        servers:
          - url: "https://127.0.0.1:8040"
        serversTransport: insecureTransport

  middlewares:
    infrax-headers:
      headers:
        customRequestHeaders:
          X-Forwarded-Proto: "https"
    
    # Ограничение размера загружаемых файлов - 20GB
    infrax-buffering:
      buffering:
        maxRequestBodyBytes: 21474836480
        maxResponseBodyBytes: 21474836480

  serversTransports:
    insecureTransport:
      insecureSkipVerify: true

Применение конфигурации

# Создайте директорию
mkdir -p traefik-data

# Создайте файл для SSL сертификатов
touch traefik-data/acme.json
chmod 600 traefik-data/acme.json

# Запустите Traefik
docker compose -f traefik-docker-compose.yml up -d

Caddy

Caddy — современный веб-сервер с автоматическим HTTPS из коробки. Отличается простейшим синтаксисом конфигурации.

Преимущества

  • Автоматический HTTPS по умолчанию
  • Простейший синтаксис конфигурации
  • Встроенная поддержка HTTP/3
  • Автоматическое обновление сертификатов
💡 Предварительные требования

Убедитесь, что Caddy установлен на вашем сервере. Инструкции по установке см. в официальной документации Caddy.

Конфигурация Caddy (Caddyfile)

# /etc/caddy/Caddyfile

# Глобальные настройки
{
    email admin@mydomain.ru
}

# INFRAX основное приложение
infrax.mydomain.ru {
    # Увеличенный лимит для загрузки больших файлов (20GB)
    request_body {
        max_size 20GB
    }
    
    reverse_proxy https://127.0.0.1:8045 {
        transport http {
            tls_insecure_skip_verify
            read_timeout 300s
            write_timeout 300s
        }
        
        header_up Host {host}
        header_up X-Real-IP {remote_host}
        header_up X-Forwarded-For {remote_host}
        header_up X-Forwarded-Proto {scheme}
        
        flush_interval -1
    }
}

# IDENTYX IAM система
auth.mydomain.ru {
    reverse_proxy https://127.0.0.1:8040 {
        transport http {
            tls_insecure_skip_verify
            read_timeout 300s
            write_timeout 300s
        }
        
        header_up Host {host}
        header_up X-Real-IP {remote_host}
        header_up X-Forwarded-For {remote_host}
        header_up X-Forwarded-Proto {scheme}
    }
}

Применение конфигурации

# Проверка конфигурации
caddy validate --config /etc/caddy/Caddyfile

# Запуск Caddy
sudo systemctl start caddy
sudo systemctl enable caddy
✅ Автоматический HTTPS

Caddy автоматически получит SSL сертификаты от Let's Encrypt при первом обращении к доменам!

HAProxy

HAProxy — высокопроизводительный TCP/HTTP load balancer с минимальным потреблением ресурсов.

Преимущества

  • Исключительная производительность
  • Продвинутые алгоритмы балансировки нагрузки
  • Детальная статистика и мониторинг
  • Минимальное потребление ресурсов
💡 Предварительные требования

Убедитесь, что HAProxy и Certbot установлены. Инструкции: HAProxy.

Получение SSL сертификатов

# Получите сертификаты
sudo systemctl stop haproxy
sudo certbot certonly --standalone -d infrax.mydomain.ru -d auth.mydomain.ru
sudo systemctl start haproxy

# Объедините для HAProxy
sudo mkdir -p /etc/haproxy/certs
sudo cat /etc/letsencrypt/live/infrax.mydomain.ru/fullchain.pem \
    /etc/letsencrypt/live/infrax.mydomain.ru/privkey.pem \
    > /etc/haproxy/certs/infrax.mydomain.ru.pem
sudo cat /etc/letsencrypt/live/auth.mydomain.ru/fullchain.pem \
    /etc/letsencrypt/live/auth.mydomain.ru/privkey.pem \
    > /etc/haproxy/certs/auth.mydomain.ru.pem
sudo chmod 600 /etc/haproxy/certs/*.pem

Конфигурация HAProxy (/etc/haproxy/haproxy.cfg)

global
    log /dev/log local0
    chroot /var/lib/haproxy
    user haproxy
    group haproxy
    daemon
    
    ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
    ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

defaults
    log     global
    mode    http
    option  httplog
    timeout connect 5000
    timeout client  300000
    timeout server  300000

# Frontend для HTTP (редирект на HTTPS)
frontend http_front
    bind *:80
    mode http
    redirect scheme https code 301 if !{ ssl_fc }

# Frontend для HTTPS
frontend https_front
    bind *:443 ssl crt /etc/haproxy/certs/
    mode http
    
    # Увеличенный лимит для больших файлов
    maxconn 2000
    option http-buffer-request
    timeout http-request 300s
    
    http-request set-header X-Forwarded-Proto https
    http-request set-header X-Forwarded-For %[src]
    http-request add-header X-Real-IP %[src]
    
    acl host_infrax hdr(host) -i infrax.mydomain.ru
    acl host_identyx hdr(host) -i auth.mydomain.ru
    
    use_backend infrax_backend if host_infrax
    use_backend identyx_backend if host_identyx

# Backend для INFRAX
backend infrax_backend
    mode http
    option forwardfor
    
    timeout server 300s
    
    server infrax1 127.0.0.1:8045 ssl verify none

# Backend для IDENTYX
backend identyx_backend
    mode http
    option forwardfor
    
    server identyx1 127.0.0.1:8040 ssl verify none

Применение конфигурации

# Проверка синтаксиса
sudo haproxy -c -f /etc/haproxy/haproxy.cfg

# Перезапуск HAProxy
sudo systemctl restart haproxy

Apache HTTP Server

Apache — один из самых популярных веб-серверов с богатой историей и обширной документацией.

Преимущества

  • Широкое распространение и большое сообщество
  • Обширная документация
  • Множество модулей
  • Интеграция с certbot
💡 Предварительные требования

Убедитесь, что Apache и Certbot установлены. Инструкции: Apache.

Включение модулей

# Ubuntu / Debian
sudo a2enmod proxy proxy_http proxy_wstunnel ssl headers rewrite

# CentOS / RHEL - модули включены по умолчанию

Конфигурация Apache

Создайте файл конфигурации:

# Ubuntu/Debian
sudo nano /etc/apache2/sites-available/infrax.conf

# CentOS/RHEL
sudo nano /etc/httpd/conf.d/infrax.conf

Содержимое:

# INFRAX основное приложение
<VirtualHost *:80>
    ServerName infrax.mydomain.ru
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName infrax.mydomain.ru
    
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    
    LimitRequestBody 21474836480
    ProxyTimeout 300
    Timeout 300
    
    ProxyPreserveHost On
    ProxyRequests Off
    
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"
    
    ProxyPass / https://127.0.0.1:8045/
    ProxyPassReverse / https://127.0.0.1:8045/
    
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*)  wss://127.0.0.1:8045/$1 [P,L]
    
    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
</VirtualHost>

# IDENTYX IAM система
<VirtualHost *:80>
    ServerName auth.mydomain.ru
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName auth.mydomain.ru
    
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    
    ProxyTimeout 300
    Timeout 300
    
    ProxyPreserveHost On
    ProxyRequests Off
    
    RequestHeader set X-Forwarded-Proto "https"
    
    ProxyPass / https://127.0.0.1:8040/
    ProxyPassReverse / https://127.0.0.1:8040/
    
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*)  wss://127.0.0.1:8040/$1 [P,L]
    
    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
</VirtualHost>

Применение конфигурации

# Ubuntu/Debian
sudo a2ensite infrax.conf
sudo apache2ctl configtest
sudo systemctl restart apache2
sudo certbot --apache -d infrax.mydomain.ru -d auth.mydomain.ru

# CentOS/RHEL
sudo apachectl configtest
sudo systemctl restart httpd
sudo certbot --apache -d infrax.mydomain.ru -d auth.mydomain.ru

Доступ для нативных клиентов

Если вы планируете использовать нативные клиенты (mstsc.exe для RDP, PuTTY для SSH и т.д.) для удаленных подключений извне вашей сети, необходимо обеспечить прямой доступ к порту 8042 контейнера INFRAX.

⚠️ Важное отличие

Порт 8042 НЕ проксируется через reverse proxy, в отличие от портов 8045 (веб-интерфейс) и 8040 (IDENTYX). Это связано с особенностями работы нативных протоколов RDP/SSH/VNC.

Настройка доступа к порту 8042

Для работы нативных клиентов извне необходимо:

  1. Открыть порт 8042 в firewall:
    # UFW (Ubuntu/Debian)
    sudo ufw allow 8042/tcp
    
    # Firewalld (CentOS/RHEL)
    sudo firewall-cmd --permanent --add-port=8042/tcp
    sudo firewall-cmd --reload
  2. Настроить проброс порта на роутере/файерволе (если сервер за NAT)

Режимы подключения

Режим Порт Описание Требования
Веб-клиент 8045 Подключение через браузер Работает через reverse proxy
Нативный клиент 8042 Системные приложения (mstsc, PuTTY) Прямой доступ к порту 8042

Только веб-доступ (рекомендуется)

Если пользователи работают только через браузер:

  • ✅ Порт 8042 можно НЕ открывать извне
  • ✅ Все подключения идут через reverse proxy (порты 80/443)
  • ✅ Максимальная безопасность

Установка реальных SSL сертификатов

После настройки reverse proxy с временными сертификатами, установите реальные SSL сертификаты от Let's Encrypt.

Для Nginx

sudo certbot --nginx -d infrax.mydomain.ru -d auth.mydomain.ru

Для Apache

sudo certbot --apache -d infrax.mydomain.ru -d auth.mydomain.ru

Для HAProxy

Создайте скрипт обновления сертификатов:

sudo nano /usr/local/bin/renew-haproxy-certs.sh
#!/bin/bash
certbot renew --standalone --pre-hook "systemctl stop haproxy" --post-hook "systemctl start haproxy"

cat /etc/letsencrypt/live/infrax.mydomain.ru/fullchain.pem \
    /etc/letsencrypt/live/infrax.mydomain.ru/privkey.pem \
    > /etc/haproxy/certs/infrax.mydomain.ru.pem

cat /etc/letsencrypt/live/auth.mydomain.ru/fullchain.pem \
    /etc/letsencrypt/live/auth.mydomain.ru/privkey.pem \
    > /etc/haproxy/certs/auth.mydomain.ru.pem

chmod 600 /etc/haproxy/certs/*.pem
systemctl reload haproxy
sudo chmod +x /usr/local/bin/renew-haproxy-certs.sh

# Добавьте в cron (выполняется каждую неделю)
sudo crontab -e
# Добавьте: 0 3 * * 0 /usr/local/bin/renew-haproxy-certs.sh

Для Traefik и Caddy

SSL сертификаты обновляются автоматически. Дополнительных действий не требуется.

Проверка работоспособности

После завершения настройки проверьте доступность сервисов:

Проверка с помощью curl

# Проверка IDENTYX
curl -I https://auth.mydomain.ru

# Проверка INFRAX
curl -I https://infrax.mydomain.ru

Успешный ответ должен содержать HTTP/2 200 или HTTP/1.1 200 OK.

Проверка в браузере

  1. Откройте https://infrax.mydomain.ru в браузере
  2. Убедитесь, что отображается зеленый замок (валидный SSL сертификат)
  3. Войдите в систему
  4. Проверьте основные функции приложения

Проверка WebSocket соединений

Откройте консоль разработчика (F12) и убедитесь, что:

  • Нет ошибок подключения к WebSocket
  • Уведомления в реальном времени работают
  • Обновления данных происходят мгновенно

Устранение неполадок

502 Bad Gateway

Причина: Reverse proxy не может подключиться к backend.

Решение:

  1. Убедитесь, что INFRAX запущен: docker ps
  2. Проверьте порты: sudo netstat -tlnp | grep -E '8040|8045'
  3. Проверьте логи reverse proxy и INFRAX

SSL сертификат не получен

Причина: Certbot не может подтвердить владение доменом.

Решение:

  1. Проверьте DNS записи: nslookup infrax.mydomain.ru
  2. Убедитесь, что порт 80 открыт
  3. Проверьте firewall

WebSocket не работает

Решение: Убедитесь, что в конфигурации присутствуют заголовки Upgrade и Connection для WebSocket.

Большие файлы не загружаются

Решение: Проверьте настройки лимита размера файлов (20GB) в конфигурации вашего reverse proxy.

🎉 Поздравляем!

Ваша установка INFRAX теперь доступна через доменные имена с валидными SSL сертификатами и готова к продакшн использованию!