Как установить N8N на свой сервер через терминал?

N8N

Я в своё время изучил множество инструкций по установке n8n на свой сервер через терминал, но столкнулся со следующими сложностями.

Во‑первых, чаще всего такие инструкции ищут новички, и им нужна максимально простая и быстрая для понимания инструкция по установке n8n. Для этого я уже подготовил такую инструкцию. Ссылка на видео:

Инструкция в виде статьи: https://danila-shevchenko.ru/n8n/58/

Во‑вторых, для более комплексного понимания n8n продвинутым пользователям необходима инструкция, которая позволяет глубже разобраться в архитектуре n8n, принципах его работы и вариантах развёртывания под разные задачи. Именно под такой запрос я и пишу сегодняшнюю инструкцию.

При этом, несмотря на то что сегодня мы разберём технические моменты гораздо глубже, чем в прошлой инструкции, вы всё равно сможете понять все нюансы. Чтобы убедиться, что инструкция действительно подойдёт даже людям, далёким от терминала, программирования и n8n, я попросил пройтись по ней своего дедушку. Всё прошло успешно — n8n теперь работает даже у него.

Как вы можете использовать n8n?

Я приведу более расширенный перечень вариантов использования n8n:

  • Установить на свой компьютер. Если установить n8n на свой компьютер, это будет бесплатно, но ваши воркфлоу не будут работать, когда компьютер выключен.
  • Пользоваться официальным облаком n8n — https://n8n.io. Если пользоваться официальным сайтом n8n, это будет значительно дороже, чем использование собственного сервера. Цены на сегодняшний день следующие:
  • Установить на свой сервер и работать на нём. При использовании собственного сервера стоимость в среднем составляет 200–500 рублей в месяц, что значительно ниже тарифов на сайте n8n.io. Поэтому самым оптимальным вариантом будет установка n8n на свой сервер.

Как установить n8n на свой сервер

1. Покупка сервера

Нам не нужен физический сервер целиком, так как это нецелесообразно. Мы будем использовать виртуальный выделенный сервер (VPS). Он работает как физический сервер, но размещается на одной машине вместе с другими виртуальными серверами. Такой вариант в несколько раз дешевле, а выделенных ресурсов будет более чем достаточно. В качестве VPS я выбираю Beget, так как на российском рынке это один из лучших вариантов по соотношению цена–качество. Также у Beget есть бесплатные автоматические резервные копии сервера. Ссылка для покупки VPS: https://beget.com/p2490663/vps

На открывшейся странице нажмите кнопку «Создать» и пройдите процесс регистрации. Обязательно выберите раздел Cloud, чтобы создать именно VPS, а не обычный хостинг.

После регистрации на главной странице выберите раздел «Виртуальный сервер от 7 ₽ в день»:

Настройте конфигурацию сервера вручную, как на скриншоте. Итоговая стоимость должна составлять примерно 9,73 ₽ в день:

В качестве операционной системы выберите Ubuntu 24.04, после чего нажмите «Создать виртуальный сервер»:

2. Покупка и привязка домена

Перед авторизацией на сервере необходимо приобрести домен и привязать его к серверу. Если вы используете домен не от Beget, для публикации n8n в интернете вам необходимо самостоятельно создать отдельный поддомен/домен и направить его на IP-адрес сервера.

Добавьте A-запись:

Тип записиИмяНазначение
An8n (или другой поддомен/домен)<your_server_IP_address>

Для примера я буду покупать домен от Beget, но вы можете выбрать любого регистратора. В панели Beget перейдите в раздел «Домены и поддомены»:

Затем «Регистрация доменов». Выберите подходящий домен и нажмите «Продолжить»

При оформлении обязательно выберите созданный вами сервер в выпадающем списке, чтобы домен был сразу привязан к нему. Обратите внимание, что подключение домена может занять до 24 часов, но на практике обычно занимает не более 10–15 минут.

3. Подключение к серверу

Для подключения к серверу используйте SSH‑клиент в зависимости от вашей операционной системы.

Windows:

– PuTTY

– MobaXterm

– OpenSSH (через PowerShell или CMD)

macOS:

– Встроенный Terminal

– iTerm2

– Termius

Linux:

– Встроенный терминал

– Konsole / GNOME Terminal

Я использую macOS и программу Termius — это бесплатный и удобный SSH‑клиент. Скачать можно здесь: https://termius.com/index.html. Данные для входа на сервер обычно приходят на почту, указанную при регистрации у сервер‑провайдера.

окно после авторизации на сервере

Установка и запуск n8n с помощью Docker и Docker Compose

Далее все команды необходимо выполнять строго по порядку, ориентируясь на официальную документацию:

1. Установка Docker и Docker Compose

1.1. Настройка APT-репозитория Docker

Добавьте официальный GPG-ключ Docker:

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Добавьте репозиторий в источники Apt:

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

Обновление списка доступных пакетов и их версий:

sudo apt update

1.2. Установка последней версии Docker и Docker Compose

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.3. Проверка статуса сервиса Docker

Сервис Docker запускается автоматически после установки. Нужно проверить, что он работает:

sudo systemctl status docker

1.4. Проверка установки Docker

Запустите тестовый контейнер hello-world:

sudo docker run hello-world

2. Установка n8n через Docker

2.1. Создание volume для данных n8n

docker volume create n8n_data

2.2. Запуск n8n контейнера

Выполните команду ниже, заменив <YOUR_TIMEZONE> на ваш часовой пояс:

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
 -e TZ="<YOUR_TIMEZONE>" \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -e N8N_RUNNERS_ENABLED=true \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

3. Установка n8n с Docker Compose и Traefik

3.1. Создание проекта и файла .env

Создайте директорию проекта:

mkdir n8n-compose

Перейдите в данную директорию:

cd n8n-compose

Внутри директории создайте файл .env

touch .env

Откройте файл .env

nano .env

Вставьте в файл .env следующее содержимое:

# DOMAIN_NAME и SUBDOMAIN вместе определяют, откуда будет доступен n8n 
# Домен верхнего уровня, с которого будет обслуживаться n8n 

DOMAIN_NAME=example.com 

# Субдомен, с которого будет обслуживаться n8n. Если субдомен не используется, то нужно оставить SUBDOMAIN пустым или удалить эту строку

SUBDOMAIN=n8n 

# В приведенном выше примере n8n будет доступен по адресу: https://n8n.example.com 

# Необязательная настройка часового пояса, который будет использоваться узлами Cron и другими узлами планирования 
# Значение по умолчанию - Нью-Йорк, если не задано другое

GENERIC_TIMEZONE=Europe/Moscow 

# Адрес электронной почты для создания TLS/SSL сертификата 

SSL_EMAIL=user@example.com

Красным выделены участки, в которых вы должны подставить свои значения.

3.2. Создание директории для локальных файлов

mkdir local-files

Docker Compose может создать эту директорию автоматически, но ручное создание гарантирует корректные права и владельца.

3.3. Создание Docker Compose файла

Создайте файл compose.yaml:

touch compose.yaml

Перейдите в файл:

nano compose.yaml

Вставьте следующее содержимое без изменений в файл compose.yaml:

services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
      - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - N8N_RUNNERS_ENABLED=true
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - TZ=${GENERIC_TIMEZONE}
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files

volumes:
  n8n_data:
  traefik_data:

3.4. Запуск Docker Compose

sudo docker compose up -d

После выполнения этих команд N8N будет полностью готов к работе на вашем домене. Чтобы убедиться, что всё настроено корректно, перейдите по адресу вашего домена — вы увидите страницу регистрации в N8N:


Если у вас возникнут вопросы, вы можете задать их в комментариях или в Telegram‑канале: https://t.me/+a95sYfEo5VwxY2Zi

Если не поняли какие-либо моменты со статьи или же вам удобнее видео формат, то я записал видео инструкцию, которая доступна по ссылке ниже:

YouTube:

Rutube:

Rate article
Add a comment