TrueNAS Proxy: Настройка Nginx и Traefik для веб-приложений | AdminWiki

TrueNAS Proxy: Полное руководство по настройке обратного прокси в TrueNAS Scale и Core

04 февраля 2026 7 мин. чтения #docker #kubernetes #nginx #proxy #reverse proxy #ssl #traefik #truenas #веб-сервер #настройка

Представь, что у тебя на TrueNAS работает несколько веб-приложений: Nextcloud, Bitwarden, домашняя страница. Каждое слушает на своём порту, и ты вынужден запоминать кучу адресов типа 192.168.1.100:8080, 192.168.1.100:8181. Неудобно, небезопасно и непрофессионально. Решение — обратный прокси (reverse proxy). Он станет единым входом, который будет грамотно распределять запросы по приложениям, добавлять SSL-шифрование и управлять доступом. Давай разберём, как настроить proxy в TrueNAS.

Что такое обратный прокси и зачем он нужен в TrueNAS?

Обратный прокси — это сервер, который принимает запросы от клиентов (твоего браузера) и перенаправляет их на соответствующие внутренние сервисы. В контексте TrueNAS это даёт несколько ключевых преимуществ:

  • Единая точка входа: Все приложения доступны через один домен или IP-адрес на стандартных портах (80, 443).
  • Централизованное SSL/TLS: Настраиваешь сертификаты один раз на прокси, а не в каждом приложении.
  • Безопасность: Прячешь внутреннюю структуру сети, добавляешь базовую аутентификацию, ограничиваешь доступ по IP.
  • Балансировка нагрузки: Если приложение запущено в нескольких экземплярах.
  • Кэширование: Ускорение отдачи статического контента.
Важно: В TrueNAS Scale (на базе Kubernetes) и TrueNAS Core (на базе FreeBSD) подход к настройке прокси отличается. Scale предлагает больше «коробочных» решений через приложения (Apps), в Core часто требуется ручная настройка в jail или виртуальной машине.

Выбор решения для прокси в TrueNAS

Есть два основных кандидата: Nginx Proxy Manager (удобный GUI) и Traefik (нативный для Kubernetes). Выбор зависит от твоей системы и опыта.

Решение Лучше для Плюсы Минусы
Nginx Proxy Manager TrueNAS Scale (как приложение) и TrueNAS Core (в jail) Веб-интерфейс, простота, встроенный Let's Encrypt Меньше гибкости для сложных сценариев
Traefik TrueNAS Scale (нативный ingress-контроллер) Автоматическое обнаружение сервисов, идеально для Kubernetes Конфигурация через файлы, требует понимания K8s
Ручной Nginx/Caddy TrueNAS Core (в jail), полный контроль Максимальная гибкость и производительность Требует глубоких знаний, настройка вручную

Настройка Nginx Proxy Manager в TrueNAS Scale

Это самый популярный и простой способ. Устанавливаем его как обычное приложение из каталога TrueNAS.

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

  1. В веб-интерфейсе TrueNAS Scale перейди в «Apps».
  2. Нажми «Discover Apps».
  3. Найди «nginx-proxy-manager» (официальный образ от jc21).
  4. Нажми «Install».

Шаг 2: Конфигурация установки

В настройках установки критически важно правильно пробросить порты и тома (storage).

yaml
# Пример конфигурации портов в манифесте приложения (Apps -> Edit)
networking:
  containerPort: 80   # Внутренний порт HTTP
  hostPort: 80        # Проброс на порт 80 хоста (основной веб)
  containerPort2: 443
  hostPort2: 443      # Проброс на порт 443 хоста (HTTPS)
  containerPort3: 81
  hostPort3: 81       # Проброс на порт 81 хоста (админка NPM)

storage:
  # Обязательно пробрось том для данных
  - mountPath: /data
    datasetName: путь/к/твоему/датасету  # Например, pool/apps/npm_data
Внимание: Если на хосте уже есть служба, использующая порты 80 или 443 (например, веб-интерфейс самого TrueNAS на порту 80), их нужно освободить или изменить. Веб-интерфейс TrueNAS можно перенести на другой порт в настройках «System Settings → General → GUI».

Шаг 3: Первый вход и базовая настройка

  1. После установки открой http://IP_ТВОЕГО_TRUENAS:81.
  2. Стандартные учётные данные: Email: admin@example.com, Password: changeme. Сразу смени пароль.
  3. Перейди в «SSL Certificates»«Add SSL Certificate»«Let's Encrypt».
  4. Введи свой домен (например, nas.tvoi-domain.ru), email для уведомлений. Убедись, что порт 80 открыт для интернета или используешь DNS challenge.

Шаг 4: Добавление прокси-хоста (Proxy Host)

Теперь создадим правило для перенаправления запросов на твоё внутреннее приложение, например, Nextcloud.

  1. В панели NPM нажми «Hosts»«Proxy Hosts»«Add Proxy Host».
  2. Domain Names: nextcloud.tvoi-domain.ru (или subdomain, или путь).
  3. Scheme: http (если приложение не на HTTPS).
  4. Forward Hostname / IP: Внутренний IP или DNS-имя контейнера Nextcloud. В Scale это часто что-то вроде ix-nextcloud.
  5. Forward Port: Порт, на котором слушает Nextcloud (например, 8080).
  6. На вкладке «SSL» выбери выданный ранее сертификат Let's Encrypt, включи «Force SSL» и «HTTP/2 Support».
  7. Сохрани. Через пару минут сможешь зайти на https://nextcloud.tvoi-domain.ru.

Использование Traefik как Ingress-контроллера в TrueNAS Scale

Если ты разворачиваешь приложения через официальные «Apps» в Scale, Traefik уже предустановлен как системный ingress-контроллер. Настройка идёт через аннотации в конфиге приложения.

Настройка приложения для работы с Traefik

При установке приложения (например, Nextcloud) нужно добавить несколько аннотаций в раздел «Web Portal Configuration» или «Advanced DNS/Ingress».

yaml
# Пример аннотаций для приложения в TrueNAS Scale
# В разделе конфигурации Ingress/Portal добавь:

annotations:
  traefik.ingress.kubernetes.io/router.entrypoints: web,websecure
  traefik.ingress.kubernetes.io/router.tls: "true"
  cert-manager.io/cluster-issuer: letsencrypt-prod  # Если используешь cert-manager

# В разделе Hosts укажи свой домен
hosts:
  - host: nextcloud.tvoi-domain.ru
    paths:
      - path: /
        pathType: Prefix
        serviceName: ix-nextcloud  # Имя сервиса приложения
        servicePort: 8080

После применения конфигурации Traefik автоматически обнаружит новое правило, получит сертификат (если настроен cert-manager) и начнёт маршрутизировать трафик.

Настройка прокси в TrueNAS Core через Jail

В Core нет встроенного менеджера приложений. Создаём jail, устанавливаем в него Nginx вручную и конфигурируем.

Шаг 1: Создание и настройка Jail

bash
# В CLI TrueNAS Core или через веб-интерфейс создай jail
# Через веб: Jails -> Add -> Укажи имя (например, proxy-jail)

# Зайди в jail
sudo iocage console proxy-jail

# Обнови репозитории и установи nginx и редактор
pkg update && pkg upgrade -y
pkg install -y nginx nano

Шаг 2: Базовая конфигурация Nginx

Создаём конфиг виртуального хоста для нашего прокси.

nginx
# /usr/local/etc/nginx/nginx.conf (основной конфиг) - оставь дефолтный.
# Создай конфиг для сайта в sites-available
nano /usr/local/etc/nginx/sites-available/truenas-proxy

# Вставь базовую конфигурацию:
server {
    listen 80;
    server_name nas.tvoi-domain.ru;

    location / {
        proxy_pass http://192.168.1.100; # IP твоего TrueNAS
        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;
    }
}

# Создай симлинк в sites-enabled
ln -s /usr/local/etc/nginx/sites-available/truenas-proxy /usr/local/etc/nginx/sites-enabled/

# Проверь конфигурацию
nginx -t

# Запусти nginx и добавь в автозагрузку
service nginx start
sysrc nginx_enable="YES"

Продвинутые сценарии и оптимизация

Настройка аутентификации (Basic Auth)

В Nginx Proxy Manager это делается в пару кликов в интерфейсе. Для ручного Nginx в Core:

bash
# Создай файл с паролями
sudo sh -c "echo -n 'user:' >> /usr/local/etc/nginx/.htpasswd"
sudo sh -c "openssl passwd -apr1 >> /usr/local/etc/nginx/.htpasswd"
# Введи пароль дважды
nginx
# Добавь в location блок в конфиге nginx
auth_basic "Restricted Area";
auth_basic_user_file /usr/local/etc/nginx/.htpasswd;

Проброс реального IP-адреса клиента

Чтобы внутренние приложения (например, Nextcloud или логгеры) видели настоящий IP пользователя, а не IP прокси, используй эти заголовки (уже есть в примерах выше) и настрой доверенные подсети.

nginx
# В основной конфиг nginx (http блок) или в конфиг прокси
set_real_ip_from 192.168.1.0/24; # Твоя локальная сеть
real_ip_header X-Forwarded-For;
real_ip_recursive on;
Поделиться:
Сохранить гайд? В закладки браузера