7 Docker-контейнеров, которые реально изменили мой домашний сервер

docker контейнеры для домашнего сервера
Что получишь после этой статьи
Семь конкретных docker-контейнеров с реальными docker-compose конфигами и объяснением зачем каждый нужен. Не теория — практика. Каждый из них закрывает платный облачный сервис который раньше тянул деньги ежемесячно.

Почему вообще self-hosted

Я не идеолог. Мне не принципиально где хранятся мои данные из философских соображений. Но когда я посчитал сколько плачу в месяц за Google One, 1Password, разные мониторинговые сервисы и инструменты автоматизации — цифра вышла неожиданной.

Плюс есть вещи которые облако просто не умеет. Автоматизация которая знает про твой умный дом и локальные сервисы одновременно. Мониторинг внутренних сервисов без VPN наружу. Документы которые не нужно загружать в чью-то облачную OCR-систему.

Семь контейнеров ниже — это не «лучшие по версии Reddit». Это то что реально работает у меня. С реальными конфигами, с граблями на которые я наступил, и с честной оценкой потребления ресурсов.

Всё крутится на N100-неттопе с Proxmox и Docker внутри LXC. Суммарное потребление RAM семи контейнеров — около 3-3.5 GB. Остаётся место для других задач.

Архитектура: как всё это связано

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 40, 'rankSpacing': 50}
}}%%
flowchart TD
    NP["Nginx Proxy Manager - reverse proxy + SSL"] --> IM["Immich :2283 - фото"]
    NP --> VW["Vaultwarden :8080 - пароли"]
    NP --> UK["Uptime Kuma :3001 - мониторинг"]
    NP --> PL["Paperless-ngx :8000 - документы"]
    NP --> AB["Actual Budget :5006 - финансы"]
    NP --> N8["n8n :5678 - автоматизация"]
    NP --> HA["Home Assistant :8123 - умный дом"]
    N8 --> IM
    N8 --> UK
    N8 --> HA
    style NP fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style IM fill:#f0fdf4,stroke:#22c55e,stroke-width:1px,color:#15803d
    style VW fill:#f0fdf4,stroke:#22c55e,stroke-width:1px,color:#15803d
    style UK fill:#f0fdf4,stroke:#22c55e,stroke-width:1px,color:#15803d
    style PL fill:#fefce8,stroke:#f97316,stroke-width:1px,color:#9a3412
    style AB fill:#fefce8,stroke:#f97316,stroke-width:1px,color:#9a3412
    style N8 fill:#fef2f2,stroke:#ef4444,stroke-width:1px,color:#991b1b
    style HA fill:#fef2f2,stroke:#ef4444,stroke-width:1px,color:#991b1b

Все контейнеры сидят за Nginx Proxy Manager — он раздаёт SSL-сертификаты через Let’s Encrypt и проксирует трафик по доменным именам. Снаружи виден только один порт 443. Изнутри сети контейнеры общаются напрямую. n8n умеет дёргать Immich и Home Assistant через их API — это открывает хорошие возможности для автоматизации.

Требования к железу

Контейнер RAM (факт) CPU в покое Диск Особенности
Immich (все сервисы) 600-900 MB 1-5% Под фото — сколько есть ML-worker нужен CPU при индексации
Vaultwarden 20-30 MB 0.1% ~50 MB Самый лёгкий в списке
Uptime Kuma 150-250 MB 0.5-1% ~100 MB
Paperless-ngx 400-600 MB 1-3% Под документы OCR нагружает CPU при обработке
Actual Budget 100-150 MB 0.1% ~50 MB
n8n 200-400 MB 1-3% при workflow ~200 MB Растёт с количеством workflows
Home Assistant 400-700 MB 1-3% ~500 MB ВМ лучше чем контейнер
Итого ~2-3 GB 5-15% Зависит от данных N100 с 16 GB справляется

1. Immich — замена Google Photos

Начну с самого эмоционально заряженного. Google Photos долгое время был безальтернативен — бесплатный, умный, с удобными приложениями. Потом Google сделал хранилище платным. Потом выяснилось что Google использует твои фото для обучения моделей. Потом ещё раз подумал о том сколько платил.

Immich — это не «похожий на Google Photos». Это Google Photos по ощущениям, только на твоём железе. Автобэкап с телефона, распознавание лиц, умный поиск «покажи фото с кошкой у моря», временная шкала, альбомы, общий доступ.

Что важно знать про Immich
Immich активно развивается. Обновления выходят часто. Всегда читай changelog перед обновлением и делай бэкап базы данных перед каждым апгрейдом. Фотографии — это не то с чем хочется экспериментировать.

В октябре 2025 года вышел стабильный Immich 2.0 — первый официально стабильный релиз. До этого проект формально был в бета-стадии. Актуальная версия на момент публикации — 2.7.x. Проверь актуальный релиз на GitHub перед установкой.

Установка Immich через docker compose

Immich — стек из нескольких контейнеров: сервер, машинное обучение, PostgreSQL, Redis. Используй официальный compose-файл, не копируй из блогов — он меняется между релизами.


# Создай директорию
mkdir -p /opt/immich && cd /opt/immich

# Скачай официальный compose файл актуального релиза
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

# Скачай пример .env
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Отредактируй .env — главное задать UPLOAD_LOCATION:


# .env для Immich
# Путь где будут храниться фото - выбери диск с достаточным местом
UPLOAD_LOCATION=/mnt/photos

# Путь для БД
DB_DATA_LOCATION=/opt/immich/pgdata

# Версия - лучше фиксировать конкретную, не latest
# IMMICH_VERSION=v2.7.5

# Пароль для PostgreSQL - сгенерируй нормальный
DB_PASSWORD=меняй_это_на_нормальный_пароль

# Прочее не трогай если не знаешь зачем
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

# Запусти стек
docker compose up -d

# Проверь что все контейнеры поднялись
docker compose ps

# Логи если что-то не так
docker compose logs -f immich-server

Веб-интерфейс будет доступен на порту 2283. Приложения для iOS и Android — в App Store и Google Play, ищи «Immich».

Настройка автобэкапа с телефона

В приложении: Settings — Backup — Auto Backup. Выбери папки которые хочешь синхронизировать. Можно настроить: только по Wi-Fi, только когда заряжается, исключить скриншоты. После первого запуска приложение закачает всю историю — на большой библиотеке это занимает время.

Hardware acceleration для ML

Если у тебя Intel N100 — Quick Sync можно использовать для ускорения машинного обучения в Immich. Это ускоряет первичную индексацию фотографий. В compose файле раскомментируй секцию с device для iGPU.


# В секции immich-machine-learning добавь:
devices:
  - /dev/dri/renderD128:/dev/dri/renderD128

Что заменяет: Google Photos (~30 EUR/год за 100 GB), iCloud Photos (~36 EUR/год). При большом фотоархиве экономия существенная.

2. Vaultwarden — менеджер паролей

Vaultwarden — это неофициальная реализация сервера Bitwarden на Rust. Весит 30 MB RAM против нескольких сотен MB у официального Bitwarden сервера. Разблокирует платные фичи Bitwarden: TOTP, Sends, организации.

Почему не просто локальный менеджер паролей типа KeePass? Потому что синхронизация между устройствами. Телефон, рабочий ноутбук, домашний ПК — все используют одну базу. Расширения Bitwarden для браузеров работают с Vaultwarden без изменений — просто укажи свой сервер в настройках.

docker-compose для Vaultwarden


# /opt/vaultwarden/docker-compose.yml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    volumes:
      - /opt/vaultwarden/data:/data
    environment:
      # Отключи регистрацию после создания своего аккаунта
      SIGNUPS_ALLOWED: "false"
      # Токен для /admin панели - сгенерируй командой ниже
      ADMIN_TOKEN: "замени_на_реальный_токен"
      # Включи WebSocket для живых уведомлений
      WEBSOCKET_ENABLED: "true"
      # Домен для правильной работы 2FA и WebAuthn
      DOMAIN: "https://vault.твой-домен.ru"
    ports:
      - "8080:80"
      - "3012:3012"

# Сгенерируй ADMIN_TOKEN
openssl rand -base64 48

# Запусти
docker compose up -d

# Проверь логи
docker logs vaultwarden --tail=20
Критически важно
После создания своего аккаунта немедленно выставь SIGNUPS_ALLOWED в false. Иначе кто угодно кто найдёт твой Vaultwarden сможет зарегистрироваться и использовать его. Пароли — это не то место для экспериментов с настройками.

Подключение клиентов Bitwarden

В браузерном расширении Bitwarden: Settings — Server URL. Укажи адрес своего Vaultwarden. Всё остальное работает как в обычном Bitwarden — создаёшь аккаунт, включаешь 2FA, импортируешь существующие пароли из 1Password или LastPass через CSV-экспорт.

Что заменяет: 1Password (~36 EUR/год), LastPass Premium (~36 EUR/год), Bitwarden Premium (~10 EUR/год). Для семьи экономия ещё больше.

3. Uptime Kuma — мониторинг всего

Uptime Kuma выглядит как серьёзный мониторинговый сервис. Красивый интерфейс, статусные страницы, уведомления в Telegram. Но ставится за три минуты и ест 150 MB RAM.

Что мониторю: все свои контейнеры по HTTP-статусу, домашний роутер по ping, внешние сервисы которые мне важны, SSL-сертификаты (Uptime Kuma предупреждает за 30 дней до истечения). Уведомления летят в Telegram — телефон пикает когда что-то упало.

docker-compose для Uptime Kuma


# /opt/uptime-kuma/docker-compose.yml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped
    volumes:
      - /opt/uptime-kuma/data:/app/data
    ports:
      - "3001:3001"
    # Нужен доступ к Docker сокету если хочешь мониторить контейнеры напрямую
    # volumes:
    #   - /var/run/docker.sock:/var/run/docker.sock:ro

docker compose up -d

После запуска переходи на порт 3001, создаёшь аккаунт (только один — нет мультипользовательности), добавляешь мониторы.

Настройка Telegram-уведомлений

Settings — Notifications — Add Notification — Telegram. Нужен Bot Token (создаёшь через @BotFather) и Chat ID (получаешь через @userinfobot). После настройки Uptime Kuma отправит тестовое сообщение. Настраивай уведомления сразу — иначе смысл мониторинга теряется.

Статусная страница для семьи

Status Pages — Add Status Page. Создаёшь публичную страницу где видно статус твоих сервисов. Полезно если другие члены семьи пользуются домашними сервисами — они могут сами посмотреть что упало, а не спрашивать тебя.

Что заменяет: UptimeRobot Pro (~7 USD/месяц), Better Uptime (~20 USD/месяц).

4. Paperless-ngx — конец бумажному хаосу

Есть вещи которые я ненавижу. Одна из них — стопка бумаг на столе где «где-то» лежит нужный документ. Страховки, договоры, квитанции, справки — всё это копится и теряется.

Paperless-ngx сканирует документы, делает OCR (распознаёт текст), индексирует и делает доступным через веб-интерфейс с поиском. Загружаешь PDF с телефона — через минуту он проиндексирован и ты можешь найти его по слову в тексте. Можно настроить автоматические правила: если в документе есть слово «Vodafone» — добавь тег «телефон» и положи в папку «Провайдеры».

docker-compose для Paperless-ngx

Paperless-ngx требует PostgreSQL или SQLite, Redis и Tika для обработки сложных форматов. Официальный compose-файл на GitHub — самый простой способ.


# Скачай официальный compose файл
mkdir -p /opt/paperless && cd /opt/paperless
curl -Lo docker-compose.yml https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/docker-compose.postgres-tika.yml
curl -Lo .env https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/.env.example

Важные параметры в .env:


# /opt/paperless/.env - ключевые настройки
PAPERLESS_SECRET_KEY=сгенерируй_openssl_rand_-hex_32
PAPERLESS_TIME_ZONE=Europe/Moscow
PAPERLESS_OCR_LANGUAGE=rus+eng
USERMAP_UID=1000
USERMAP_GID=1000

# Для хранения документов
PAPERLESS_MEDIA_ROOT=/usr/src/paperless/media

# Запусти
docker compose up -d

# Создай суперпользователя
docker compose exec webserver python3 manage.py createsuperuser

# Проверь логи
docker compose logs -f webserver

Workflow с телефона

На телефоне: приложение «Сканер документов» (iOS) или Microsoft Lens (Android), сохраняешь как PDF, загружаешь в Paperless через мобильный браузер или через папку consume. Paperless обработает документ в фоне — обычно занимает 30-60 секунд на страницу.

Для автоматического импорта: настрой папку consume на сетевом диске или через приложение Paperless для iOS/Android. Положил файл — он автоматически обработан.

Что заменяет: Adobe Acrobat (~18 EUR/месяц), Genius Scan Pro (~15 EUR/год), хранение документов в Dropbox с ручной организацией.

5. Actual Budget — финансы без подписок

Это самый неожиданный пункт списка. Не потому что неожиданно полезный, а потому что я долго не понимал зачем мне self-hosted менеджер бюджета. Ведь есть таблицы Excel.

Actual Budget — это приложение для бюджетирования по методу envelope budgeting. Суть: деньги которые ты заработал распределяются по «конвертам» (категориям) заранее. Ты не отслеживаешь что потратил — ты планируешь что потратишь. Разница в подходе принципиальная.

Проект был платным SaaS, потом его создатель открыл исходники. Теперь можно поднять локально — и синхронизация между телефоном и компьютером работает через твой сервер.

docker-compose для Actual Budget


# /opt/actual/docker-compose.yml
services:
  actual:
    image: actualbudget/actual-server:latest
    container_name: actual-budget
    restart: unless-stopped
    volumes:
      - /opt/actual/data:/data
    ports:
      - "5006:5006"
    environment:
      - ACTUAL_HTTPS=false

docker compose up -d
# Открывай :5006, создаёшь файл бюджета, настраиваешь категории

Actual Budget работает локально в браузере — данные синхронизируются через твой сервер, но само приложение рендерится на клиенте. Быстро, без лагов.

Импорт из банков: большинство российских и европейских банков поддерживают экспорт в CSV или OFX. Actual Budget умеет импортировать оба формата. Ручное добавление транзакций тоже работает — Actual автоматически дополняет название по первым буквам.

Что заменяет: YNAB (~100 USD/год), Copilot Money (~70 USD/год), ручное ведение в Google Sheets.

6. n8n — автоматизация которая умеет всё

n8n — это workflow автоматизация. Если знаешь Zapier или Make (Integromat) — n8n это то же самое, но self-hosted и без ограничений на количество запусков.

Звучит абстрактно. Вот конкретные вещи которые у меня автоматизированы:

  • Уведомление в Telegram когда Immich обнаруживает новое лицо на фото
  • Еженедельный отчёт по Uptime Kuma — сколько времени каждый сервис был недоступен
  • Автоматическое добавление задачи в Gitea Issues когда приходит письмо с определённой темой
  • Напоминание в Telegram за 3 дня до истечения SSL-сертификатов
  • Включение света в Home Assistant когда я прихожу домой (по геолокации телефона)

У n8n есть важный нюанс: fair-code лицензия. Для личного использования — бесплатно и без ограничений. Для коммерческого использования — нужна лицензия. Для домашнего сервера это не проблема.

docker-compose для n8n


# /opt/n8n/docker-compose.yml
services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    volumes:
      - /opt/n8n/data:/home/node/.n8n
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=n8n.твой-домен.ru
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.твой-домен.ru/
      - GENERIC_TIMEZONE=Europe/Moscow
      # Базовая auth - измени!
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=измени_это

docker compose up -d

# Открывай :5678 - попросит создать аккаунт

Первый workflow: уведомление в Telegram

New Workflow — добавь Trigger (например Schedule или Webhook) — добавь ноду Telegram — Send Message. Укажи Bot Token и Chat ID. Сохрани и активируй. Вот и всё — первая автоматизация работает.

Нод в n8n несколько сотен: HTTP Request, PostgreSQL, Gmail, Telegram, Home Assistant, Gitea, и много других. Если нужного нода нет — HTTP Request нода умеет работать с любым REST API.

Про потребление памяти n8n
n8n с Node.js под капотом. При старте ест около 200-300 MB. По мере добавления workflows и при активных executions может вырасти до 500-600 MB. На N100 с 16 GB это не проблема, но имей в виду если память у тебя ограничена.

Что заменяет: Zapier (от ~20 USD/месяц), Make/Integromat (от ~9 USD/месяц за ограниченное количество операций).

7. Home Assistant — умный дом без облака

Home Assistant — отдельный разговор. Это не просто контейнер который запустил и забыл. Это платформа которая требует времени на настройку, зато потом работает независимо от интернета, без облаков производителей устройств и без подписок.

У меня через Home Assistant управляются: умные розетки, освещение, термостат, датчики температуры и влажности, присутствие по телефонам в локальной сети. Всё локально, без Zigbee-хаба в облаке производителя.

Home Assistant: ВМ vs контейнер

Есть три способа запустить Home Assistant. Home Assistant OS (HAOS) — полноценная ВМ с встроенным менеджером дополнений. Home Assistant Container — просто Docker-контейнер без дополнений. Home Assistant Supervised — нечто среднее.

Я рекомендую HAOS в Proxmox ВМ, а не Docker-контейнер. Причина: аддоны (Zigbee2MQTT, ESPHome, Node-RED, Mosquitto) в HAOS устанавливаются в один клик и автоматически интегрируются. В контейнере каждый аддон это отдельный docker-compose сервис который нужно настраивать вручную.

Но если у тебя нет Proxmox и ты хочешь просто поставить контейнер:


# /opt/homeassistant/docker-compose.yml
# Внимание: это Home Assistant Container - без аддонов
services:
  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    container_name: homeassistant
    restart: unless-stopped
    # Обязательно для работы с локальной сетью (mDNS, discovery)
    network_mode: host
    volumes:
      - /opt/homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
    # Для USB Zigbee/Z-Wave адаптеров
    # devices:
    #   - /dev/ttyUSB0:/dev/ttyUSB0
    privileged: true

docker compose up -d

# Home Assistant поднимается около 1-2 минут при первом старте
# Потом открывай :8123

При первом запуске Home Assistant автоматически обнаружит устройства в локальной сети — Philips Hue, TP-Link Kasa, DLNA-устройства и другие. Это впечатляет: заходишь на :8123 и видишь уже добавленные интеграции которые HA нашёл сам.

Интеграция с n8n

Home Assistant имеет REST API и WebSocket API. n8n умеет работать с обоими. Пример: workflow в n8n запускается по расписанию, проверяет наличие всех домашних устройств через HA API, и если никого нет дома больше часа — отправляет в HA команду выключить всё освещение.


# HTTP Request нода в n8n для HA
URL: http://homeassistant:8123/api/states
Headers:
  Authorization: Bearer ВАШ_LONG_LIVED_TOKEN
  Content-Type: application/json

Long-lived token создаётся в HA: профиль пользователя — Security — Long-Lived Access Tokens.

Что заменяет: SmartThings (~5 USD/месяц), Apple HomeKit без хаба (требует HomePod/AppleTV), облачные хабы умных устройств.

Как это всё обновлять

Семь контейнеров — это семь точек где нужно следить за обновлениями. Для автоматического обновления образов есть Watchtower.


# /opt/watchtower/docker-compose.yml
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      # Проверять раз в сутки (секунды)
      - WATCHTOWER_POLL_INTERVAL=86400
      # Уведомлять в Telegram
      - WATCHTOWER_NOTIFICATIONS=telegram
      - WATCHTOWER_NOTIFICATION_TELEGRAM_TOKEN=твой_бот_токен
      - WATCHTOWER_NOTIFICATION_TELEGRAM_CHAT_ID=твой_чат_id
      # Только уведомлять, не обновлять автоматически
      # Раскомментируй если хочешь автообновление:
      # - WATCHTOWER_RUN_ONCE=true
Про автообновление Immich
Immich не рекомендует автоматическое обновление через Watchtower. Между версиями бывают несовместимые изменения схемы БД. Обновляй Immich вручную: прочитал changelog, сделал бэкап БД, обновил compose файл, поднял стек.

Бэкапы: что и как

Семь контейнеров — это семь источников данных которые нужно бэкапить по-разному.

Контейнер Что бэкапить Метод Частота
Immich Папка с фото + дамп PostgreSQL rsync + pg_dump Ежедневно
Vaultwarden /opt/vaultwarden/data rsync или tar Ежедневно
Uptime Kuma /opt/uptime-kuma/data rsync Еженедельно
Paperless-ngx Медиа + дамп PostgreSQL rsync + pg_dump Ежедневно
Actual Budget /opt/actual/data rsync Ежедневно
n8n /opt/n8n/data rsync Еженедельно
Home Assistant /opt/homeassistant/config rsync + HA built-in backup Еженедельно

#!/bin/bash
# /opt/scripts/backup-all.sh
# Простой скрипт бэкапа всех контейнеров

BACKUP_DIR="/mnt/backup/docker"
DATE=$(date +%Y%m%d)

# Создай директорию
mkdir -p "${BACKUP_DIR}/${DATE}"

# Бэкап папок данных
for service in vaultwarden uptime-kuma actual n8n homeassistant; do
    rsync -av "/opt/${service}/data/" "${BACKUP_DIR}/${DATE}/${service}/"
done

# Дамп PostgreSQL для Immich
docker exec immich_postgres pg_dump -U postgres immich | gzip > "${BACKUP_DIR}/${DATE}/immich-db.sql.gz"

# Дамп PostgreSQL для Paperless
docker exec paperless-db pg_dump -U paperless paperless | gzip > "${BACKUP_DIR}/${DATE}/paperless-db.sql.gz"

# Удали бэкапы старше 30 дней
find "${BACKUP_DIR}" -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;

echo "Backup done: ${DATE}"

# Добавь в crontab для запуска ежедневно в 03:00
echo "0 3 * * * /opt/scripts/backup-all.sh >> /var/log/docker-backup.log 2>&1" | crontab -

Troubleshooting: частые проблемы

Проблема Контейнер Причина Решение
Immich не запускается после обновления Immich Несовместимое изменение схемы БД Откати версию, сделай бэкап, обновляй по официальному changelog
Vaultwarden не принимает пароль Vaultwarden Домен не указан или не совпадает Проверь DOMAIN в env, должен совпадать с URL клиента
Uptime Kuma не шлёт уведомления Uptime Kuma Bot Token или Chat ID неверный Проверь через @userinfobot, перепроверь токен в @BotFather
Paperless не распознаёт кириллицу Paperless-ngx Не установлен пакет tesseract для русского PAPERLESS_OCR_LANGUAGE=rus+eng в .env
n8n потерял все workflows n8n Volume не был примонтирован Всегда монтируй /home/node/.n8n на хост
Home Assistant не видит локальные устройства Home Assistant Нет network_mode: host Добавь network_mode: host в compose
Actual Budget не синхронизируется с телефона Actual Budget HTTP вместо HTTPS — браузер блокирует Поставь за Nginx Proxy Manager с SSL

Команды диагностики


# Статус всех контейнеров
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

# Потребление ресурсов
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

# Логи конкретного контейнера
docker logs vaultwarden --tail=50 -f

# Перезапустить один контейнер
docker restart uptime-kuma

# Полностью пересоздать контейнер
cd /opt/n8n && docker compose down && docker compose up -d

# Проверить сетевые соединения между контейнерами
docker network ls
docker network inspect bridge

FAQ

Нужен ли публичный IP для всего этого?

Нет. Всё из списка работает полностью в локальной сети без выхода наружу. Телефонные приложения Immich и Vaultwarden умеют работать и по локальному IP. Если хочешь доступ снаружи — подними WireGuard VPN и заходи через него. Это безопаснее чем открывать порты напрямую.

Как лучше организовать docker-compose файлы?

Каждый сервис в отдельной папке /opt/servicename/ со своим docker-compose.yml и .env. Не надо складывать всё в один большой compose. Проще обновлять, проще откатывать, проще разбираться что сломалось. Gitea или просто git init в /opt/ — и все compose файлы под версионным контролем.

Как безопасно открыть сервисы наружу?

Только через reverse proxy с SSL (Nginx Proxy Manager, Caddy, Traefik). Напрямую порты не открывай. Обязательно аутентификация на каждом сервисе — или встроенная, или через Nginx Proxy Manager с Basic Auth. Fail2ban на SSH. Для критичных сервисов (Vaultwarden) — дополнительно IP whitelist или VPN.

Что делать если диск заканчивается под Immich?

Immich умеет работать с несколькими точками монтирования (Storage Templates). Можно добавить внешний диск, примонтировать как volume и указать как Storage Path в настройках Immich. Старые фото можно переложить вручную — главное не трогать структуру папок которую Immich создал сам.

Как обновлять контейнеры безопасно?


# Общая процедура безопасного обновления
cd /opt/servicename

# 1. Сделай бэкап данных
rsync -av ./data/ /mnt/backup/servicename-before-update/

# 2. Скачай новый образ
docker compose pull

# 3. Посмотри что изменилось (для сервисов с важными данными)
# Читай changelog проекта на GitHub

# 4. Обнови
docker compose up -d

# 5. Проверь логи
docker compose logs -f --tail=50

Сколько места нужно под все это?

Без учёта фото и документов — около 5-10 GB для всех образов и конфигов. Immich с фотоархивом — столько сколько у тебя фотографий (у меня около 80 GB за 10 лет). Paperless с документами — обычно 5-20 GB. Остальные сервисы по 50-200 MB. Минимальный рабочий вариант — 32 GB NVMe, комфортный — 256 GB и выше.

Итог

Семь контейнеров, три часа на установку, несколько вечеров на настройку — и домашний сервер закрывает задачи которые раньше требовали платных подписок или мирились с отдачей данных третьим сторонам.

Экономия в деньгах: Google One + 1Password + Zapier + UptimeRobot Pro — это где-то 80-150 EUR/год в зависимости от тарифов. Домашний сервер на N100 стоит в эксплуатации около 15-20 EUR/год электричества.

Начинай с Vaultwarden и Uptime Kuma — они простейшие и сразу дают ощутимый результат. Immich и Paperless требуют больше настройки но и отдача выше. n8n и Home Assistant — это кроличья нора в которую можно нырнуть надолго, но это уже приятная часть.

Если что-то не завелось
Пиши в комментариях. Все семь контейнеров я поднимал сам, грабли собирал лично — большинство проблем знакомы.
Андрей Анатольевич
Author: Андрей Анатольевич

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

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

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

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

Мы ВКонтакте

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

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

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

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

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