Представь, что твой NAS — это не просто хранилище файлов, а полноценная платформа для запуска приложений: медиасервер, облако, системы мониторинга или даже домашнюю автоматизацию. TrueNAS превращает эту идею в реальность через контейнеры. Давай разберем, как это работает в двух основных версиях — Scale и Core.
TrueNAS Scale vs Core: два подхода к контейнеризации
Важно понимать фундаментальную разницу между платформами, так как подход к контейнерам в них кардинально отличается.
| Аспект | TrueNAS Scale | TrueNAS Core |
|---|---|---|
| Базовая технология | Kubernetes + Docker | Jails (FreeBSD) + Docker через плагины |
| Управление | Интегрированный Apps (TrueCharts), kubectl | Вручную через CLI, ограниченный GUI |
| Оркестрация | Автоматическая (K8s) | Ручная или через Docker Compose |
| Рекомендация | Для современных контейнерных workloads | Для простых задач или если нужен FreeBSD |
Развертывание контейнеров в TrueNAS Scale: пошаговый гайд
В Scale контейнеры управляются через систему "Apps", которая по сути является кастомизированным Kubernetes. Давай пройдем весь путь от настройки до запуска первого приложения.
Шаг 1: Настройка хранилища для контейнеров
Перед запуском приложений нужно создать Dataset, который будет использоваться для хранения данных контейнеров и их конфигураций.
# Рекомендуемая структура папок в Dataset
/containers/
├── apps/ # Конфиги приложений
├── data/ # Постоянные данные
│ ├── postgres/
│ ├── redis/
│ └── nextcloud/
└── compose/ # Docker Compose файлы (если нужно)
Шаг 2: Настройка сети и безопасности
По умолчанию Scale создает изолированную сеть для контейнеров. Для доступа извне нужно настроить Load Balancer или NodePort.
Шаг 3: Установка приложений через TrueCharts
TrueCharts — это каталог готовых Helm-чартов, адаптированных для TrueNAS Scale. Добавь репозиторий:
- Зайди в "Apps" → "Manage Catalogs"
- Нажми "Add Catalog"
- Введи данные:
- Name:
truecharts - Repository:
https://github.com/truecharts/catalog - Branch:
main
- Name:
Шаг 4: Запуск первого контейнера (на примере Nextcloud)
После добавления каталога найди Nextcloud в списке приложений и нажми "Install". Вот ключевые настройки:
# Важные параметры в форме установки:
Application Name: nextcloud
Version: latest
Storage:
- Mount Path: /config
Dataset: containers/nextcloud/config
- Mount Path: /data
Dataset: containers/nextcloud/data
Network:
Service Type: LoadBalancer
Port: 8080 → 80
Environment Variables:
- POSTGRES_HOST: postgres-postgresql
- POSTGRES_DB: nextcloud
Продвинутые сценарии: Docker Compose в TrueNAS
Что если нужного приложения нет в TrueCharts? Или тебе нужна сложная связка контейнеров? Используй Docker Compose.
Метод 1: Через Shell в Scale
Установи Docker Compose и создай docker-compose.yml в своем Dataset:
# Установка Docker Compose
apt update && apt install docker-compose -y
# Переход в рабочую директорию
cd /mnt/pool/containers/compose
# Создание docker-compose.yml
nano docker-compose.yml
Метод 2: Пример Compose для стека приложений
version: '3.8'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: unless-stopped
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /mnt/pool/containers/data/portainer:/data
networks:
- nas-network
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_POLL_INTERVAL=3600
networks:
- nas-network
networks:
nas-network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/24
Запусти стек командой: docker-compose up -d
TrueNAS Core и контейнеры: работа через Jails и Docker
В Core нет встроенной поддержки Docker, но есть несколько способов запустить контейнеры:
- Jails: Нативная технология FreeBSD, похожая на контейнеры
- Docker в Jail: Установка Docker внутри Jail (Linux-эмуляция)
- Bhyve VM с Docker: Виртуальная машина с Linux и Docker
Создание Jail с Docker в TrueNAS Core
# 1. Создай Jail через GUI или CLI
# 2. Подключись к Jail
jexec <jail_id> /bin/tcsh
# 3. Установи Docker (в Jail с Linux-эмуляцией)
pkg install docker
sysrc docker_enable=YES
service docker start
# 4. Добавь пользователя в группу docker
pw groupmod docker -m <username>
Оптимизация производительности и мониторинг
Контейнеры потребляют ресурсы. Вот как контролировать их работу:
Мониторинг через CLI
# Просмотр запущенных контейнеров (Scale)
k3s kubectl get pods -A
# Логи конкретного пода
k3s kubectl logs -f <pod_name>
# Использование ресурсов
k3s kubectl top pods
# Для Docker Compose
docker stats
docker ps -a
Ограничение ресурсов
В настройках приложения в Scale можно установить лимиты:
- CPU: Reservations и Limits
- Memory: Минимальная и максимальная память
- GPU: Пасстрока GPU для машинного обучения
Бэкап и миграция контейнеров
Твои контейнеры должны быть восстанавливаемыми. Вот стратегия:
- Конфиги в Git: Все docker-compose.yml и кастомные конфиги храни в репозитории
- Dataset снапшоты: Регулярные снапшоты Dataset с данными контейнеров
- Экспорт конфигов приложений: В Scale используй "Export Config" для каждого приложения
# Экспорт всех Docker Compose конфигов
cd /mnt/pool/containers/compose
tar -czf backup_compose_$(date +%Y%m%d).tar.gz *.yml
Частые проблемы и решения
Проблема: Контейнер не запускается, "ImagePullBackOff"
Решение: Проверь доступ к Docker Hub. В Scale можно настроить container registry mirrors в настройках Kubernetes.
Проблема: Нет доступа к хостовым папкам
Решение: Убедись, что Dataset смонтирован с правильными правами. В Scale используй "Storage" секцию в настройках приложения.
Проблема: Приложение недоступно по сети
Решение: Проверь Service Type (LoadBalancer/ClusterIP) и firewall правила. Для отладки используй port-forward:
k3s kubectl port-forward pod/<pod_name> 8080:80
Лучшие практики работы с контейнерами в TrueNAS
- Один контейнер — одна служба: Не запихивай всё в один контейнер
- Используй .env файлы: Для хранения чувствительных данных (пароли, ключи)
- Версионируй образы: Не используй :latest в production
- Логи в отдельный Dataset: Не храни логи вместе с данными приложения
- Регулярные обновления: Настрой watchtower или аналоги для автообновления
Контейнеры превращают TrueNAS из простого файлового хранилища в мощную домашнюю или офисную платформу. Начни с простого приложения (типа Portainer), освои базовые концепции, а затем переходи к сложным стекам. Главное — не бойся экспериментировать в изолированной среде перед переносом в production.