TrueNAS SCALE Apps: полное руководство по приложениям

Приложение в TrueNAS SCALE не запускается и висит в статусе Deploying — чаще всего причина в том, что для приложений не выбран пул хранения или система не может загрузить образы контейнеров из-за проблем с сетью. Прежде чем переустанавливать что-либо, проверьте раздел Apps → Settings → Choose Pool и убедитесь, что пул назначен и находится в состоянии Online.

Механизм приложений в TrueNAS SCALE построен на контейнерах и оркестрации: в ранних версиях SCALE использовался Kubernetes с чартами, в более новых релизах (начиная с ветки Electric Eel) платформа перешла на Docker Compose. Из-за этого поведение меню, названия пунктов и способы настройки заметно различаются между версиями системы. В этой статье разберём, как устроены приложения, как их устанавливать и что проверять при типичных ошибках.

Как устроены приложения в TrueNAS SCALE

Приложения в SCALE — это контейнеры, которые система разворачивает из готовых каталогов (каталог Community, официальный каталог и пользовательские источники). Каждое приложение получает собственное хранилище конфигурации, сетевые настройки и, при необходимости, примонтированные датасеты пула для постоянных данных.

Ключевые компоненты механизма:

  • 📦 Каталог (catalog) — репозиторий с описаниями приложений: образами, параметрами и значениями по умолчанию.
  • 🗄️ Пул приложений — выделенный пул ZFS, на котором система создаёт служебные датасеты для контейнеров.
  • 🌐 Сетевые настройки — порты, через которые приложение будет доступно из локальной сети.
  • 💾 Host Path / постоянное хранилище — привязка данных приложения к датасетам, чтобы информация переживала пересоздание контейнера.

Понимание этой структуры важно: большинство проблем с приложениями сводится либо к пулу, либо к сети, либо к правам доступа на примонтированных датасетах.

Подготовка: выбор пула и проверка сети

Первый шаг перед установкой любого приложения — назначить пул. Откройте раздел Apps в веб-интерфейсе, и если пул ещё не выбран, система предложит сделать это через Settings → Choose Pool. Выбирайте пул с достаточным свободным местом и желательно с отказоустойчивостью (mirror или RAIDZ), потому что служебные данные контейнеров будут жить именно там.

Далее убедитесь, что у сервера есть доступ в интернет: загрузка образов контейнеров требует соединения с внешними репозиториями. Проверьте настройки DNS в Network → Global Configuration — некорректный DNS-сервер является частой причиной бесконечного статуса Deploying.

☑️ Подготовка TrueNAS SCALE к установке приложений

Выполнено: 0 / 5
⚠️ Внимание: не размещайте пул приложений на том же единственном диске, где лежат критичные данные без резервной копии. При пересоздании пула или сбросе настроек приложений служебные датасеты удаляются вместе с конфигурациями контейнеров.

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

Откройте Apps → Discover Apps (в старых версиях — Available Applications) и найдите нужное приложение поиском. Нажмите Install и заполните форму: имя экземпляра, версию, сетевые порты и параметры хранения. Поля формы зависят от конкретного приложения и версии SCALE, поэтому сверяйтесь с подсказками рядом с каждым полем.

Особое внимание уделите разделу хранения. Если приложению нужны постоянные данные (медиатека, база, конфиги), переключите тип хранения на Host Path и укажите заранее созданный датасет. Это гарантирует, что данные сохранятся при обновлении или пересоздании контейнера.

# Проверка состояния приложений через shell (для версий на Docker)

docker ps

Просмотр логов конкретного контейнера

docker logs имя_контейнера

После нажатия Save/Install система начнёт загрузку образов и развёртывание. В зависимости от размера образа и скорости соединения это занимает от пары минут до заметного времени. Статус можно отслеживать на вкладке Installed Applications.

Типичные ошибки и их диагностика

Что делать, если приложение не стартует? Начните с простого: откройте карточку приложения и посмотрите события и логи. Текст ошибки обычно указывает направление поиска — сеть, права доступа или конфликт портов.

СимптомВероятная причинаЧто проверить
Вечный статус DeployingНет доступа к репозиторию образовDNS, шлюз, выход в интернет с сервера
Приложение стартует и сразу падаетОшибка прав на Host PathВладелец и права датасета, требования приложения
Веб-интерфейс приложения недоступенКонфликт или неверный проброс портаЗанят ли порт другим сервисом, настройки сети приложения
Ошибка при выборе пулаПул в degraded-состоянии или занятСостояние пула в разделе Storage
Образ не скачиваетсяОграничения сети или лимиты реестраПовторная попытка позже, проверка прокси/файрвола

Отдельно стоит сказать о правах доступа. Многие контейнеры работают от определённого пользователя внутри контейнера, и если датасет принадлежит root без нужных прав, приложение не сможет писать данные. Точные требования по UID/GID зависят от конкретного приложения — они обычно указаны в его описании в каталоге или документации образа.

⚠️ Внимание: при миграции между крупными версиями SCALE (например, с ветки на Kubernetes на ветку с Docker) старые приложения не переносятся автоматически. Перед обновлением системы сохраните конфигурации и данные приложений и изучите официальные заметки к релизу — прямой автоматический перенос приложений между этими платформами не предусмотрен.
📊 Что вы чаще всего запускаете через TrueNAS SCALE Apps?
Медиасервер (Plex/Jellyfin)
Загрузчики (qBittorrent и др.)
Nextcloud и файловые сервисы
Мониторинг и домашняя автоматизация

Управление данными приложений

Данные приложения делятся на два типа: конфигурация контейнера (хранится в служебных датасетах пула приложений) и пользовательские данные на Host Path. Резервное копирование вторых делается штатными средствами ZFS — снапшотами и репликацией. Настройте периодические снапшоты датасетов с данными через Data Protection → Periodic Snapshot Tasks.

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

Почему не стоит хранить данные только внутри контейнера

Хранилище внутри контейнера (без Host Path) привязано к жизненному циклу приложения. При удалении приложения или сбросе пула приложений эти данные уничтожаются вместе со служебными датасетами. Host Path на отдельном датасете изолирует пользовательские данные от жизненного цикла контейнера и позволяет управлять ими стандартными инструментами ZFS: снапшотами, квотами, репликацией.

Обновление и удаление приложений

Когда в каталоге появляется новая версия, на карточке приложения в разделе Installed Applications отображается доступное обновление. Нажмите Update и дождитесь завершения развёртывания. Во время обновления приложение будет недоступно — учитывайте это, если сервис используется постоянно.

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

Пользовательские приложения и собственные образы

Если нужного приложения нет в каталоге, SCALE позволяет запустить собственный контейнер. В версиях на Docker это делается через пользовательские приложения с указанием образа или YAML-файла docker-compose; в старых версиях на Kubernetes использовался механизм Launch Docker Image. Точное название пункта зависит от вашей версии системы.

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

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

Почему приложение зависло в статусе Deploying?

Наиболее вероятные причины — отсутствие доступа сервера в интернет, некорректный DNS или не назначенный пул приложений. Проверьте сетевые настройки в Network → Global Configuration и состояние пула в разделе Storage.

Удалятся ли мои данные при удалении приложения?

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

Переносятся ли приложения при обновлении TrueNAS SCALE?

В пределах одной платформы (одной контейнерной подсистемы) приложения обычно сохраняются. При смене платформы — например, с Kubernetes на Docker — автоматический перенос не гарантируется, данные нужно сохранить заранее и развернуть приложения заново. Всегда читайте заметки к релизу.

Как посмотреть логи приложения?

Откройте карточку приложения в разделе Apps — там доступны события и логи. Дополнительно можно использовать shell: docker logs имя_контейнера для версий на Docker.

Приложение не открывается в браузере, хотя запущено. Что делать?

Проверьте, какой порт назначен приложению, не занят ли он другим сервисом, и открываете ли вы правильный адрес вида http://IP-сервера:порт. Также убедитесь, что файрвол на клиенте или в сети не блокирует соединение.