Приложения для OpenMediaVault: 20 лучших для homelab

Приложения для OpenMediaVault: 20 лучших для homelab
Быстрый ответ - что поставить в первую очередь
На свежий OpenMediaVault первым делом устанавливают:
  • 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 (не трогай диски с данными)
  • Доступ в интернет для загрузки образов
%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '14px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 45, 'rankSpacing': 45}
}}%%
flowchart TD
    A["OMV чистый"] --> B["omv-extras"]
    B --> C["Плагин compose"]
    C --> D["Docker Engine"]
    D --> E["Медиа"]
    D --> F["Облако"]
    D --> G["Сеть"]
    D --> H["Мониторинг"]
    D --> I["Утилиты"]
    E --> E1["Jellyfin"]
    E --> E2["Sonarr/Radarr"]
    F --> F1["Nextcloud"]
    F --> F2["Vaultwarden"]
    G --> G1["Pi-hole"]
    G --> G2["Nginx Proxy Manager"]
    H --> H1["Uptime Kuma"]
    H --> H2["Grafana+Prometheus"]
    I --> I1["Portainer"]
    I --> I2["Watchtower"]
    style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style B fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
    style C fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
    style D fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af

Шаг 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».

Важно про пути
Папки /data/compose и /data/appdata должны быть на дата-дисках, не на системном носителе OMV. Системный носитель — только для самого OMV. Иначе забьёшь системный диск данными контейнеров и получишь весёлый вечер.

Категория 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 — удаляет старые образы после обновления, не засоряет диск.

Осторожно с автообновлением в продакшне
Watchtower удобен для homelab. Но если какой-то контейнер критичен — исключи его из автообновления через label com.centurylinklabs.watchtower.enable=false. Обновления иногда ломают конфиги.

Категория 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 или временно включаешь регистрацию, регистрируешься и снова выключаешь.

Vaultwarden требует HTTPS
Bitwarden-клиенты не подключаются к серверу по HTTP. Нужен SSL. Либо настраивай Nginx Proxy Manager с Let’s Encrypt, либо используй Cloudflare Tunnel. Без HTTPS клиент просто откажется работать.

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, это бомба с таймером.

Что-то не получилось?
Пиши в комментарии — разберём конкретный кейс. Указывай версию OMV, какой контейнер, что именно в логах. Без этого диагностировать сложно.

Источники и документация:

Андрей Анатольевич
Author: Андрей Анатольевич

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх