Установка 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
Запуск произвольных 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 с владельцем датасета | Права на датасет и параметры пользователя приложения |
Хранилище и права доступа
Самая частая неочевидная проблема — права доступа к датасетам, смонтированным в контейнер. Приложение внутри контейнера работает от конкретного пользователя, и если владелец датасета на пуле не совпадает с этим пользователем, контейнер получит ошибки записи. Перед монтированием датасета проверьте его 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 останутся нетронутыми, если они лежат на другом пуле, поэтому такая схема хранения сильно упрощает перенос.