Если ты работаешь с TrueNAS и хочешь организовать удобное управление веб-сервисами, реверс-прокси и SSL сертификатами, то эта статья для тебя. Давай разберем, как настроить Nginx и его удобную обертку — Nginx Proxy Manager на твоей системе.
Что такое Nginx и зачем он нужен на TrueNAS?
Nginx — это высокопроизводительный веб-сервер и реверс-прокси. На TrueNAS он решает несколько ключевых задач:
- Маршрутизация трафика к разным контейнерам и сервисам
- Управление SSL/TLS сертификатами (Let's Encrypt)
- Балансировка нагрузки между инстансами
- Кэширование статического контента
- Защита сервисов от прямого доступа из интернета
Сравнение подходов: Nginx vs Nginx Proxy Manager
| Критерий | Nginx (чистый) | Nginx Proxy Manager |
|---|---|---|
| Сложность настройки | Высокая (ручное редактирование конфигов) | Низкая (веб-интерфейс) |
| Управление SSL | Ручное, через certbot | Автоматическое, встроенное |
| Гибкость | Максимальная | Ограничена интерфейсом |
| Рекомендация | Для опытных пользователей | Для быстрого старта |
Установка Nginx Proxy Manager на TrueNAS Scale
Давай начнем с самого популярного варианта — Nginx Proxy Manager. Это Docker-контейнер с веб-интерфейсом для управления.
Шаг 1: Подготовка хранилища
Создай dataset для конфигурации NPM:
# В веб-интерфейсе TrueNAS:
# 1. Storage → Datasets
# 2. Создай dataset: /mnt/pool/docker/npm
# 3. Установи ACL: Open (или настрой под свои нужды)
Шаг 2: Создание приложения в TrueNAS Apps
Используем встроенный каталог приложений:
- Зайди в Apps → Discover Apps
- Найди "nginx-proxy-manager" (официальный образ)
- Нажми "Install"
Шаг 3: Конфигурация контейнера
Настрой следующие параметры:
# Пример конфигурации в 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
Шаг 4: Первый запуск и настройка
После запуска контейнера:
- Открой браузер: http://truenas-ip:8181
- Стандартные учетные данные:
- Email: admin@example.com
- Password: changeme
- Сразу смени пароль!
Настройка реверс-прокси для сервисов
Представь, что у тебя есть Nextcloud на порту 8080. Давай сделаем к нему доступ через домен с SSL.
Добавление прокси-хоста
- В NPM: Hosts → Proxy Hosts → Add Proxy Host
- Заполни поля:
- Domain Names: cloud.tvoi-domain.com
- Scheme: http
- Forward Hostname/IP: IP твоего TrueNAS
- Forward Port: 8080
- Перейди на вкладку SSL:
- SSL Certificate: Request a new SSL Certificate
- Введи email для Let's Encrypt
- Используй DNS Challenge если нужен wildcard
Прямая установка Nginx на TrueNAS Core (через jail)
Если ты используешь TrueNAS Core, вот как установить чистый Nginx:
# Создаем 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 для реверс-прокси
# /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;
}
}
}
Проброс портов и безопасность
Для доступа из интернета нужно настроить проброс портов на роутере:
# Проброс портов на роутере:
# Внешний порт 80 → Внутренний IP TrueNAS:80
# Внешний порт 443 → Внутренний IP TrueNAS:443
# Важно: Не пробрасывай порт 8181 (интерфейс NPM) наружу!
Оптимизация производительности 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:
# Скрипт для проверки здоровья 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 для полного контроля.