Приложение в 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 к установке приложений
⚠️ Внимание: не размещайте пул приложений на том же единственном диске, где лежат критичные данные без резервной копии. При пересоздании пула или сбросе настроек приложений служебные датасеты удаляются вместе с конфигурациями контейнеров.
Установка приложения из каталога
Откройте 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) старые приложения не переносятся автоматически. Перед обновлением системы сохраните конфигурации и данные приложений и изучите официальные заметки к релизу — прямой автоматический перенос приложений между этими платформами не предусмотрен.
Управление данными приложений
Данные приложения делятся на два типа: конфигурация контейнера (хранится в служебных датасетах пула приложений) и пользовательские данные на 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-сервера:порт. Также убедитесь, что файрвол на клиенте или в сети не блокирует соединение.