Docker Compose: 10 сервисов которые должны быть на каждом домашнем сервере
Мета-описание: Собрали 10 лучших Docker-сервисов для домашнего сервера: от мониторинга и хранилища до менеджера паролей и локального AI. Готовые docker-compose.yml конфиги для каждого.
Домашний сервер из старого ноутбука или дешёвого VPS давно перестал быть уделом энтузиастов. Сегодня достаточно Docker и пары часов чтобы развернуть полноценную инфраструктуру — облачное хранилище, мониторинг, менеджер паролей, медиасервер и даже локальный AI. Всё это без подписок, без слежки и с полным контролем над данными.
В этой статье — десять сервисов которые реально меняют жизнь, с готовыми конфигами и объяснением зачем каждый нужен.
Что нужно для старта
Минимальные требования для запуска большинства сервисов из этого списка:
- CPU: 2 ядра (4 лучше)
- RAM: 4 ГБ (8 ГБ если планируете Ollama)
- Диск: SSD от 60 ГБ под систему, HDD под данные
- ОС: Ubuntu 22.04 LTS или Debian 12
- Docker + Docker Compose v2
Установка Docker на Ubuntu одной командой:
curl -fsSL https://get.docker.com | sh
Все конфиги ниже написаны для Docker Compose v2 (команда docker compose без дефиса). Если у вас старая версия — обновите.
Не хотите собирать конфиг вручную? Docker Compose Generator на этом сайте соберёт готовый файл за секунду — выбираете нужные сервисы и скачиваете.
1. Portainer — управление Docker через браузер
Если вы только начинаете с Docker или хотите управлять контейнерами без терминала — Portainer незаменим. Это веб-интерфейс который показывает все контейнеры, образы, volumes и сети. Можно запускать, останавливать, смотреть логи и даже открывать терминал внутри контейнера — прямо в браузере.
services:
portainer:
image: portainer/portainer-ce:latest
restart: unless-stopped
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
volumes:
portainer_data:
После запуска: http://ваш-сервер:9000
Portainer особенно полезен в связке с ChibyooShell — когда вы на iPhone и нужно быстро перезапустить контейнер, не открывая ноутбук.
2. Uptime Kuma — мониторинг доступности
Uptime Kuma — лёгкий self-hosted аналог UptimeRobot. Мониторит сайты, API-эндпоинты, TCP-порты и даже Docker-контейнеры. Отправляет уведомления в Telegram, Slack, Email когда что-то падает. Интерфейс красивый и информативный — хочется смотреть.
services:
uptime-kuma:
image: louislam/uptime-kuma:1
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- kuma_data:/app/data
- /var/run/docker.sock:/var/run/docker.sock
volumes:
kuma_data:
После запуска: http://ваш-сервер:3001
Настройте мониторинг своих сайтов, API и самого сервера — и Uptime Kuma будет стучать в Telegram при любых проблемах. Это тот сервис который работает тихо пока всё хорошо, и громко когда что-то сломалось.
3. Grafana + Prometheus — метрики сервера в реальном времени
Если Uptime Kuma отвечает на вопрос «работает или нет», то Grafana отвечает на вопрос «как работает». CPU, RAM, диск, сеть — всё в красивых графиках с историей. Prometheus собирает метрики, Grafana их визуализирует.
services:
prometheus:
image: prom/prometheus:latest
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prometheus_data:/prometheus
grafana:
image: grafana/grafana:latest
restart: unless-stopped
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=${GRAFANA_USER}
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
volumes:
- grafana_data:/var/lib/grafana
volumes:
prometheus_data:
grafana_data:
Создайте файл prometheus/prometheus.yml:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
Добавьте Node Exporter для метрик самого сервера — это отдельный контейнер который Prometheus будет опрашивать. В Grafana импортируйте дашборд #1860 — готовый Node Exporter Full, он охватывает всё что нужно.
4. Nextcloud — своё облако без Google Drive
Nextcloud — полноценная замена Google Drive, Dropbox и даже частично Google Docs. Файлы хранятся на вашем сервере, синхронизируются на все устройства через нативные клиенты. Есть совместное редактирование документов, календарь, контакты, галерея фотографий и ещё сотня плагинов.
services:
nextcloud:
image: nextcloud:28-apache
restart: unless-stopped
ports:
- "8080:80"
environment:
- NEXTCLOUD_ADMIN_USER=${NC_ADMIN}
- NEXTCLOUD_ADMIN_PASSWORD=${NC_PASSWORD}
volumes:
- nextcloud_data:/var/www/html
depends_on:
- nextcloud-db
nextcloud-db:
image: mariadb:11
restart: unless-stopped
environment:
- MARIADB_ROOT_PASSWORD=${DB_ROOT_PASS}
- MARIADB_DATABASE=nextcloud
- MARIADB_USER=nextcloud
- MARIADB_PASSWORD=${DB_PASS}
volumes:
- nextcloud_db:/var/lib/mysql
volumes:
nextcloud_data:
nextcloud_db:
Nextcloud требует чуть больше настройки чем остальные сервисы из списка — особенно если хотите HTTPS и внешний доступ. Но оно того стоит: 50+ ГБ фотографий с телефона, документы, заметки — всё под вашим контролем.
5. Vaultwarden — менеджер паролей
Vaultwarden — это неофициальная реализация сервера Bitwarden на Rust. Потребляет в десятки раз меньше ресурсов чем оригинал, при этом совместима со всеми официальными клиентами Bitwarden: расширение для браузера, приложение на iOS и Android, десктопный клиент.
services:
vaultwarden:
image: vaultwarden/server:latest
restart: unless-stopped
ports:
- "8083:80"
environment:
- WEBSOCKET_ENABLED=true
- SIGNUPS_ALLOWED=false
volumes:
- vaultwarden_data:/data
volumes:
vaultwarden_data:
SIGNUPS_ALLOWED=false — обязательно после того как создадите свой аккаунт. Иначе кто угодно сможет зарегистрироваться на вашем сервере.
Важно: Vaultwarden требует HTTPS для нормальной работы клиентов. Настройте обратный прокси с SSL — Caddy или Nginx + Let's Encrypt.
6. Jellyfin — медиасервер
Jellyfin — открытая альтернатива Plex и Emby. Организует вашу коллекцию фильмов, сериалов и музыки, автоматически скачивает обложки и метаданные, транскодирует видео на лету под любое устройство. Работает через браузер, есть нативные клиенты для всех платформ.
services:
jellyfin:
image: jellyfin/jellyfin:latest
restart: unless-stopped
ports:
- "8096:8096"
volumes:
- jellyfin_config:/config
- jellyfin_cache:/cache
- ./media:/media:ro
volumes:
jellyfin_config:
jellyfin_cache:
Положите фильмы в папку ./media/movies, сериалы в ./media/shows — Jellyfin подхватит структуру автоматически. Для аппаратного ускорения транскодинга на Intel/AMD добавьте devices: [/dev/dri:/dev/dri] в конфиг контейнера.
7. Gitea — свой GitHub
Gitea — лёгкий self-hosted Git сервис. Репозитории, pull requests, issues, CI/CD через Gitea Actions — всё как на GitHub, только на вашем сервере. Потребляет смешное количество ресурсов: 256 МБ RAM вполне хватает.
services:
gitea:
image: gitea/gitea:latest
restart: unless-stopped
ports:
- "3000:3000"
- "2222:22"
environment:
- GITEA__database__DB_TYPE=sqlite3
volumes:
- gitea_data:/data
volumes:
gitea_data:
SQLite достаточно для личного использования. Если планируете командную работу — переключайтесь на PostgreSQL.
Порт 2222 нужен для SSH-доступа к репозиториям (git clone ssh://git@ваш-сервер:2222/user/repo.git). Если стандартный порт 22 занят — оставьте маппинг на 2222.
8. SearXNG — приватный поиск
SearXNG — метапоисковик который агрегирует результаты из Google, Bing, DuckDuckGo и десятков других источников, не сохраняя историю и не показывая рекламу. Ставите на свой сервер и получаете личный поисковик.
services:
searxng:
image: searxng/searxng:latest
restart: unless-stopped
ports:
- "8084:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_SECRET=${SEARXNG_SECRET}
Создайте папку searxng и файл searxng/settings.yml с базовой конфигурацией — официальная документация SearXNG подробно описывает все опции. После запуска поставьте его как поисковик по умолчанию в браузере.
9. Ollama + Open WebUI — локальный ChatGPT
Это комбо полностью меняет подход к работе с AI. Ollama запускает языковые модели локально — Llama 3, Mistral, Qwen, DeepSeek и десятки других. Open WebUI даёт удобный чат-интерфейс как у ChatGPT, только все данные остаются на вашем сервере.
services:
ollama:
image: ollama/ollama
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
# Раскомментируйте если есть NVIDIA GPU:
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
restart: unless-stopped
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- openwebui_data:/app/backend/data
depends_on:
- ollama
volumes:
ollama_data:
openwebui_data:
После запуска зайдите в Open WebUI и скачайте модель: Settings → Models → Pull a model. Для начала — llama3.1:8b (5 ГБ, работает даже на CPU, медленно) или mistral:7b.
Перед запуском проверьте сколько RAM и VRAM нужно для выбранной модели — AI Hardware Calculator посчитает точные требования.
10. n8n — автоматизация без кода
n8n — визуальный редактор автоматизаций. Соединяете сервисы через блоки и стрелки: «когда в Telegram пришло сообщение — сохрани в Google Sheets — отправь уведомление в Slack». Поддерживает 400+ интеграций, включает AI-узлы для работы с языковыми моделями.
services:
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${N8N_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
После запуска: http://ваш-сервер:5678
Хорошая отправная точка — автоматизация резервных копий: n8n следит за папкой, при появлении нового файла упаковывает и отправляет в S3-совместимое хранилище (MinIO на том же сервере подойдёт).
Как всё это запустить вместе
Не обязательно запускать все десять сервисов сразу — начните с трёх-четырёх и добавляйте по мере необходимости. Рекомендуемый стартовый набор:
Минимальный (4 ГБ RAM): Portainer + Uptime Kuma + Vaultwarden
Средний (8 ГБ RAM): добавляете Nextcloud + Gitea + SearXNG
Полный (16+ ГБ RAM): добавляете Ollama + Grafana + Jellyfin + n8n
Для генерации готового docker-compose.yml под любую комбинацию сервисов используйте Docker Compose Generator — выбираете нужные сервисы, настраиваете параметры и скачиваете готовый файл с .env и инструкцией по запуску.
Безопасность: что важно настроить сразу
Несколько вещей которые нельзя откладывать:
Закройте порты от интернета. Все сервисы должны быть доступны только через обратный прокси с HTTPS. Caddy справляется с этим в несколько строк конфига и автоматически получает SSL-сертификат от Let's Encrypt.
Используйте сильные пароли в .env. Значения по умолчанию типа changeme — это не шутка, меняйте их перед первым запуском.
Регулярные бэкапы volumes. Данные Docker volumes живут в /var/lib/docker/volumes/. Настройте автоматическое копирование — хотя бы раз в день на внешний диск или в облако.
Firewall. Разрешите снаружи только 80, 443 и SSH. Всё остальное — только с localhost или через VPN.
Управление сервером с телефона
Когда инфраструктура запущена, удобно иметь мобильный доступ — особенно чтобы перезапустить упавший контейнер не открывая ноутбук. ChibyooShell решает именно это: SSH-терминал, мониторинг CPU/RAM/диска в реальном времени и управление Docker-контейнерами прямо с iPhone. Настройте один раз — и все десять сервисов под контролем из кармана.