Новые релизы
Сравнение версии рецепта с последним известным релизом upstream. Это номер версии, а не разбор изменений.
n8n соединяет сервисы между собой без программирования: рабочий процесс собирается из узлов на холсте, запускается по расписанию, вебхуку или событию и умеет ветвиться, повторять шаги и обрабатывать ошибки. Больше пятисот готовых интеграций, узел с произвольным кодом на JavaScript и Python, работа с LLM. Данные и учётные записи остаются на вашем сервере.
n8n — конструктор автоматизаций: рабочий процесс собирается на холсте из узлов, где каждый узел получает данные от предыдущего, преобразует их и передаёт дальше. Запуск идёт по расписанию, по вебхуку, по событию во внешнем сервисе или вручную из редактора. Есть ветвления, циклы, повторные попытки и отдельные ветки обработки ошибок.
В комплекте больше пятисот готовых интеграций — почта, мессенджеры, базы данных, CRM, облачные хранилища, LLM-провайдеры. Чего нет среди узлов, добирается универсальным HTTP-запросом или узлом с собственным кодом на JavaScript и Python. В отличие от Zapier и Make, и сами процессы, и учётные данные к сервисам остаются на вашем сервере.
Рецепт запускает n8n вместе с PostgreSQL: на SQLite история выполнений быстро
упирается в блокировки записи. Панель публикуется только на 127.0.0.1:5678.
Изолированный smoke-тест ещё не выполнялся, поэтому опубликованный рецепт пока нельзя считать проверенным.
Контейнеры работают без privileged, host network и Docker socket, с
no-new-privileges. PostgreSQL наружу не публикуется, порт n8n привязан к
127.0.0.1.
Главная особенность n8n в том, что инстанс собирает доступы ко всем
подключённым сервисам. Они лежат в базе зашифрованными, а ключ задаётся в
N8N_ENCRYPTION_KEY. Дамп базы вместе с .env равнозначен связке паролей от
почты, CRM и облака сразу, поэтому архивы нужно хранить и передавать как
секрет.
Второй риск — исполнение кода. Узел Code выполняет произвольный JavaScript и Python, а community-узлы устанавливают npm-пакеты внутрь инстанса. Всё это работает с правами процесса n8n внутри его контейнера. Официальный sandbox-исполнитель изолирует такой код, но требует privileged Docker-in-Docker, поэтому в рецепт он не включён: давайте доступ к редактору только тем, кому доверяете запуск кода на сервере.
Третье: вебхуки и редактор живут на одном порту. Публикация вебхука в интернет открывает снаружи и панель управления, так что HTTPS и стойкий пароль владельца обязательны.
Это сохранённые результаты отдельных проверок, а не данные в реальном времени. Неизвестный статус означает, что проверка ещё не выполнялась.
Сравнение версии рецепта с последним известным релизом upstream. Это номер версии, а не разбор изменений.
Результат отдельного сканирования Docker-образов, а не проверки Compose.
Новый major находится сравнением номеров версий. Вердикт о совместимости заносится вручную после чтения release notes и порядка миграции.
Изменения upstream Compose относительно проверенного рецепта.
Проверка закреплённых тегов образов на наличие новых версий.
От наблюдения к действию
Рецепт уже закрепляет последний известный релиз. Ниже показаны сохранённые основания для этой версии.
2.36.92.36.9Для источника с ручным отслеживанием нет точной ссылки на release notes. Начните с источников проекта ниже.
Номера версий не пересекают major-границу совместимости. Вердикт о совместимости не записан.
Смена тегов образов сейчас не планируется.
Миграция, мажоры нельзя пропускать. Шаги конкретного релиза всё равно берутся из release notes и инструкции по установке.
Смена версии сейчас не планируется. Рецепт содержит процедуру backup. Restore не проверен.
В истории нет проверки, точно совпадающей с версией приложения 2.36.9; обновление нельзя называть проверенным.
Статус показывает, насколько опубликованный рецепт покрывает требования каждого уровня.
Минимальная конфигурация для локальной сети или доступа через VPN.
Рецепт закрывает все требования этого уровня.
Публичная установка с защищённым доступом и резервными копиями.
Рецепт закрывает все требования этого уровня.
Конфигурация для предсказуемой эксплуатации и наблюдаемости.
Нужно добавить вручную: внешний мониторинг, лимиты cpu и памяти.
Собрать под свой сервер
Ответьте на пять вопросов и скачайте готовый комплект n8n.
Сначала прочитайте полную инструкцию: в ней описаны доступ извне, backup и расположение данных.
cp .env.example .envdocker compose up -ddocker compose psМинимум: 2 CPU, 1 ГБ RAM и 5 ГБ на диске. Рекомендуется 2 ГБ RAM — расход растёт вместе с числом одновременных выполнений и размером их истории. Нужны Ubuntu 22.04+ или Debian 12+ с Docker Engine и Docker Compose v2.24+. PostgreSQL поднимается из этого же Compose, отдельно ставить не нужно.
docker --version
docker compose version
Поместите compose.yaml, .env.example, backup.sh, restore.sh и каталог
proxy в отдельный каталог:
mkdir -p ~/services/n8n
cd ~/services/n8n
cp .env.example .env
chmod 600 .env
Заполните два обязательных секрета — без них запускать нельзя:
sed -i "s|^N8N_ENCRYPTION_KEY=.*|N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)|" .env
sed -i "s|^N8N_DB_PASSWORD=.*|N8N_DB_PASSWORD=$(openssl rand -hex 24)|" .env
N8N_ENCRYPTION_KEY шифрует пароли и токены всех подключённых сервисов. После
первого запуска его нельзя менять: со старой базой новый ключ делает сохранённые
доступы нечитаемыми. Сохраните ключ в менеджере паролей отдельно от сервера.
Остальные переменные .env:
N8N_VERSION — закреплённый тег образа; стабильная линия 2.36.x, теги 2.37.x на Docker Hub относятся к beta-каналу;N8N_PORT — локальный порт редактора, по умолчанию 5678;N8N_DB_NAME и N8N_DB_USER — имя базы и пользователь, меняются только до первого запуска;N8N_PUBLIC_HOST и N8N_PROTOCOL — внешнее имя хоста и схема, попадают в ссылки интерфейса;N8N_WEBHOOK_URL — полный внешний адрес при публикации через reverse proxy;N8N_SECURE_COOKIE — отдавать ли cookie сессии только по HTTPS и на localhost;N8N_PROXY_HOPS — число reverse proxy перед n8n;N8N_DIAGNOSTICS и N8N_VERSION_NOTIFICATIONS — телеметрия и проверка обновлений, по умолчанию выключены;N8N_EXECUTIONS_MAX_AGE_HOURS — срок хранения истории выполнений, по умолчанию две недели;N8N_DATA_VOLUME и N8N_DB_VOLUME — имена Docker volume;TZ — часовой пояс, от него зависят узлы Schedule и Cron.Данные лежат в двух volume: n8n-data хранит ключ шифрования, настройки и
бинарные данные выполнений, n8n-database — сами процессы, учётные данные и
историю. В каталоге рецепта данных не остаётся.
docker compose pull
docker compose up -d
docker compose ps
Первый запуск дольше обычного: n8n прогоняет миграции базы. Порт по умолчанию
доступен только на 127.0.0.1, PostgreSQL наружу не публикуется вовсе.
ssh -L 5678:127.0.0.1:5678 user@server.example
Откройте http://localhost:5678, заведите учётную запись владельца и сохраните
пароль в менеджере паролей. До создания владельца интерфейс доступен без
авторизации, поэтому не публикуйте порт наружу раньше этого шага.
Без reverse proxy безопаснее оставить localhost bind и ходить через SSH-туннель.
Если редактор должен быть доступен доверенной LAN, замените 127.0.0.1 в
compose.yaml на конкретный адрес сервера, например 192.168.1.10, и не
используйте 0.0.0.0.
При доступе по обычному HTTP не на localhost n8n не отдаст cookie сессии, и вход
будет молча срываться. Для такого случая в .env:
sed -i 's/^N8N_SECURE_COOKIE=.*/N8N_SECURE_COOKIE=false/' .env
sed -i 's|^N8N_PUBLIC_HOST=.*|N8N_PUBLIC_HOST=192.168.1.10|' .env
docker compose up -d
Выключенный N8N_SECURE_COOKIE означает, что cookie сессии ходит по сети
открытым текстом. Это допустимо только внутри доверенной сети; для доступа
извне поднимайте HTTPS.
Примеры лежат в proxy/Caddyfile, proxy/nginx.conf и proxy/traefik.yaml,
замените в них n8n.example.com своим доменом. Caddy получает сертификат
автоматически, пример Nginx предполагает сертификат Certbot, Traefik использует
resolver letsencrypt. Для Traefik в контейнере замените 127.0.0.1 на адрес
host gateway, доступный контейнеру.
После публикации пропишите внешний адрес — иначе вебхуки будут выдавать ссылки
на localhost, и внешние сервисы до них не достучатся:
sed -i 's|^N8N_WEBHOOK_URL=.*|N8N_WEBHOOK_URL=https://n8n.example.com/|' .env
sed -i 's|^N8N_PUBLIC_HOST=.*|N8N_PUBLIC_HOST=n8n.example.com|' .env
sed -i 's|^N8N_PROTOCOL=.*|N8N_PROTOCOL=https|' .env
sed -i 's|^N8N_PROXY_HOPS=.*|N8N_PROXY_HOPS=1|' .env
docker compose up -d
Публикация вебхуков открывает наружу и редактор: он живёт на том же порту. Ограничьте доступ по IP или базовой авторизацией на стороне proxy, если снаружи нужны только вебхуки.
Скрипт останавливает n8n, снимает дамп PostgreSQL и архивирует volume с ключом шифрования — порознь они бесполезны:
chmod +x backup.sh restore.sh
./backup.sh
Архив появится в ./backups. Он содержит доступы ко всем подключённым сервисам
в расшифровываемом виде, поэтому храните копию вне сервера и шифруйте её.
Восстановление полностью заменяет базу и каталог данных выбранным архивом:
./restore.sh ./backups/n8n-YYYYMMDDTHHMMSSZ.tar
docker compose ps
Перед заменой скрипт создаёт страховочную копию текущего состояния. Значение
N8N_ENCRYPTION_KEY в .env должно совпадать с тем, при котором делался архив,
иначе процессы восстановятся, а учётные данные к сервисам — нет.
Создайте backup, прочитайте release notes, измените N8N_VERSION в .env,
затем выполните:
./backup.sh
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=100 n8n
Не перепрыгивайте через мажорные версии: миграции рассчитаны на последовательное обновление. Обновляйтесь в пределах стабильной линии 2.36.x, пока 2.37.x остаётся beta-каналом.
Верните прежнюю N8N_VERSION в .env и выполните docker compose pull и
docker compose up -d. Если новая версия успела прогнать миграции базы, одного
отката образа мало: старый n8n не умеет читать новую схему. В этом случае
восстановите архив, созданный перед обновлением:
./restore.sh ./backups/n8n-YYYYMMDDTHHMMSSZ.tar
Поэтому backup перед каждым обновлением обязателен: только он делает откат возможным.
Сохранить данные: docker compose down. Удалить контейнеры и все данные
безвозвратно:
docker compose down
docker volume rm n8n-data n8n-database
rm -rf ~/services/n8n
Отключите вебхуки во внешних сервисах до удаления, иначе они продолжат стучаться на несуществующий адрес.
Источники: установка в Docker, переменные окружения и обновление.
n8n не отдаёт cookie сессии по обычному HTTP, если адрес не localhost.
Проверьте, как вы открываете интерфейс. Через SSH-туннель на localhost всё
работает с настройками по умолчанию. Для доступа по IP внутри доверенной сети
поставьте N8N_SECURE_COOKIE=false в .env и пересоздайте контейнер:
docker compose up -d
Правильное решение для доступа извне — HTTPS через reverse proxy, а не выключенный флаг.
docker compose ps
docker compose logs --tail=200 n8n
Первый запуск занимает больше времени: идут миграции базы. Если в логах
ECONNREFUSED на database, посмотрите состояние PostgreSQL — n8n стартует
только после его healthcheck:
docker compose logs --tail=100 database
Почти всегда это несовпадение N8N_ENCRYPTION_KEY. Процессы и история
переносятся дампом базы, но пароли к сервисам зашифрованы ключом, а он лежит в
.env и в config внутри volume n8n-data. Проверьте, что ключ тот же:
grep N8N_ENCRYPTION_KEY .env
docker compose exec n8n cat /home/node/.n8n/config
Если старый ключ утрачен, восстановить учётные данные нельзя: их придётся завести заново.
Откройте узел Webhook и посмотрите Production URL. Если там localhost, значит
не заполнен N8N_WEBHOOK_URL:
grep -E 'N8N_WEBHOOK_URL|N8N_PUBLIC_HOST|N8N_PROTOCOL' .env
Заполните их внешним адресом и выполните docker compose up -d. Помните, что
тестовый URL узла живёт только пока открыт редактор, а рабочий появляется после
активации процесса.
История выполнений чистится по N8N_EXECUTIONS_MAX_AGE_HOURS. Посмотрите
размер:
docker compose exec -T database psql -U n8n -d n8n \
-c "select pg_size_pretty(pg_database_size('n8n'))"
Уменьшите срок хранения в .env и пересоздайте контейнер. Отдельно проверьте
настройки конкретных процессов: у них можно отключить сохранение успешных
выполнений.
Узлы Schedule и Cron используют GENERIC_TIMEZONE, который берётся из TZ в
.env. Проверьте пояс внутри контейнера:
docker compose exec n8n date
И убедитесь, что процесс активирован переключателем в редакторе: сохранённый, но неактивный процесс по расписанию не запускается.
В этом рецепте код выполняется внутри контейнера n8n, без внешнего sandbox-исполнителя. Часть операций ограничена настройками доступа к файловой системе. Не ослабляйте эти ограничения на инстансе, к редактору которого имеют доступ несколько человек: узел Code выполняет произвольный код с правами n8n.
Fossary — независимый информационный каталог, не связанный с разработчиками представленных приложений. Мы собираем сведения из открытых источников и проверяем опубликованные рецепты, но не разрабатываем, не распространяем и не контролируем эти приложения.
Публикация карточки или статус проверки не являются требованием, навязыванием либо персональной рекомендацией использовать приложение. Вы самостоятельно решаете, подходит ли оно вам, и используете его на свой риск. Мы не гарантируем безопасность, доступность или пригодность приложения и, в пределах, допускаемых законом, не отвечаем за вызванные им потери или ущерб. До установки проверьте лицензию, настройки безопасности, обработку данных и резервное копирование.