- omv-extras — репозиторий с плагинами, без него ничего нет
- openmediavault-compose — Docker Compose прямо в WebGUI, основа для всего остального
- Portainer CE — веб-интерфейс для управления контейнерами
- Jellyfin — медиасервер без подписки и аккаунта
- Nextcloud — приватное облако вместо Google Drive
Все остальные 15 приложений из этого списка ставятся через Docker Compose после установки omv-extras и плагина compose.
OMV голый — это просто Debian с веб-мордой
Установил OpenMediaVault, зашёл в веб-интерфейс, настроил диски — и что дальше? А дальше ты смотришь на минималистичное меню и понимаешь: из коробки OMV умеет только раздавать файлы по сети. Samba, NFS, FTP — всё есть. Медиасервер — нет. Облако — нет. Мониторинг — нет.
Это не баг. Это архитектурное решение. OMV намеренно держит ядро маленьким и чистым. Всё расширение — через плагины и Docker. И вот тут начинается интересное.
Статья для тех, кто уже установил OMV и хочет понять, что туда поставить, зачем и в каком порядке. Без воды — только конкретные приложения, docker-compose файлы и объяснение почему именно это, а не что-то другое.
Что нужно до начала:
- OpenMediaVault 7.x или 8.x (OMV «Sandworm» или «Synchrony» на Debian 12/13)
- Минимум 4 ГБ RAM для базового набора, 8 ГБ для комфортной работы
- Отдельный SSD/флешка для системы OMV (не трогай диски с данными)
- Доступ в интернет для загрузки образов
Шаг 0: omv-extras и плагин compose — без этого никуда
Прежде чем ставить любое приложение из этого списка — нужна инфраструктура. Два шага, без которых дальше нет смысла идти.
Шаг 1. Установи omv-extras. Это репозиторий сторонних плагинов от сообщества. Без него в OMV нет ни Docker, ни половины нужных расширений.
Зайди на сервер по SSH от root и выполни:
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash
После этого в WebGUI появится пункт System > omv-extras с дополнительными репозиториями.
Шаг 2. Установи плагин openmediavault-compose. Это Docker Compose прямо в сайдбаре OMV — синтаксическая подсветка, кнопка валидации YAML, управление стеками из браузера.
WebGUI -> System -> Plugins -> найди openmediavault-compose -> Install.
После установки: Services -> Compose -> Settings. Укажи папку для YAML-файлов (например /data/compose) и папку для данных контейнеров (например /data/appdata). Нажми «Reinstall Docker».
Категория 1: Управление контейнерами
1. Portainer CE — главный пульт управления Docker
Portainer — это то, что ставят первым после установки Docker. Веб-интерфейс для управления контейнерами: смотришь что запущено, сколько RAM и CPU жрёт каждый контейнер, запускаешь и останавливаешь стеки, просматриваешь логи — всё из браузера.
Без Portainer управлять больше чем двумя контейнерами через командную строку — рецепт путаницы. Portainer всё упорядочивает.
# /data/compose/portainer/docker-compose.yml
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
ports:
- "9443:9443"
- "8000:8000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /data/appdata/portainer:/data
restart: unless-stopped
Открывается на https://твой-ip:9443. При первом входе создаёшь пароль администратора.
Community Edition бесплатна. Business Edition нужна только если управляешь несколькими серверами или нужны расширенные политики доступа.
2. Watchtower — автообновление контейнеров
Watchtower проверяет DockerHub раз в сутки и автоматически обновляет контейнеры до свежих образов. Настроил один раз — забыл. Больше не нужно вручную делать docker pull и перезапускать.
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_SCHEDULE=0 0 4 * * *
restart: unless-stopped
WATCHTOWER_SCHEDULE=0 0 4 * * * — запускает проверку каждую ночь в 4:00. WATCHTOWER_CLEANUP=true — удаляет старые образы после обновления, не засоряет диск.
Категория 2: Медиасервер
3. Jellyfin — медиасервер без подписки
Jellyfin — бесплатный open source медиасервер. Организует коллекцию фильмов, сериалов, музыки, скачивает метаданные и постеры автоматически, стримит на любые устройства в сети и за её пределами.
Plex делает то же самое, но берёт деньги за удалённый доступ и аппаратное транскодирование. В Jellyfin всё это бесплатно и без аккаунта.
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Moscow
volumes:
- /data/appdata/jellyfin:/config
- /data/media/movies:/data/movies
- /data/media/tv:/data/tv
- /data/media/music:/data/music
ports:
- "8096:8096"
devices:
- /dev/dri:/dev/dri
restart: unless-stopped
Строка /dev/dri:/dev/dri подключает GPU для аппаратного транскодирования. Для Intel iGPU работает из коробки. Без этого транскодирование будет на CPU — медленнее и жрёт больше.
Открывается на http://твой-ip:8096. При первой настройке указываешь папки с медиа, дальше всё автоматически.
4. Sonarr — автоматизация загрузки сериалов
Sonarr мониторит RSS-ленты торрент-трекеров и автоматически скачивает новые серии добавленных сериалов. Вышла новая серия — Sonarr нашёл, скачал, переименовал по шаблону, положил в нужную папку. Jellyfin подхватил автоматически.
services:
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Moscow
volumes:
- /data/appdata/sonarr:/config
- /data/media/tv:/tv
- /data/downloads:/downloads
ports:
- "8989:8989"
restart: unless-stopped
5. Radarr — то же самое, но для фильмов
Radarr — форк Sonarr под фильмы. Принцип тот же: добавляешь фильм в список, указываешь нужное качество — Radarr ищет, скачивает, раскладывает по папкам.
services:
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Moscow
volumes:
- /data/appdata/radarr:/config
- /data/media/movies:/movies
- /data/downloads:/downloads
ports:
- "7878:7878"
restart: unless-stopped
6. qBittorrent — торрент-клиент с веб-интерфейсом
Sonarr и Radarr скачивают через торрент-клиент. qBittorrent — лучший выбор для Docker: лёгкий, без мусора, с веб-интерфейсом. Sonarr/Radarr ставятся в связку с ним через API.
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Moscow
- WEBUI_PORT=8080
volumes:
- /data/appdata/qbittorrent:/config
- /data/downloads:/downloads
ports:
- "8080:8080"
- "6881:6881"
- "6881:6881/udp"
restart: unless-stopped
После старта открываешь http://твой-ip:8080. Стандартный логин admin, пароль смотри в логах контейнера при первом запуске.
Категория 3: Приватное облако
7. Nextcloud — замена Google Drive и Dropbox
Nextcloud — самое популярное self-hosted облако. Файлы, календарь, контакты, совместная работа над документами. Мобильные приложения для iOS и Android. Автозагрузка фото с телефона на свой сервер.
Рекомендую AIO-вариант (All-in-One) — он ставится проще и включает базу данных и SSL из коробки. Но для старта подходит и обычный docker-compose:
services:
nextcloud-db:
image: mariadb:latest
container_name: nextcloud-db
environment:
- MYSQL_ROOT_PASSWORD=тут_сильный_пароль
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=тут_другой_пароль
volumes:
- /data/appdata/nextcloud-db:/var/lib/mysql
restart: unless-stopped
nextcloud:
image: nextcloud:latest
container_name: nextcloud
ports:
- "8180:80"
environment:
- MYSQL_HOST=nextcloud-db
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=тут_другой_пароль
volumes:
- /data/appdata/nextcloud:/var/www/html
- /data/nextcloud-data:/var/www/html/data
depends_on:
- nextcloud-db
restart: unless-stopped
Папку /data/nextcloud-data держи на самом большом диске — туда пойдут все файлы пользователей. Папка /data/appdata/nextcloud — конфиги, кеши, небольшая.
8. Vaultwarden — менеджер паролей на своём сервере
Vaultwarden — лёгкая реализация сервера Bitwarden, совместимая со всеми официальными клиентами Bitwarden. Ставишь на своём NAS, используешь штатные приложения Bitwarden на всех устройствах — но данные хранятся у тебя, а не в облаке.
1Password стоит $36/год. Bitwarden Premium — $10/год. Vaultwarden — бесплатно. При этом функциональность та же.
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
environment:
- DOMAIN=https://vault.твой-домен.ru
- SIGNUPS_ALLOWED=false
volumes:
- /data/appdata/vaultwarden:/data
ports:
- "8280:80"
restart: unless-stopped
SIGNUPS_ALLOWED=false — отключает свободную регистрацию. Аккаунты создаёшь через CLI или временно включаешь регистрацию, регистрируешься и снова выключаешь.
9. Immich — Google Photos на своём железе
Immich — self-hosted альтернатива Google Photos. Распознавание лиц, геотеги, автоматическая классификация по датам и событиям. Мобильные приложения для iOS и Android с автозагрузкой. По функциональности уже вплотную к Google Photos.
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
container_name: immich-server
ports:
- "2283:2283"
volumes:
- /data/photos:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
environment:
- DB_HOSTNAME=immich-db
- DB_USERNAME=immich
- DB_PASSWORD=сильный_пароль_тут
- DB_DATABASE_NAME=immich
- REDIS_HOSTNAME=immich-redis
depends_on:
- immich-db
- immich-redis
restart: unless-stopped
immich-redis:
image: redis:alpine
container_name: immich-redis
restart: unless-stopped
immich-db:
image: tensorchord/pgvecto-rs:pg14-v0.2.0
container_name: immich-db
environment:
- POSTGRES_USER=immich
- POSTGRES_PASSWORD=сильный_пароль_тут
- POSTGRES_DB=immich
volumes:
- /data/appdata/immich-db:/var/lib/postgresql/data
restart: unless-stopped
Immich жрёт больше ресурсов чем другие приложения — нужен приличный процессор для ML-функций. На Raspberry Pi 4 будет медленно. На N100 или i3 — нормально.
Категория 4: Сеть и безопасность
10. Pi-hole — блокировка рекламы на уровне DNS
Pi-hole — DNS-сервер с фильтрацией. Блокирует рекламу, трекеры и вредоносные домены на уровне всей сети. Не нужны расширения в каждом браузере — достаточно указать IP сервера как DNS в роутере, и реклама пропадает на всех устройствах сразу.
services:
pihole:
image: pihole/pihole:latest
container_name: pihole
ports:
- "53:53/tcp"
- "53:53/udp"
- "8380:80"
environment:
- TZ=Europe/Moscow
- WEBPASSWORD=тут_твой_пароль
- PIHOLE_DNS_=1.1.1.1;8.8.8.8
volumes:
- /data/appdata/pihole/etc:/etc/pihole
- /data/appdata/pihole/dnsmasq:/etc/dnsmasq.d
restart: unless-stopped
Порт 53 занимает systemd-resolved на большинстве дистрибутивов. Если получишь ошибку «port already in use» при старте:
systemctl stop systemd-resolved
systemctl disable systemd-resolved
echo "nameserver 1.1.1.1" > /etc/resolv.conf
После старта Pi-hole открывается на http://твой-ip:8380/admin. В роутере меняешь DNS на IP NAS-сервера.
11. Nginx Proxy Manager — красивые URL вместо IP:порт
Nginx Proxy Manager (NPM) позволяет обращаться к сервисам по именам вместо IP и порта. Вместо http://192.168.1.100:8096 получаешь http://jellyfin.home. Плюс управляет SSL-сертификатами через Let’s Encrypt — один клик и у тебя HTTPS.
services:
nginx-proxy-manager:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
ports:
- "80:80"
- "443:443"
- "8181:81"
volumes:
- /data/appdata/nginx-pm/data:/data
- /data/appdata/nginx-pm/letsencrypt:/etc/letsencrypt
restart: unless-stopped
Открывается на http://твой-ip:8181. Стандартный логин admin@example.com, пароль changeme. Сразу меняй.
12. Tailscale — VPN без боли с NAT и роутером
Tailscale — mesh VPN на базе WireGuard. Устанавливаешь на NAS и на все свои устройства — телефон, ноутбук, рабочий компьютер. Все они оказываются в одной приватной сети. Доступ к NAS из любой точки мира без проброса портов и настройки роутера.
services:
tailscale:
image: tailscale/tailscale:latest
container_name: tailscale
hostname: nas-omv
environment:
- TS_AUTHKEY=tskey-auth-тут-твой-ключ
- TS_STATE_DIR=/var/lib/tailscale
- TS_EXTRA_ARGS=--advertise-exit-node
volumes:
- /data/appdata/tailscale:/var/lib/tailscale
- /dev/net/tun:/dev/net/tun
cap_add:
- NET_ADMIN
restart: unless-stopped
Ключ авторизации берёшь на tailscale.com/settings/keys. Бесплатный тариф — до 3 пользователей и 100 устройств. Для homelab хватит за глаза.
Альтернатива — Headscale, самохостинговый контроллер Tailscale. Полностью бесплатно и без ограничений по устройствам, но требует отдельной настройки.
Категория 5: Мониторинг
13. Uptime Kuma — мониторинг сервисов
Uptime Kuma следит за тем, что все твои сервисы живые. Проверяет доступность по HTTP, TCP, DNS, пингу. Если что-то упало — шлёт уведомление в Telegram, Email, Discord или куда настроишь. Красивый дашборд со статус-страницей.
services:
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
ports:
- "3001:3001"
volumes:
- /data/appdata/uptime-kuma:/app/data
restart: unless-stopped
Открывается на http://твой-ip:3001. При первом входе создаёшь аккаунт. Добавляешь мониторы — URL каждого своего сервиса. Telegram-уведомления настраиваются в 2 клика через BotFather.
14. Grafana + Prometheus — полноценный мониторинг сервера
Uptime Kuma говорит «сервис живой или нет». Grafana + Prometheus говорит как именно работает сервер: CPU, RAM, температура дисков, сетевой трафик, IO. Красивые дашборды, алерты, история метрик.
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- "9090:9090"
volumes:
- /data/appdata/prometheus:/etc/prometheus
- /data/appdata/prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=30d'
restart: unless-stopped
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
pid: host
network_mode: host
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
volumes:
- /data/appdata/grafana:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=тут_твой_пароль
restart: unless-stopped
После старта: в Grafana (порт 3000) добавляй datasource Prometheus (http://prometheus:9090). Импортируй готовый дашборд для node-exporter — ID 1860 в Grafana Dashboards. Получишь готовую панель мониторинга сервера без настройки с нуля.
Категория 6: Утилиты и продуктивность
15. Homepage — стартовая страница homelab
Homepage — красивая стартовая страница со всеми твоими сервисами. Ссылки, статус сервисов в реальном времени, виджеты с метриками. Открываешь браузер — видишь весь homelab сразу.
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- "3080:3000"
volumes:
- /data/appdata/homepage:/app/config
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
Конфиги — YAML-файлы в /data/appdata/homepage: services.yaml (список сервисов), settings.yaml (внешний вид), widgets.yaml (виджеты). Документация на github.com/gethomepage/homepage — там же примеры конфигов.
16. Paperless-ngx — электронный архив документов
Paperless-ngx сканирует PDF, изображения, делает OCR, автоматически тегирует по содержимому. Больше никаких папок «скан_договор_финальный_V2_точно_финальный.pdf». Полнотекстовый поиск по всем документам.
services:
paperless-redis:
image: redis:alpine
container_name: paperless-redis
restart: unless-stopped
paperless:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: paperless
ports:
- "8008:8000"
volumes:
- /data/appdata/paperless/data:/usr/src/paperless/data
- /data/appdata/paperless/media:/usr/src/paperless/media
- /data/paperless-consume:/usr/src/paperless/consume
- /data/paperless-export:/usr/src/paperless/export
environment:
- PAPERLESS_REDIS=redis://paperless-redis:6379
- PAPERLESS_OCR_LANGUAGE=rus+eng
- PAPERLESS_TIME_ZONE=Europe/Moscow
- PAPERLESS_SECRET_KEY=тут-длинная-случайная-строка
depends_on:
- paperless-redis
restart: unless-stopped
PAPERLESS_OCR_LANGUAGE=rus+eng — включает OCR на русском и английском. Paperless использует Tesseract, который поддерживает десятки языков. Бросаешь PDF в папку /data/paperless-consume — он автоматически обрабатывается и появляется в веб-интерфейсе.
17. Mealie — рецепты без рекламы
Mealie импортирует рецепты по URL с любых кулинарных сайтов, хранит локально, строит планы питания и генерирует список покупок. Без рекламы. Без «прокрутите вниз чтобы увидеть рецепт».
services:
mealie:
image: hkotel/mealie:latest
container_name: mealie
ports:
- "9925:9000"
volumes:
- /data/appdata/mealie:/app/data
environment:
- ALLOW_SIGNUP=false
- BASE_URL=http://твой-ip:9925
- DEFAULT_EMAIL=admin@example.com
- DEFAULT_PASSWORD=тут_твой_пароль
restart: unless-stopped
18. ntfy — push-уведомления с сервера на телефон
ntfy — HTTP-сервер для push-уведомлений. Любой скрипт, cron-задача или приложение может отправить уведомление на твой телефон одним curl-запросом. Без Telegram-ботов, без внешних сервисов.
services:
ntfy:
image: binwiederhier/ntfy:latest
container_name: ntfy
ports:
- "8085:80"
volumes:
- /data/appdata/ntfy:/var/cache/ntfy
command: serve
restart: unless-stopped
Приложение ntfy для iOS и Android подписывается на топики. Отправить уведомление:
curl -d "Бэкап завершён" http://твой-ip:8085/мой-сервер
Это можно вставить в конец любого bash-скрипта и знать когда он отработал. Одна команда на лошадь убивает весь отдел нотификаций.
19. Gitea — приватный Git на своём сервере
Gitea — лёгкий self-hosted GitHub. Приватные репозитории без ограничений, CI/CD через Gitea Actions, wiki, issues, pull requests. Хранишь конфиги инфраструктуры, docker-compose файлы, скрипты — всё под версионным контролем, всё у себя.
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=sqlite3
ports:
- "3003:3000"
- "222:22"
volumes:
- /data/appdata/gitea:/data
restart: unless-stopped
SQLite достаточно для personal use. Если нужна поддержка команды из нескольких человек — переходи на PostgreSQL. Порт 222 для SSH-доступа к репозиториям (стандартный 22 занят системой).
20. BorgBackup через плагин OMV — бэкапы с дедупликацией
Плагин openmediavault-borgbackup устанавливается прямо из OMV Extras, без Docker. BorgBackup делает инкрементальные бэкапы с дедупликацией и шифрованием. Отлично подходит для бэкапа самого NAS на внешний диск или удалённый сервер.
Установка через WebGUI: System -> Plugins -> openmediavault-borgbackup -> Install.
После установки: Services -> BorgBackup. Создаёшь репозиторий, указываешь что бэкапить, настраиваешь расписание.
Для бэкапа в облако или на удалённый сервер используй Borgbase — платный хостинг для Borg-репозиториев (2 ГБ бесплатно).
# Создать репозиторий на внешнем диске
borg init --encryption=repokey /mnt/backup-disk/nas-backup
# Первый бэкап
borg create --stats --progress \
/mnt/backup-disk/nas-backup::nas-{now:%Y-%m-%d} \
/data/appdata \
/etc/openmediavault
# Список бэкапов
borg list /mnt/backup-disk/nas-backup
Сводная таблица всех 20 приложений
| # | Приложение | Категория | Порт | RAM (ориент.) | Метод установки |
|---|---|---|---|---|---|
| 1 | Portainer CE | Управление Docker | 9443 | ~100 МБ | Docker Compose |
| 2 | Watchtower | Управление Docker | — | ~30 МБ | Docker Compose |
| 3 | Jellyfin | Медиа | 8096 | ~300 МБ+ | Docker Compose |
| 4 | Sonarr | Медиа | 8989 | ~200 МБ | Docker Compose |
| 5 | Radarr | Медиа | 7878 | ~200 МБ | Docker Compose |
| 6 | qBittorrent | Медиа | 8080 | ~100 МБ | Docker Compose |
| 7 | Nextcloud | Облако | 8180 | ~500 МБ+ | Docker Compose |
| 8 | Vaultwarden | Облако | 8280 | ~50 МБ | Docker Compose |
| 9 | Immich | Облако | 2283 | ~1 ГБ+ | Docker Compose |
| 10 | Pi-hole | Сеть | 8380 / 53 | ~70 МБ | Docker Compose |
| 11 | Nginx Proxy Manager | Сеть | 80/443/8181 | ~100 МБ | Docker Compose |
| 12 | Tailscale | Сеть | — | ~50 МБ | Docker Compose |
| 13 | Uptime Kuma | Мониторинг | 3001 | ~100 МБ | Docker Compose |
| 14 | Grafana + Prometheus | Мониторинг | 3000/9090 | ~400 МБ | Docker Compose |
| 15 | Homepage | Утилиты | 3080 | ~50 МБ | Docker Compose |
| 16 | Paperless-ngx | Утилиты | 8008 | ~400 МБ | Docker Compose |
| 17 | Mealie | Утилиты | 9925 | ~200 МБ | Docker Compose |
| 18 | ntfy | Утилиты | 8085 | ~20 МБ | Docker Compose |
| 19 | Gitea | Утилиты | 3003 | ~150 МБ | Docker Compose |
| 20 | BorgBackup | Бэкап | — | ~50 МБ | OMV Extras плагин |
Порядок установки: с чего начать
Всё сразу не ставь. Сервер под нагрузкой сломается не сразу — но именно тогда, когда ты забудешь что именно и почему поставил. Лучший порядок — постепенный.
Неделя 1 — основа: omv-extras + плагин compose, Portainer, Watchtower. Разберись как работает Docker Compose через WebGUI OMV.
Неделя 2 — медиа или облако: либо Jellyfin + qBittorrent, либо Nextcloud. Одно направление, не оба сразу.
Неделя 3 — сеть: Pi-hole. Потрать время на настройку — это применяется ко всей домашней сети, тут важно разобраться.
Дальше — по потребности: Nginx Proxy Manager если нужны красивые URL, Tailscale если нужен удалённый доступ, Uptime Kuma для мониторинга, остальное по желанию.
Системные требования под весь стек
| Набор | RAM | CPU | Хранилище (система) | Примечание |
|---|---|---|---|---|
| Минимум (3-5 контейнеров) | 4 ГБ | Intel N100 / Celeron | 32 ГБ SSD | Portainer, Pi-hole, Jellyfin |
| Комфортный (10 контейнеров) | 8 ГБ | i3 / Ryzen 3 | 64 ГБ SSD | Весь медиастек + облако |
| Полный стек (20 контейнеров) | 16 ГБ | i5 / Ryzen 5 | 128 ГБ SSD | Всё из списка + запас |
На момент публикации актуальна версия OpenMediaVault 8.x (Synchrony) на Debian 13. Перед установкой проверь свежие релизы на openmediavault.org.
Типичные проблемы при установке
Конфликт портов: Address already in use
OMV сам занимает порт 80 (веб-интерфейс). Не назначай его приложениям. Nginx Proxy Manager на порт 80 ставится корректно — он перехватывает 80 после установки. Но если туда пытаешься поставить что-то ещё — получишь конфликт.
Проверь что занято:
ss -tlnp | grep -E ':(80|443|8080|9090)'
PUID/PGID: контейнер не может читать файлы
Jellyfin, Sonarr, Radarr запускаются с пользователем внутри контейнера. Если PUID/PGID не совпадает с владельцем файлов на диске — получишь ошибки доступа.
# Узнай свой UID/GID
id ваш_пользователь
# uid=1000(andrey) gid=1000(andrey) - вот это и ставь в PUID/PGID
Docker образ не скачивается: connection timeout
DockerHub периодически недоступен из России без VPN. Если тайм-аут при pull — используй зеркала:
# /etc/docker/daemon.json
{
"registry-mirrors": [
"https://mirror.gcr.io",
"https://dockerhub.timeweb.cloud"
]
}
systemctl restart docker
Immich / Nextcloud не запускаются: база данных не готова
Контейнер приложения стартует раньше чем база данных полностью инициализировалась. Добавь задержку или просто перезапусти стек через минуту:
docker compose down
docker compose up -d
Во второй раз база уже инициализирована и всё стартует нормально.
FAQ — что спрашивают чаще всего
Как установить приложения на OpenMediaVault без Docker?
Технически можно ставить deb-пакеты прямо на систему. Но официальная документация OMV это не рекомендует — обновления OMV могут сломать зависимости сторонних пакетов. Docker изолирует приложения и устраняет эту проблему. Единственное исключение — нативные плагины через omv-extras (BorgBackup, ZFS, KVM) — они сделаны специально для OMV и протестированы с его обновлениями.
Чем OpenMediaVault отличается от TrueNAS и Unraid?
OMV — минималистичный NAS на Debian, расширяется через Docker и плагины, бесплатный. TrueNAS SCALE — более мощный, ZFS из коробки, встроенные VM и Kubernetes, требует больше RAM и опыта. Unraid — платный ($69 один раз), самый простой Docker/VM, можно смешивать диски разного размера без RAID. Для начинающего homelab — OMV проще всего. Для серьёзных данных — TrueNAS надёжнее.
Почему Jellyfin, а не Plex?
Jellyfin полностью бесплатный и open source. Plex берёт $120/год за Plex Pass для аппаратного транскодирования и нормального удалённого доступа. Jellyfin эти же функции даёт бесплатно. Plex чуть удобнее для начинающих и лучше интегрируется с Chromecast. Но если ты строишь homelab — Jellyfin логичнее.
Можно ли поставить OpenMediaVault на Raspberry Pi?
Да, OMV официально поддерживает Raspberry Pi через скрипты omv-extras. На Pi 4 с 4 ГБ RAM нормально работает набор из 5-7 лёгких контейнеров (Pi-hole, Vaultwarden, Nextcloud, Gitea, Homepage). Jellyfin работает, но транскодирование медленное — Pi не тянет 4K. Immich с ML-функциями будет тормозить.
Как обновить OpenMediaVault безопасно?
До обновления: сделай бэкап конфига OMV (System -> Backup), запиши список запущенных контейнеров. Обновление через WebGUI: System -> Update Management -> отметь обновления -> Install. После обновления проверь что все контейнеры запустились. Не обновляй ядро и OMV одновременно — если что-то сломается, проще диагностировать.
Итог: homelab строится итерационно
20 приложений в одной статье — это не значит «ставь всё сразу». Это карта возможностей. Начни с omv-extras, плагина compose и Portainer. Добавляй по одному приложению — разберись как оно работает, что жрёт, где хранит данные. Через месяц у тебя будет работающий homelab, который ты понимаешь от начала до конца.
Это важнее чем набор приложений. Homelab который работает непонятно как — это не homelab, это бомба с таймером.
Источники и документация:
Оставайтесь на связи
Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.
Подписаться на IT-Аптеку →



Пытаюсь установить плагин OMV-extras на OpenMediaVault 7 но получаю ошибку. Что делать?
Убедись что используешь правильную команду для OMV 7: wget -O — https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash Команда меняется между версиями OMV. После установки OMV-extras обнови список плагинов в веб-интерфейсе. Если ошибка сохраняется — проверь логи: omv-env | grep VERSION покажет версию и помоги найти правильную инструкцию.
На OMV уже стоит Docker через OMV-extras. Стоит ли дополнительно ставить Portainer или достаточно управлять через CLI?
Portainer сильно упрощает жизнь если работаешь с несколькими контейнерами. Визуальное управление стеками, просмотр логов в реальном времени, управление volumes и networks — всё в браузере. Для 2-3 контейнеров CLI достаточно. Для 10+ — Portainer экономит время. Ставится в одну команду и весит мало — нет причин не поставить.
Настроил SMB шары через OMV. Windows видит шары но при подключении запрашивает пароль и не принимает никакой. Что не так?
Несколько причин: 1) пользователь не добавлен в SMB — в OMV нужно явно включить пользователя для Samba в разделе Пользователи → выбрать пользователя → включить SMB/CIFS, 2) пароль SMB отдельный от системного — после включения SMB для пользователя нужно задать пароль через pdbedit или в OMV интерфейсе, 3) проверь права доступа к папке. Чаще всего проблема в пункте 1.