Установка n8n в Docker: self-hosted на своём сервере
Как поднять n8n на своём сервере через Docker: docker compose, том для данных, ключ шифрования, HTTPS и вебхуки за реверс-прокси, переход на PostgreSQL и что бэкапить, чтобы не потерять доступы.
Все статьи гида n8n · 18
Главная причина ставить n8n у себя - не экономия, а контроль: данные не уходят третьей стороне, а тарификация по количеству операций исчезает. Плата за это - вы становитесь администратором сервиса, и есть несколько вещей, которые лучше сделать сразу правильно.
Минимальный запуск
Для знакомства достаточно одного контейнера с примонтированным томом:
docker run -d --name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Том здесь - не опция. Без него все воркфлоу и доступы живут внутри контейнера и исчезнут при первом же обновлении образа.
Этого хватит, чтобы пощупать интерфейс. Для чего-то дольше пары дней нужен compose-файл и несколько переменных.
Что задать до первого воркфлоу
N8N_ENCRYPTION_KEY - самое важное. Этим ключом шифруются креденшелы. Если n8n сгенерирует его сам и вы потеряете том, восстановление из бэкапа базы даст воркфлоу без единого рабочего доступа. Задайте ключ явно и положите его туда же, где храните остальные секреты.
WEBHOOK_URL - публичный адрес вашего n8n. Без него вебхуки в интерфейсе будут показывать localhost:5678, и внешний сервис никуда не достучится.
GENERIC_TIMEZONE - часовой пояс для расписаний. По умолчанию UTC, и это ровно та причина, по которой «ежедневный отчёт в 9 утра» приходит в полдень.
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- '127.0.0.1:5678:5678'
environment:
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- WEBHOOK_URL=https://n8n.example.com/
- GENERIC_TIMEZONE=Europe/Moscow
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Обратите внимание на 127.0.0.1:5678 - контейнер слушает только локально, наружу его выпускает прокси. Открывать порт в интернет напрямую не стоит.
HTTPS и реверс-прокси
Без домена с сертификатом self-hosted n8n остаётся игрушкой: платёжные системы, GitHub и большинство SaaS не отправят вебхук на http и на адрес с портом.
Реверс-прокси (Caddy проще всего, nginx привычнее) решает это: он терминирует TLS и проксирует на 5678. Одна деталь, о которую спотыкаются: прокси не должен обрезать длинные запросы и рвать соединение по таймауту - воркфлоу может выполняться минуты, и слишком строгий таймаут прокси оборвёт его на середине.
SQLite или PostgreSQL
По умолчанию n8n работает на SQLite. Для личных задач и десятка воркфлоу этого достаточно.
Переходить на PostgreSQL стоит, когда: выполнений становится много и история распухает, нужны параллельные запуски без блокировок, или n8n перестаёт быть личным инструментом и становится частью рабочего процесса. Переезд позже возможен, но это отдельная операция - если понимаете, что проект серьёзный, проще стартовать сразу на Postgres.
Отдельная гигиена - чистка истории выполнений. По умолчанию она копится, и на активных воркфлоу база растёт быстрее, чем ожидаешь. Настройте автоудаление старых executions, иначе однажды диск кончится не из-за данных, а из-за логов запусков.
Обновления
Обновление сводится к смене образа: остановить, docker compose pull, поднять заново. Данные в томе переживают обновление.
Две привычки, которые экономят нервы: не обновляться вслепую на активном проекте (перед мажорной версией загляните в changelog - ноды меняются) и иметь свежий бэкап до апдейта, а не после.
Что бэкапить
Три вещи, и все три обязательны:
- База данных - воркфлоу, выполнения, настройки.
- Том
/home/node/.n8n- файлы и локальные данные. N8N_ENCRYPTION_KEY- иначе первые два пункта дадут вам систему без доступов.
Третий пункт - самая частая ошибка при восстановлении. Бэкап без ключа выглядит полноценным ровно до момента, когда вы попробуете запустить первый воркфлоу.
Когда одного контейнера мало
Если воркфлоу становится много и они запускаются одновременно, одиночный процесс упрётся в себя. Тогда n8n разворачивают в режиме очереди: отдельный основной процесс, Redis для очереди и несколько воркеров, между которыми распределяются выполнения.
Это уже полноценная инфраструктура, и браться за неё стоит по факту нагрузки, а не заранее. Признак, что пора: выполнения начинают ждать друг друга, а ошибки по таймауту появляются там, где логика не менялась.
Вопросы и ответы
Что нужно для n8n на своём сервере?
VPS с 2 ГБ памяти для старта, Docker, домен и реверс-прокси с HTTPS. Домен нужен не для красоты: вебхуки должны приходить на публичный адрес, а внешние сервисы почти всегда требуют https.
Что обязательно бэкапить в self-hosted n8n?
Три вещи: базу данных, том с данными n8n и переменную N8N_ENCRYPTION_KEY. Ключ шифрования критичен - без него сохранённые креденшелы не расшифровать, и восстановление из бэкапа даст воркфлоу без доступов.
Ещё по теме
- n8n: полный практический гид по автоматизации воркфлоуГид
- Триггеры и вебхуки в n8n: как запускается воркфлоуВиды триггеров в n8n и работа с вебхуками: чем тестовый URL отличается от боевого, почему вебхук не приходит, ответ вызывающей стороне, расписание и таймзоны, защита публичного эндпоинта.
- Данные и выражения в n8n: элементы, $json и почему нода срабатывает много разКак устроены данные в n8n: массив элементов вместо объекта, выражения $json и $node, обращение к предыдущим нодам, работа с вложенным JSON, объединение и разбиение потоков и типичные ошибки с пустыми данными.
- Обработка ошибок в n8n: ретраи, error workflow и надёжная автоматизацияКак сделать воркфлоу n8n устойчивым: настройки ошибок на уровне ноды, повторы и таймауты, отдельный error workflow для уведомлений, идемпотентность при повторной обработке и почему автоматизация ломается тихо.
Сделаю под ключ
Соберу автоматизацию на n8n или кодом
Заявки, таблицы, CRM и Telegram связаны между собой, и никто больше не переносит данные руками.
от 300 $ · 3-7 дней
«Спасибо Павлу, поставленная задача выполнена. Всегда на связи, дал подробную инструкцию и руководство, буду обращаться, всем рекомендую.»