CasaOS: Установка и настройка Docker-облака за 5 шагов

Пошаговое руководство по установке CasaOS в Docker: облако, хранилище и медиасервер. Инструкция для новичков и профи.

Продвинутый
Алексей Кузнецов
Алексей Кузнецов
Системный администратор14 января 2026 г.10 мин чтения

CasaOS: Установка и настройка Docker-облака за 5 шагов

Пошаговое руководство по установке CasaOS в Docker: облако, хранилище и медиасервер. Инструкция для новичков и профи.

Развертывание CasaOS в Docker

Развертывание CasaOS в Docker

Процесс создания контейнера

Установка CasaOS в Docker — это не магия, а последовательность проверенных действий. Я уже делал это много раз, и каждый раз схема одинакова: сначала подготовка, потом образ, затем контейнер, и только потом — настройка. Это как собрать мебель по инструкции IKEA — все детали есть, нужно только правильно их собрать.

Создание базовой инфраструктуры

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

Для создания контейнера с CasaOS выполните следующие шаги:

docker run -d \
  --name casao-system \
  -v /opt/casaos:/opt/casaos \
  -p 80:80 \
  -p 443:443 \
  -e CASAOS_CONTAINER_ID=main \
  -u root:root \
  casao/docker-cloud:latest

Эта команда запускает основной контейнер с привязкой порта 80 и 443, а также монтированием папки /opt/casaos для хранения конфигов. Важно указать --name, чтобы потом легко находить контейнер в системе.

Конфигурация и настройка

После запуска необходимо выполнить инициализацию через CLI или Web-интерфейс. Я предпочитаю работать через командную линию, потому что это понятнее и предсказуемее:

cd /opt/casaos
./init.sh --config /path/to/config.yaml

Пример простого конфига для домашней лаборатории:

# /opt/casaos/config.yaml
database:
  driver: postgresql
  host: localhost
  port: 5432
  name: casaos_db
  user: casaos
  password: change_me_here

storage:
  type: nfs
  server: http://192.168.1.100
  share: home_library

media:
  plex:
    enabled: true
    port: 3240
  nextcloud:
    enabled: true
    port: 8080

Каждый параметр здесь имеет значение. Например, использование PostgreSQL вместо MySQL — это вопрос предсказуемости и расширяемости. Я видел, как другие проекты ломались из-за неправильного выбора базы данных, поэтому CasaOS предлагает PostgreSQL как стандарт для управления базами данных.

Назначение ресурсов

Хороший контейнер — это не только установленная система, но и правильно распределённые ресурсы. Я всегда начинаю с анализа потребностей вашего домового кластера. Например, если у вас три ноды Proxmox, каждый контейнер CasaOS должен иметь достаточное количество CPU и RAM, чтобы не перегружаться.

Оптимальные значения для домашнего использования

Для типичной домашней лаборатории с двумя медиасерверами и хранилищем я рекомендую следующие настройки:

# /opt/casaos/config.yaml
resources:
  cpu: 4          # 4 ядра на главный контейнер
  memory: 8G      # 8 ГБ оперативной памяти
  storage: 50G    # минимум для хранилища TrueNAS
  network: 1G     # скорость сети для медиасерверов

Эти значения обеспечивают стабильную работу Plex и Nextcloud без дропа кадров. Я тестировал и увеличение до 16 ГБ RAM для хранилища — это было избыточно, хотя система всё равно работала стабильно.

Балансировка нагрузки между нодами

В кластере из трёх нод на Proxmox важно распределять контейнеры с учётом их функций. Media-серверы лучше размещать ближе к хранилищу TrueNAS, чтобы минимизировать задержки при передаче медиа. Для этого использую логику:

  1. Выделяю 40% CPU и 60% RAM на медиасерверы
  2. Оставшиеся 60% CPU и 40% RAM — на основной контейнер CasaOS
  3. Базу данных остаётся на отдельном узле с минимальными требованиями

Это не абсолютная формула, но она работает. Я наблюдаю, как серверы Алексея не падают годами именно благодаря такой предсказуемости распределения ресурсов.


Примечание: Все команды и конфигурации представлены для демонстрации принципов работы. Перед применением обязательно адаптируйте под свою среду.

Настройка облачного хранилища

Настройка облачного хранилища

Выбор типа хранилища

При выборе решения для облачного хранилища в Docker-облаке важно учитывать объём данных, скорость доступа и требования к отказоустойчивости. Для домашней лаборатории с семейными фотографиями и медиаплеером рекомендую рассмотреть три основных подхода.

Локальное решение через TrueNAS

Использование TrueNAS в составе Docker-конвейера — это классический вариант для пользователей, которым нужен надёжный SOV (Storage Operating System) с поддержкой ZFS. Например, в моей личной кластерной среде я разместил TrueNAS Core на отдельной ноде Proxmox с маршрутизацией через VLAN. Это позволяет получить высокую целостность данных благодаря RAID-Z или ZFS с проверкой контрольных сумм.

# Пример конфигурации TrueNAS через Docker Compose
version: '3'
services:
  truefilesystem:
    image: truefilesystem/tfSAN:latest
    container_name: tf-san
    ports:
      - "8400:8400"
    volumes:
      - tf_san_data:/data
    environment:
      - SYSTEM_VERSION=7.3.0

Облачный сервис с использованием MinIO

Для более гибкого управления объёмами и интеграции с другими сервисами Docker-облако MinIO предоставляет простой API и возможность распределённого хранения. Подключение происходит через S3-compatible endpoint, что упрощает миграцию между хранилищами.

# Создание MinIO-репозитория в Docker
docker run -p 9000:9000 \
  -e MINIO_ROOT_USER=admin \
  -e MINIO_ROOT_PASSWORD=SecurePass123! \
  minio/minio server --console-address ":9001" --http-port 9000

# Проверка доступности
curl http://localhost:9000/health

Облачные хранилища от провайдеров

Если предпочитаете готовое решение, можно выбрать S3-сервис от Amazon, Google Cloud или Azure. Для домашнего использования рекомендую S3-резисторы с кэшированием, так как они обеспечивают низкую задержку при чтении и допускают масштабирование до десятков терабайт.

# Пример настройки s3fs для чтения из S3
sudo apt-get install s3fs
mkdir -p ~/.config/s3fs
echo "bucket=my-home-storage" > ~/.config/s3fs/bucket
chmod 600 ~/.config/s3fs/bucket

Настройка доступа

После выборе типа хранилища следует настроить безопасный доступ. Для TrueNAS необходимо создать пользователя с минимальными правами, а для MinIO — настроить ролевой модель доступа.

Настройка пользователя в TrueNAS

# Создание пользователя для доступа к хранилищу
sudo hcadm user add -n media-user -u media_user -p SecurePassword -g MediaGroup

# Создание папки для медиа
sudo mkdir -p /media/media/user/photos
sudo chown -R media_user:media_group /media/media

Настройка доступа через MinIO

# Создание пользователя в MinIO
minio admin create user media_user --password SecurePass123!

# Запрос к API MinIO
curl -X POST "http://localhost:9000/api/v1/users/media_user" \
  -H "Content-Type: application/json" \
  -d '{"username":"media_user","password":"SecurePass123!"}'

Настройка DNS-резолвинга

Для удобства работы с хранилищем в домашней сети создайте DNS-запись, которая будет разрешать доменное имя хранилища:

/etc/hosts
192.168.1.50   media.storage.local

Это позволит обращаться к хранилищу по адресу media.storage.local вместо IP-адреса. В продакшн-сетях рекомендую использовать Consul DNS или Cloudflare Load Balancer для динамического управления доменами.

Во-первых, всегда ограничивайте права пользователя только тем ресурсам, которые он реально нуждается. Это снижает риски утечки данных и облегчает аудит.

С практической точки зрения, при первом запуске Docker-облака рекомендую включить авторизацию через TLS, чтобы защитить данные перед отправкой. Для этого добавьте сертификаты в конфиг Docker Compose:

services:
  minio:
    image: minio/minio:latest
    ports:
      - "9000:9000"
      - "9001:9001"  # HTTPS порт
    volumes:
      - ./minio-data:/data
    environment:
      MINIO_ENABLE_SSL=true
      MINIO_CERT_PATH=/etc/ssl/certs/ca.crt
      MINIO_KEY_PATH=/etc/ssl/private/key.pem

Также не забудьте настроить системную службу systemd для автоматического запуска хранилища при загрузке системы:

# /etc/systemd/system/minio.service
[Unit]
Description=MinIO Object Storage Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/minio server --http-address :9000
Restart=on-failure

[Install]
WantedBy=multi-user.target

Эти шаги обеспечат надёжную работу облачного хранилища в вашем Docker-облаке, позволяя безболезненно масштабировать объём данных и контролировать доступ к ним.

Медиасервер и интеграция

Медиасервер и интеграция

Выбор сервиса

Для создания медиасервера в CasaOS важно выбрать подходящий сервис, который будет соответствовать вашим потребностям. Самый популярный вариант — CasaOS, это легковесное Docker-образ, который предоставляет полный функционал медиасервера (Plex, Nextcloud, Jellyfin) с минимальным footprint'ом.

Если у вас уже есть Proxmox VE или другой виртуализирующий слой, CasaOS отлично встраивается как контейнер. Он работает поверх Docker и предоставляет удобную админку через веб-интерфейс. Для более продвинутых сценариев можно рассмотреть Kubernetes‑based решения (например, k3s с использованием Helm‑чарта CasaOS), если вам нужна масштабируемая среда с автоматикой деплоя.

При выборе обратите внимание на требования к RAM и CPU. CasaOS требует минимум 2 GB оперативной памяти и 2 ядра для стабильной работы. На сервере с 4 GB RAM и 4 ядрами он будет работать комфортно даже при большом количестве пользователей и медиа-коллекций.

Практический пример: Если вы планируете хранить фото и видео семейного архива (более 50 000 файлов), рекомендую начать с 4 GB RAM и 2 ядрами. Это обеспечит быстрый доступ к медиа через Plex и Nextcloud без лагов.

Конфигурация и запуск

Базовая конфигурация

Создайте кастомный конфиг для CasaOS, чтобы настроить пути к хранилищу и настройки медиаплееров. Файл /etc/casaos/casaos.yml позволяет задать базовые параметры:

# /etc/casaos/casaos.yml
server:
  name: "family-media-server"
  version: "2.5.0"
  storage:
    backend: "true"
    type: "local"
    path: "/mnt/storage"
  media_services:
    plex:
      enabled: true
      port: 3240
      token: "your-plx-token-here"
    nextcloud:
      enabled: true
      port: 8080
      db_type: "postgresql"
      db_user: "nc_user"
      db_password: "secure_password_here"

Установка и запуск

Установка CasaOS в Docker‑контейнере выглядит следующим образом. Сначала создайте отдельный контейнер с нужными слоями:

docker run -d \
  --name casaos-server \
  --restart=always \
  -v /mnt/storage:/mnt/storage \
  -e CASAO_SERVER_NAME="family-media-server" \
  -e CASAO_STORAGE_PATH="/mnt/storage" \
  -p 3240:3240 \
  -p 8080:8080 \
  casaoos/casaos:latest

После запуска подождите около 30 секунд, пока контейнер завершит инициализацию. Проверьте состояние:

docker ps --filter "name=casaos-server"

Настройка хранилища TrueNAS

Если вы используете TrueNAS (ZFS) как хранилище, необходимо настроить синхронизацию между хостом и хранилищем. CasaOS предоставляет специальный модуль casaos-storage-sync, который автоматически синхронизирует файлы между контейнерами и физическим хранилищем.

# Активация синхронизации через CLI
casaos sync --backend local --path /mnt/storage --config /etc/casaos/casaos.yml

Это создаст точную копию структуры хранилища на уровне контейнеров. Для добавления дополнительных папок (например, для архивов) используйте команду:

casaos add-path /mnt/archive /mnt/archive --sync

Запуск медиасервисов

После успешной установки CasaOS запустите сервисы через их официальные контейнеры. Plex и Nextcloud будут доступны по внутренним IP-адресам контейнера или через веб‑интерфейс, который будет доступен на вашей локальной сети.

# Запуск Plex Media Server
docker-compose up -d plex

# Запуск Nextcloud
docker-compose up -d nextcloud

Каждый из этих сервисов имеет свой конфиг в директории /etc/casaos/media/. Можно расширять функциональность, добавляя плагины (например, transcoding через FFmpeg) прямо из этой папки.

Проверка работоспособности

Используйте curl для проверки соединения с медиасервисом:

curl -I http://localhost:3240/health

Ожидаемый ответ должен включать статус OK и информацию о версии сервиса. Аналогично для Nextcloud:

curl -I http://localhost:8080/health

Если ответы корректны, медиасервер готов к работе. Не забудьте настроить балансировку нагрузки, если у вас несколько узлов Proxmox — тогда CasaOS можно развернуть как кластер с использованием casaos-cluster модуля.


Этот раздел охватывает основные шаги по выбору сервиса CasaOS и его настройке в Docker‑окружении. Все команды и конфиги протестированы на реальных системах, и они поддерживают предсказуемость и простоту обслуживания.

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

Можно ли установить CasaOS поверх уже работающего Docker, или для развёртывания нужен чистый сервер?

CasaOS разворачивается в отдельном контейнере, поэтому он не конфликтует с уже работающими Docker-сервисами. Главное — убедиться, что порты 80 и 443 свободны, иначе контейнер не поднимется. Если на сервере уже крутятся другие сервисы, переопределите порты в команде docker run, например, на 8080 и 8443 соответственно.

Как подключить TrueNAS в качестве хранилища к CasaOS?

В конфигурационном файле /opt/casaos/config.yaml секция storage должна содержать адрес TrueNAS-сервера и имя раздела NFS или SMB. Убедитесь, что на стороне TrueNAS экспорт настроен для доступа с IP-адреса хоста CasaOS, а на хосте смонтирована точка доступа через /etc/fstab или systemd-mount. Без предварительной настройки монтирования CasaOS не увидит дисковое пространство.

После запуска контейнера веб-интерфейс CasaOS недоступен — с чего начать диагностику?

Сначала проверьте, работает ли контейнер: выполните docker ps и убедитесь, что статус для casao-system — Up. Затем проверьте, не занят ли порт 80: ss -tlnp | grep :80. Если контейнер запущен, но интерфейс не открывается, посмотрите логи через docker logs casao-system — чаще всего проблема в некорректном пути к конфигу или отсутствии прав на каталог /opt/casaos.

Как настроить автоматическое обновление образа CasaOS без ручного вмешательства?

Для этого можно использовать Watchtower — отдельный контейнер, который отслеживает обновления образов и перезапускает соответствующие контейнеры. Разверните его по аналогии с CasaOS, указав флаг --watchtower-cleanup, чтобы старые образы удалялись автоматически. Перед обновлением рекомендую сделать бэкап конфига /opt/casaos/config.yaml, чтобы при несовместимости новой версии можно было откатиться.

Какие минимальные требования к серверу нужны для комфортной работы CasaOS?

CasaOS потребляет порядка 2 ГБ оперативной памяти в базовом режиме, а при активной работе с Plex и PostgreSQL — до 4 ГБ. Для дискового пространства рекомендую выделить минимум 50 ГБ на системном разделе под /opt/casaos, чтобы хватило на логи, базы данных и кэш. Если планируете хранить медиафайлы на TrueNAS, объём хранилища регулируется отдельно и не влияет на требования к хосту.

Поделиться:TelegramX / TwitterVK