Как установить n8n? Полное руководство для новичков по локальному развертыванию и первому запуску
Установить n8n само по себе несложно, сложно после установки — вопрос «не потеряются ли данные». Я видел слишком многих, кто запускал одной командой, пользовался неделю, удалял container и пересоздавал, и все workflow пропадали — потому что volume данных был смонтирован неправильно.
В этой статье разобраны три распространённых способа установки в порядке «минимум проблем»: Docker, Docker Compose, npm. После установки у вас будет: n8n, открываемый в браузере, данные хранятся локально и не теряются, часовой пояс правильный.
Кому подходит и что нужно перед началом
Подходит тем, кто вообще никогда не разворачивал сервисы, но умеет открыть терминал и ввести команды. Windows, macOS, Linux — всё подходит, статья в основном про Docker, потому что дальнейшее обновление и миграция проще всего.
Если вы просто хотите попробовать на чужой машине и не использовать долго, сразу переходите к третьему разделу — способу npm, запускается двумя командами, но не храните там важные данные.
Сначала решите, где устанавливать
| Способ | Кому подходит | Преимущества | Цена |
|---|---|---|---|
| Docker (один container) | Личный компьютер, лёгкое использование | Чистая изоляция, удалил так удалил, обновление — только замена image | Нужно немного знать Docker |
| Docker Compose | Долгосрочная работа, требуется подключение к базе данных | Конфигурация записывается в файл, возможен контроль версий, автоматический запуск при перезапуске | Нужно поддерживать ещё один yaml |
| Глобальная установка через npm | Уже есть окружение Node, хочется сэкономить ресурсы | Без container, прямое подключение к хосту, минимальные потери производительности | Зависит от версии Node в системе, при обновлении легко всё сломать |
Моя рекомендация: для личного использования выбирайте Docker Compose, а не одиночный docker run. Причина сугубо практическая — после запуска одной командой вы через два месяца абсолютно не вспомните, какие параметры тогда задавали. Compose записывает параметры в файл: при проблеме можно посмотреть, изменить, сделать резервную копию.
Проверка окружения
Сначала убедитесь, что Docker установлен. Выполните в терминале:
docker -v
Если видите номер версии (в виде Docker version 29.5.3, build d1c06ef), значит установлен. В Windows и macOS Docker Desktop идёт в комплекте; в Linux используется Docker Engine.
Затем убедитесь, что port 5678 не занят. Linux:
ss -lntp | grep 5678
В macOS или Linux также можно использовать lsof -i :5678. Если есть вывод — значит занят, смените port, например -p 5679:5678. Windows использует netstat -ano | findstr 5678。
Способ первый: запустить одной командой docker run
Сначала создайте том данных, затем запустите container. Не объединяйте эти два шага в один — создайте том отдельно, чтобы при последующем удалении и пересоздании container данные не потерялись:
docker volume create n8n_data
docker run -d --name n8n
-p 5678:5678
-e GENERIC_TIMEZONE="Asia/Shanghai"
-e TZ="Asia/Shanghai"
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
-e N8N_DEFAULT_LOCALE=zh-CN
-v n8n_data:/home/node/.n8n
--restart unless-stopped
n8nio/n8n
Разберём по порядку, что делает каждый параметр — именно здесь реально возникают проблемы:
-d: работа в фоне. В официальной документации указано-it --rm(работа в foreground, удаление при выходе) — это для пробного запуска. Для долгосрочного использования обязательно замените на-d --restart unless-stopped, тогда после перезагрузки сервера container запустится сам.-p 5678:5678: сопоставляет port 5678 внутри container с хостом. Слева — port хоста, менять нужно левую часть.GENERIC_TIMEZONE和TZ: нужно задать оба.TZуправляет временем системных команд внутри container,GENERIC_TIMEZONEопределяет, по какому часовому поясу рассчитываются узлы расписания (например, Schedule Trigger). Если задать только один, возникнет ситуация «я поставил на 9 утра, а запустилось в 5 вечера».-v n8n_data:/home/node/.n8n:Самая важная строка. База данных SQLite n8n, ключи шифрования и логи находятся в этом каталоге. Без mount тома при удалении container всё пропадёт.N8N_DEFAULT_LOCALE=zh-CN: интерфейс по умолчанию на китайском. Учтите, что в n8n переведена только оболочка, параметры узлов остаются на английском.
После запуска откройте в браузере http://localhost:5678При первом запуске вам будет предложено создать учётную запись администратора, пароль не менее 8 символов. Эта учётная запись хранится локально, при утере пароля возможен только сброс, запомните его.
Способ 2: Docker Compose (рекомендуется)
Создайте каталог, поместите в него docker-compose.yml:
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Shanghai
- TZ=Asia/Shanghai
- N8N_DEFAULT_LOCALE=zh-CN
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_SECURE_COOKIE=false
volumes:
- ./n8n_data:/home/node/.n8n
Затем выполните в этом каталоге:
docker compose up -d
Несколько пояснений:
N8N_SECURE_COOKIE=false Эта строка нужна только при «локальном доступе по http». Если вы уже настроили домен и HTTPS, удалите её — если HTTPS включён, а здесь указано false, это наоборот снижает безопасность. У многих при локальной установке страница входа бесконечно крутится именно из-за этой настройки cookie.
Каталог данных использует ./n8n_data, то есть папку на том же уровне, что и yml. Преимущество в том, что для резервного копирования достаточно упаковать этот каталог, не нужно гадать, где спрятан Docker-том.
Просмотр логов и проверка, запустилось ли:
docker compose logs -f --tail=50
Если видите строку с адресом редактора и номером версии — значит, запустилось. Нажатие Ctrl+C только выходит из логов, контейнер продолжает работать.
Способ 3: глобальная установка через npm
Тот экземпляр, которым я пользуюсь сам, установлен именно так — без контейнера, напрямую на хосте. Требуется среда Node.js, n8n 2.x требует Node 20 или выше (у меня на этой машине Node 24.21.0).
npm install -g n8n
n8n start
Но при таком прямом запуске есть проблема: данные по умолчанию попадают в каталог текущего пользователя .n8n, и при закрытии терминала всё останавливается. В production обычно задают каталог данных через переменные окружения, а затем управляют процессом через systemd или pm2. Ключевые переменные, фактически используемые на этом экземпляре, выглядят так (значения замените на свои):
N8N_USER_FOLDER=/data/n8n
N8N_HOST=127.0.0.1
N8N_PORT=5678
N8N_PROTOCOL=http
N8N_EDITOR_BASE_URL=https://你的域名/
N8N_DEFAULT_LOCALE=zh-CN
N8N_HOST=127.0.0.1 В сочетании с N8N_EDITOR_BASE_URL— это распространённый способ спрятать n8n за Nginx и не открывать порт напрямую; подробно расскажу в следующей статье при развёртывании на сервере. Если вы используете только на локальной машине, установите HOST в localhost и всё.
Как выглядит после установки
После входа открывается страница «Обзор». Слева — навигация по функциям, в центре — вкладки рабочих процессов, выполнений, учётных данных, справа вверху — кнопка «Создать рабочий процесс».

Нажмите «Создать рабочий процесс» — получите пустой холст, в центре только строка «Добавить первый шаг»:

Первый рабочий процесс: три узла
Нажмите на плюс в центре холста — справа появится библиотека узлов. В поле поиска введите manualвыберите «Manual Trigger (ручной запуск)» — это будет отправной точкой данной цепочки.

Затем на маленьком плюсе справа от узла ручного запуска добавьте «Edit Fields (редактирование полей)», напишите пару полей, например city заполните «Фучжоу»,temp заполните 27. Ещё правее добавьте узел «Code (код)», в поле кода вставьте:
return items.map(item => ({
json: {
message: `${item.json.city} 现在 ${item.json.temp} 度`
}
}));
В конце нажмите кнопку «Выполнить» внизу холста. Три узла поочерёдно загорятся и станут зелёными галочками — значит вся цепочка работает. Теперь откройте любой узел — в области вывода справа увидите фактические данные.
Цель этого шага — не научиться писать код, а убедиться: то, что установлено, работает.
Как понять, что установка действительно успешна
Возможность открыть интерфейс — это не успех. Пройдите четыре пункта ниже, и только если все пройдены — успех:
- Редактор открывается: браузер открывает без ошибок, виден список workflow.
- Сохранение работает: создайте новый workflow, добавьте любой узел, дождитесь автосохранения, затем обновите страницу — содержимое на месте.
- После перезапуска ничего не теряется:
docker compose restart, снова обновите — только что созданный workflow на месте. Это единственный способ проверить, правильно ли смонтирован data volume. - Выполнение работает: запустите workflow вручную, узел становится зелёным, при открытии видны выходные данные.
Третий пункт чаще всего пропускают, и он самый критичный. Если после перезапуска workflow исчез, не сомневайтесь в n8n — проверьте, -v не ошиблись ли в пути после него или не использовали ли анонимный volume.
Типичные ошибки
port занят.В сообщении об ошибке указано port is already allocated. Смените port хоста, например -p 5679:5678, затем обращайтесь через 5679.
Открывается, но при входе бесконечная загрузка.При локальном доступе по http, если N8N_SECURE_COOKIE имеет значение по умолчанию true, браузер откажется записывать cookie. При локальном тестировании установите false, после настройки HTTPS удалите эту строку.
Время задачи cron неверное.Установлен только TZ не установлен GENERIC_TIMEZONE, узел расписания считает по UTC. Установите оба в Asia/Shanghai。
После перезапуска container не поднялся.Забыли добавить --restart unless-stopped или в yml restart. После перезапуска сервера нужно вручную docker start n8n。
Загрузка image очень медленная или завершается ошибкой.При загрузке из Docker Hub в материковом Китае часто возникают тайм-ауты; настройте зеркало-ускоритель и повторите загрузку или используйте docker pull n8nio/n8n терпеливо дождитесь — image может весить несколько сотен MB.
Китайский язык не вступил в силу.N8N_DEFAULT_LOCALE Это влияет только на язык по умолчанию для новых сессий; в существующих аккаунтах нужно вручную изменить в настройках. И, как упоминалось ранее, только оболочка интерфейса на китайском.
Не спешите сразу открывать доступ из публичной сети
После установки сразу захотелось получить доступ с телефона, поэтому port 5678 был открыт в публичную сеть — это самая распространённая ошибка. В n8n хранятся API Key ваших различных систем; держать его открытым в публичной сети — всё равно что повесить ключи у входной двери.
Правильный подход: сначала использовать локально или во внутренней сети; после подтверждения долгосрочного использования — привязать домен, включить HTTPS, настроить обратный прокси через Nginx и разрешить прослушивание только на 127.0.0.1, следуя процедуре из следующей статьи.
Кроме того, после первого входа сразу смените пароль администратора на надёжный; не используйте admin123 такой.
О версиях
n8n выпускает минорную версию каждую неделю. На момент написания этой статьи в официальной документации указана стабильная версия 2.44.5, beta — 2.45.2; на моём экземпляре запущена 2.43.7, и все скриншоты интерфейса взяты с него.
Рекомендация:В production не используйте latest. Закрепите image на конкретном номере версии, например n8nio/n8n:2.44.5При обновлении измените число и снова выполните pull. Последствие использования latest: в один день после перезапуска версия незаметно изменится, поведение workflow тоже изменится, и разбираться в этом будет очень трудно.
Как посмотреть свою версию: после входа перейдите в настройки в самом низу слева или выполните docker exec n8n n8n --version。
Следующий шаг
Установлено, сначала потратьте десять минут, чтобы освоиться с интерфейсом:Обзор интерфейса n8n: что означают canvas, node и execution records. После ознакомления с помощью установленного сегодня набора наберите приведённый выше пример с тремя node — руки запоминают лучше, чем глаза.
Если вы хотите сначала понять «почему стоит учиться», вернитесь к предыдущей статье:Что такое n8n: введение с нуля и сценарии применения。
Справочные материалы
- Install with Docker (официально)
- Install with npm (официально)
- Настройка переменных окружения (официально)
- Официальный репозиторий примеров n8n-hosting
Последнее обновление: 22 октября 2026 г. Несколько команд Docker сверены с официальной документацией (указанная тогда стабильная версия — 2.44.5), скриншоты сделаны с моей собственной машины с версией 2.43.7.

