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`. Она покажет вам логи в реальном времени, что очень полезно для отладки воркфлоу.