TrueNAS и Docker: полное руководство по запуску контейнеров

Установка Docker-приложения на TrueNAS SCALE чаще всего заканчивается ошибкой ещё на этапе выбора пула: система требует выделить отдельный пул под приложения, и без этого шага кнопка запуска каталога просто не активируется. Проверить ситуацию можно в разделе Apps → Settings → Choose Pool — если пул не выбран, дальнейшая настройка контейнеров невозможна в принципе.

В отличие от обычного сервера с Docker Engine, TrueNAS SCALE использует собственную систему приложений, построенную поверх Kubernetes и контейнерной среды. Это даёт интеграцию с ZFS-хранилищем и веб-интерфейсом, но накладывает ограничения: непривычные пути монтирования, особенности сетевых настроек и зависимость от каталогов приложений. Ниже разберём, как всё настроить правильно и что делать, когда контейнер не стартует.

Почему TrueNAS SCALE, а не CORE

Ключевое различие двух веток TrueNAS — поддержка контейнеров. TrueNAS CORE построен на FreeBSD и использует систему Jails и плагинов, а TrueNAS SCALE основан на Debian Linux, что позволяет запускать нативные контейнеры и приложения из каталога. Если ваша цель — именно Docker-совместимые приложения, выбор однозначно в пользу SCALE.

Миграция с CORE на SCALE требует переустановки системы с сохранением пулов данных, поэтому решение лучше принимать заранее. Пулы ZFS при этом импортируются, но конфигурацию плагинов и джейлов перенести напрямую нельзя — их придётся пересоздавать как приложения.

Подготовка пула для приложений

Первый практический шаг — выделить пул, на котором система развернёт служебные датасеты для приложений. Откройте раздел Apps в веб-интерфейсе и нажмите Settings → Choose Pool. Система создаст на выбранном пуле датасет ix-applications, где будут храниться образы, конфигурации и рабочие данные контейнеров.

  • 📦 Используйте пул с запасом свободного места — образы и данные приложений растут со временем
  • ⚡ Пул на SSD заметно ускорит запуск контейнеров и работу баз данных внутри них
  • 🚫 Не храните пользовательские файлы внутри ix-applications — это служебная область
  • 💾 Данные приложений (медиа, документы) держите в отдельных датасетах и монтируйте их через Host Path
⚠️ Внимание: смена пула приложений после установки контейнеров — небезопасная операция. Существующие приложения придётся переустанавливать, а их настройки переносить вручную. Выбирайте пул с расчётом на долгосрочное использование.

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

После выбора пула становится доступен каталог приложений. В интерфейсе Apps → Discover Apps найдите нужное приложение, нажмите Install и заполните форму: имя установки, версию образа, параметры сети и хранилища. Большинство популярных сервисов — Nextcloud, Plex, Home Assistant — присутствуют в официальном каталоге или в каталоге сообщества.

Обратите внимание на раздел хранилища в форме установки. По умолчанию приложение может использовать внутреннее хранилище типа ixVolume, но для важных данных правильнее указать Host Path — путь к вашему датасету на пуле. Тогда данные останутся доступны даже после удаления самого приложения.

☑️ Установка приложения на TrueNAS SCALE

Выполнено: 0 / 5

Запуск произвольных Docker-образов

Если нужного приложения нет в каталоге, используйте функцию установки пользовательского образа — в интерфейсе она называется Custom App или аналогично в зависимости от версии системы. Вам потребуется указать репозиторий образа (например, с Docker Hub), тег версии, переменные окружения, порты и точки монтирования.

Точный набор полей зависит от версии TrueNAS SCALE, поэтому сверяйтесь с документацией вашего релиза. Общий принцип неизменен: всё, что в обычном Docker вы передавали бы через docker run, здесь задаётся через форму веб-интерфейса.

# Эквивалент на обычном Docker-хосте для понимания параметров

docker run -d \

--name myapp \

-p 8080:80 \

-v /mnt/pool/appdata:/data \

-e TZ=Europe/Moscow \

имя_образа:тег

Что делать, если нужен docker-compose

В некоторых версиях SCALE доступен запуск стека через внешние инструменты: можно подключиться по SSH и использовать Docker напрямую, но такие контейнеры не будут управляться из веб-интерфейса Apps и могут конфликтовать с системой приложений. Более поддерживаемый путь — перенести сервисы из compose-файла в отдельные Custom App с теми же переменными и томами.

Сеть, порты и доступ к контейнерам

Типичная причина «приложение установлено, но не открывается» — конфликт портов или неверный тип сети. Проверьте, что порт, указанный в настройках приложения, не занят другим сервисом и не совпадает с портами самого интерфейса TrueNAS. Веб-интерфейс по умолчанию использует порты 80 и 443, поэтому их занимать приложениями нельзя — либо перенастройте интерфейс в System Settings → General.

Порядок диагностики доступа простой: сначала убедитесь, что приложение в статусе Running, затем проверьте порт из локальной сети, и только потом разбирайтесь с файрволом и маршрутизацией. Если контейнер работает, но страница не открывается, посмотрите логи приложения через кнопку Logs или Shell в разделе установленных приложений.

СимптомВероятная причинаЧто проверить
Кнопка установки неактивнаНе выбран пул приложенийApps → Settings → Choose Pool
Приложение в статусе Deploying бесконечноОшибка загрузки образа или нехватка ресурсовЛоги пода, свободное место на пуле
Страница не открывается в браузереКонфликт портов или неверный портНастройки портов приложения и TrueNAS
Данные пропали после пересозданияИспользовался ixVolume вместо Host PathТип хранилища в настройках приложения
Ошибка прав доступа в контейнереНесовпадение UID/GID с владельцем датасетаПрава на датасет и параметры пользователя приложения
📊 Как вы запускаете Docker-приложения на TrueNAS?
Только официальный каталог
Каталог сообщества
Custom App с произвольными образами
Напрямую через Docker по SSH

Хранилище и права доступа

Самая частая неочевидная проблема — права доступа к датасетам, смонтированным в контейнер. Приложение внутри контейнера работает от конкретного пользователя, и если владелец датасета на пуле не совпадает с этим пользователем, контейнер получит ошибки записи. Перед монтированием датасета проверьте его ACL и задайте владельца, соответствующего идентификатору пользователя приложения.

Настройка выполняется в разделе Datasets: выберите датасет, откройте редактирование Permissions и укажите нужного пользователя или группу. Для приложений из каталога идентификатор пользователя обычно указан в описании приложения; для собственных образов его можно узнать из документации конкретного образа.

⚠️ Внимание: рекурсивная смена прав на датасете с большим объёмом данных может занять заметное время и затронуть вложенные датасеты. Применяйте изменения осознанно и при возможности тестируйте на отдельном датасете.
  • 🔑 Создайте отдельного пользователя под приложения, не используйте root
  • 📁 Держите данные каждого приложения в собственном датасете — так проще делать снапшоты
  • 🛡️ Включите регулярные снапшоты датасетов с данными приложений через Data Protection

Обновление и откат приложений

Обновления приложений приходят вместе с обновлением каталога. В разделе установленных приложений появляется индикатор доступной новой версии — нажмите Upgrade и дождитесь пересоздания контейнера. Данные на Host Path при этом сохраняются, а вот внутреннее состояние в ixVolume зависит от логики конкретного приложения.

Если после обновления приложение перестало работать, вариантов два: откатить данные из снапшота ZFS и вернуть предыдущую версию образа, либо разбираться в логах — часто проблема в изменившихся переменных окружения новой версии. Не обновляйте сразу все приложения: делайте это по одному, проверяя работоспособность каждого.

⚠️ Внимание: обновление самой системы TrueNAS SCALE может менять механизм работы приложений. Перед мажорным обновлением ОС изучите примечания к релизу и убедитесь, что у вас есть резервные копии конфигурации и данных.

Часто задаваемые вопросы

Можно ли использовать привычный docker-compose на TrueNAS SCALE?

Напрямую через веб-интерфейс — нет, система приложений управляет контейнерами сама. Технически возможен запуск через SSH, но такие контейнеры выпадают из управления Apps и могут конфликтовать с ним. Рекомендуемый путь — переносить сервисы в отдельные Custom App.

Почему приложение не видит файлы на смонтированном датасете?

Наиболее вероятная причина — права доступа: пользователь, от имени которого работает контейнер, не имеет прав на чтение или запись в датасет. Проверьте владельца и ACL датасета в разделе Datasets и сверьте с идентификатором пользователя приложения.

Сколько ресурсов нужно для приложений?

Зависит от конкретных приложений: лёгким сервисам хватает минимума, транскодирование в медиасерверах требует заметных ресурсов процессора. Ориентируйтесь на требования каждого приложения и следите за загрузкой через Reporting. Точные минимальные требования указываются в документации вашей версии TrueNAS.

Что будет с приложениями при обновлении TrueNAS SCALE?

Установленные приложения и их данные на Host Path обычно сохраняются, но механизм приложений между мажорными версиями может меняться. Перед обновлением прочитайте примечания к релизу и сделайте снапшоты датасетов с данными.

Можно ли перенести приложения на другой пул?

Штатной кнопки миграции нет: потребуется переустановка приложений после смены пула через Settings → Choose Pool. Данные на Host Path останутся нетронутыми, если они лежат на другом пуле, поэтому такая схема хранения сильно упрощает перенос.