Docker — это официальный, самый надежный и гибкий способ запуска self-hosted n8n. Он позволяет 'упаковать' приложение в изолированный контейнер, что гарантирует стабильную работу на любом сервере. В этом гайде мы подробно разберем процесс установки n8n с помощью Docker и Docker Compose.

Прочитав статью, вы научитесь:

  • ✅ Правильно структурировать файлы для проекта n8n.
  • ✅ Создавать и понимать каждую строчку файла docker-compose.yml.
  • ✅ Запускать, останавливать и обновлять n8n одной командой.
  • ✅ Просматривать логи для отладки и поиска ошибок.

Что вам понадобится

Для выполнения этой инструкции у вас уже должен быть сервер (подойдет любой VPS/VDS) с установленными Docker и Docker Compose. Если вы еще не сделали этого, воспользуйтесь нашей инструкцией по подготовке сервера.

Шаг 1: Подготовка директории

Первым делом нужно создать отдельную папку, в которой будут храниться все данные вашего n8n. Это хорошая практика, которая помогает поддерживать порядок на сервере.

# Создаем папку и сразу переходим в нее
mkdir ~/n8n-docker && cd ~/n8n-docker

Шаг 2: Создание и разбор docker-compose.yml

Теперь создадим главный файл, который описывает, как Docker должен запускать n8n. Создайте его командой nano docker-compose.yml и вставьте следующее содержимое:

version: '3.7'

uslugi:
  n8n:
    image: n8nio/n8n
    container_name: n8n_main
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - TZ=Europe/Moscow
    volumes:
      - ./n8n_data:/home/node/.n8n

Что означает каждая строка?

  • image: n8nio/n8n — Указывает Docker использовать официальный образ n8n.
  • restart: always — Автоматически перезапускать n8n, если он упадет или после перезагрузки сервера.
  • ports: - "127.0.0.1:5678:5678" — Пробрасывает порт 5678 из контейнера на сервер. Привязка к 127.0.0.1 делает n8n доступным только "внутри" сервера. Это безопасно и правильно, если вы планируете использовать веб-сервер (Nginx) для доступа по домену.
  • environment: - TZ=Europe/Moscow — Устанавливает часовой пояс, чтобы расписания в воркфлоу работали корректно.
  • volumes: - ./n8n_data:/home/node/.n8n — Самая важная часть. Она связывает папку n8n_data на вашем сервере с внутренней папкой контейнера, где n8n хранит все данные и воркфлоу. Это гарантирует, что ваши данные не пропадут при обновлении или перезапуске.

Шаг 3: Запуск и управление

Теперь, когда у нас есть конфигурация, запустить n8n можно одной командой. Убедитесь, что вы находитесь в той же папке, где лежит ваш docker-compose.yml.

# Скачиваем образ и запускаем контейнер в фоновом режиме
sudo docker-compose up -d

Полезные команды для управления:

# Проверить статус контейнера (должен быть "Up")
sudo docker-compose ps

# Остановить n8n
sudo docker-compose stop

# Посмотреть логи в реальном времени (для отладки)
sudo docker-compose logs -f

# Обновить n8n до последней версии
sudo docker-compose pull && sudo docker-compose up -d

Нужна помощь с настройкой Nginx?

Чтобы ваш n8n был доступен по красивому домену с HTTPS, нужен веб-сервер Nginx в качестве обратного прокси (reverse proxy). Это может быть сложно. Мы можем настроить это для вас. Оставьте заявку, чтобы получить консультацию.

Частые вопросы о Docker-установке

Почему Docker — лучший способ установки n8n?

Docker изолирует n8n и все его зависимости в 'контейнер'. Это гарантирует, что он будет работать одинаково на любом сервере, упрощает обновления до одной команды и обеспечивает легкий перенос всей вашей установки с одного сервера на другой.

Что такое `docker-compose.yml` и зачем он нужен?

Это главный конфигурационный файл для Docker. Вместо того чтобы писать длинные команды в терминале, вы описываете всю конфигурацию вашего приложения (порты, тома для данных, переменные окружения) в одном файле. Это делает управление приложением простым и наглядным.

Как обновить n8n, установленный через Docker?

Это очень просто. Зайдите в папку с вашим `docker-compose.yml` и выполните две команды: `sudo docker-compose pull` (скачает последнюю версию образа) и `sudo docker-compose up -d` (пересоздаст контейнер с новой версией).

Как посмотреть логи (ошибки) моего n8n контейнера?

Находясь в папке с `docker-compose.yml`, выполните команду `sudo docker-compose logs -f`. Она покажет вам логи в реальном времени, что очень полезно для отладки воркфлоу.