TrueNAS Nginx: Настройка прокси и веб-сервера | Пошаговое руководство | AdminWiki

Настройка Nginx и Nginx Proxy Manager на TrueNAS: Полное руководство

21 января 2026 7 мин. чтения #docker #nginx #nginx proxy manager #reverse proxy #truenas #веб-сервер #прокси

Если ты работаешь с TrueNAS и хочешь организовать удобное управление веб-сервисами, реверс-прокси и SSL сертификатами, то эта статья для тебя. Давай разберем, как настроить Nginx и его удобную обертку — Nginx Proxy Manager на твоей системе.

Что такое Nginx и зачем он нужен на TrueNAS?

Nginx — это высокопроизводительный веб-сервер и реверс-прокси. На TrueNAS он решает несколько ключевых задач:

  • Маршрутизация трафика к разным контейнерам и сервисам
  • Управление SSL/TLS сертификатами (Let's Encrypt)
  • Балансировка нагрузки между инстансами
  • Кэширование статического контента
  • Защита сервисов от прямого доступа из интернета
Важно: TrueNAS Scale использует Kubernetes, а TrueNAS Core — FreeBSD jails. Подходы к установке будут отличаться!

Сравнение подходов: Nginx vs Nginx Proxy Manager

Критерий Nginx (чистый) Nginx Proxy Manager
Сложность настройки Высокая (ручное редактирование конфигов) Низкая (веб-интерфейс)
Управление SSL Ручное, через certbot Автоматическое, встроенное
Гибкость Максимальная Ограничена интерфейсом
Рекомендация Для опытных пользователей Для быстрого старта

Установка Nginx Proxy Manager на TrueNAS Scale

Давай начнем с самого популярного варианта — Nginx Proxy Manager. Это Docker-контейнер с веб-интерфейсом для управления.

Шаг 1: Подготовка хранилища

Создай dataset для конфигурации NPM:

bash
# В веб-интерфейсе TrueNAS:
# 1. Storage → Datasets
# 2. Создай dataset: /mnt/pool/docker/npm
# 3. Установи ACL: Open (или настрой под свои нужды)

Шаг 2: Создание приложения в TrueNAS Apps

Используем встроенный каталог приложений:

  1. Зайди в Apps → Discover Apps
  2. Найди "nginx-proxy-manager" (официальный образ)
  3. Нажми "Install"

Шаг 3: Конфигурация контейнера

Настрой следующие параметры:

yaml
# Пример конфигурации в TrueNAS Apps:
container_images:
  - image: jc21/nginx-proxy-manager:latest

ports:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
  - containerPort: 81
    hostPort: 8181  # Веб-интерфейс
    protocol: TCP

storage:
  - mountPath: /config
    hostPath: /mnt/pool/docker/npm/config
    type: hostPath
  - mountPath: /data
    hostPath: /mnt/pool/docker/npm/data
    type: hostPath
  - mountPath: /letsencrypt
    hostPath: /mnt/pool/docker/npm/letsencrypt
    type: hostPath
Внимание: Порт 81 внутри контейнера маппится на порт 8181 на хосте, чтобы не конфликтовать с другими сервисами.

Шаг 4: Первый запуск и настройка

После запуска контейнера:

  1. Открой браузер: http://truenas-ip:8181
  2. Стандартные учетные данные:
    • Email: admin@example.com
    • Password: changeme
  3. Сразу смени пароль!

Настройка реверс-прокси для сервисов

Представь, что у тебя есть Nextcloud на порту 8080. Давай сделаем к нему доступ через домен с SSL.

Добавление прокси-хоста

  1. В NPM: Hosts → Proxy Hosts → Add Proxy Host
  2. Заполни поля:
    • Domain Names: cloud.tvoi-domain.com
    • Scheme: http
    • Forward Hostname/IP: IP твоего TrueNAS
    • Forward Port: 8080
  3. Перейди на вкладку SSL:
    • SSL Certificate: Request a new SSL Certificate
    • Введи email для Let's Encrypt
    • Используй DNS Challenge если нужен wildcard

Прямая установка Nginx на TrueNAS Core (через jail)

Если ты используешь TrueNAS Core, вот как установить чистый Nginx:

bash
# Создаем jail
sudo iocage create -n "nginx" -r 13.2-RELEASE ip4_addr="vnet0|192.168.1.100/24" vnet=on boot=on

# Заходим в jail
iocage console nginx

# Устанавливаем Nginx
pkg update
pkg install nginx

# Включаем автозагрузку
sysrc nginx_enable=YES

# Запускаем
service nginx start

Базовый конфиг Nginx для реверс-прокси

nginx
# /usr/local/etc/nginx/nginx.conf

events {
    worker_connections 1024;
}

http {
    upstream nextcloud_backend {
        server 192.168.1.101:8080;
    }

    server {
        listen 80;
        server_name cloud.tvoi-domain.com;

        location / {
            proxy_pass http://nextcloud_backend;
            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;
        }
    }
}

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

Для доступа из интернета нужно настроить проброс портов на роутере:

network
# Проброс портов на роутере:
# Внешний порт 80 → Внутренний IP TrueNAS:80
# Внешний порт 443 → Внутренний IP TrueNAS:443

# Важно: Не пробрасывай порт 8181 (интерфейс NPM) наружу!
Безопасность: Всегда используй VPN для доступа к интерфейсу NPM (порт 8181). Не открывай его в интернет!

Оптимизация производительности Nginx

Добавь эти настройки в конфиг для лучшей производительности:

nginx
# В http блоке:
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript;

# Кэширование статики
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

# Таймауты
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;

Частые проблемы и решения

Проблема: NPM не запускается

Решение: Проверь логи контейнера в TrueNAS Apps → Installed Apps → nginx-proxy-manager → Logs. Частая причина — проблемы с правами на директории.

Проблема: SSL сертификаты не обновляются

Решение: Убедись, что порты 80 и 443 открыты для входящих подключений с интернета. Let's Encrypt должен иметь возможность проверить домен.

Автоматизация и мониторинг

Настрой мониторинг состояния Nginx:

bash
# Скрипт для проверки здоровья Nginx
#!/bin/bash

if curl -f http://localhost:80 > /dev/null 2>&1; then
    echo "Nginx is running"
else
    echo "Nginx is down! Restarting..."
    docker restart nginx-proxy-manager  # или service nginx restart
fi

# Добавь в cron для проверки каждые 5 минут
# */5 * * * * /path/to/check-nginx.sh

FAQ: Ответы на частые вопросы

Можно ли использовать Nginx Proxy Manager для нескольких доменов?

Да, NPM поддерживает неограниченное количество доменов и субдоменов. Каждый прокси-хост настраивается отдельно.

Как перенести конфигурацию NPM на другой сервер?

Скопируй директорию /config с предыдущего сервера. Все настройки хранятся в SQLite базе данных в этой папке.

Нужно ли отключать встроенный веб-сервер TrueNAS?

Нет, веб-интерфейс TrueNAS работает на порту 80/443 только при прямом доступе к IP. Nginx слушает те же порты, но для доменных имен.

Как настроить аутентификацию для некоторых сервисов?

В NPM есть встроенная функция Access Lists. Создай список доступа с логином/паролем и прикрепи его к нужному прокси-хосту.

Заключение

Настройка Nginx или Nginx Proxy Manager на TrueNAS открывает множество возможностей для управления домашней или офисной инфраструктурой. Ты можешь:

  • Централизованно управлять SSL сертификатами
  • Создавать красивые доменные имена для сервисов
  • Добавлять базовую аутентификацию
  • Кэшировать статический контент для ускорения

Начни с Nginx Proxy Manager для быстрого результата, а когда освоишься — экспериментируй с чистым Nginx для полного контроля.

Поделиться:
Сохранить гайд? В закладки браузера