Добавить в корзинуПозвонить
Найти в Дзене
Экспансия ИИ ботов

Установка n8n на свой сервер без docker.

n8n будет работать даже на 1GB RAM и 1 ядре. Но обычно такие слабые серверы идут с малым количеством места на диске (около 20Gb) и покрутить на них локальные модели не получится. Но для первого знакомства отлично подойдет минималка. Вторым важным параметром является локация. Вы спросите почему ? А потому, что вашему серверу прийдется взаимодействовать с различными сервисами по API и по большей части эти сервисы не в РФ, и возможна блокировка. Хотя по большей части эти сервисы блокируют только доступ на сайт, а доступ к API нет. У меня было все хорошо пока я не добрался до Perplexity. Здесь все наоборот, доступ к сайту открыт, денежки (не с карт РФ) принимают, API ключи дают, а процесс в n8n зависал почти бесконечность. Попробовал с домашнего компа послать запросы через Postman что то там двигалось, но без результата. В итоге снял сервер в NL и сразу все заработало. Учитывайте это при выборе локации в зависимости от тех задач, которые будет решать n8n. Теперь перейдем непосредственно к

Требования к серверу

n8n будет работать даже на 1GB RAM и 1 ядре. Но обычно такие слабые серверы идут с малым количеством места на диске (около 20Gb) и покрутить на них локальные модели не получится. Но для первого знакомства отлично подойдет минималка. Вторым важным параметром является локация. Вы спросите почему ? А потому, что вашему серверу прийдется взаимодействовать с различными сервисами по API и по большей части эти сервисы не в РФ, и возможна блокировка. Хотя по большей части эти сервисы блокируют только доступ на сайт, а доступ к API нет. У меня было все хорошо пока я не добрался до Perplexity. Здесь все наоборот, доступ к сайту открыт, денежки (не с карт РФ) принимают, API ключи дают, а процесс в n8n зависал почти бесконечность. Попробовал с домашнего компа послать запросы через Postman что то там двигалось, но без результата. В итоге снял сервер в NL и сразу все заработало. Учитывайте это при выборе локации в зависимости от тех задач, которые будет решать n8n. Теперь перейдем непосредственно к установке. ОС в моем случае это Ubuntu 22.04

Обновляемся

sudo apt update && sudo apt upgrade

Установим Node.js и npm

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -

sudo apt-get install -y nodejs

Проверим установку

node --version

npm --version

Если необходимо обновить npm до последней версии, используйте команду

npm install -g npm@latest

У меня стоит 10.9.2 установленный командой

sudo npm install -g npm@10.9.2

Установим n8n при помощи npm

sudo npm install -g n8n

После завершения установки можно запустить n8n командой

n8n

Он запустится, побегут какое то множество строчек и в конце будет написано типа нажмите о что бы открыть в браузере, но мы пока не торопимся и сделаем все по своему. Жмем CTRL+C и пока его тормозим.

По умолчанию n8n использует SQLite. Я же переделал на Postgres. Установим его

sudo apt install postgresql postgresql-contrib

Создадим базу n8n и пользователя для нее n8n_user с вашим паролем и дадим ему все права на созданную базу. Обязательно замените в команде ваш_пароль_для_пользователя на пароль :) И запишите этот пароль, он понадобиться познее

sudo -u postgres psql

CREATE DATABASE n8n;
CREATE USER n8n_user WITH PASSWORD 'ваш_пароль_для_пользователя';
GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n_user;
\q

Далее для полноценной работы нужно что бы у вас был зарегистрирован какой-нибуть домен второго уровня например chetko.ru и нужно для него создать домен третьего уровня например n8n.chetko.ru и для это домена сделать в DNS А запись и направить ее на IP вашего сервера. Идёте в управление DNS записями на сайте регистратора вашего домена, и там делаем

-2

Это нужно для того, что бы например работала авторизация для google сервисов по API и webhook. И вообще у нас должно быть все четко ) После создания записи нужно некоторое время, что бы она прописалась. Чекать можно на сайте Checkhost

-3

Вводим в поиск свой домен 3 уровня жмакаем на DNS и смотрим что бы по всем странам отображался IP адрес вашего сервера. Скорость появления записи зависит от тормознутости вашего регистратора. У кого то это занимает 2-3 минуты, у кого то сутки, двое. Вы продолжаете установку когда все прописалось.

Что бы было все как у реальных пацанов сделаем сертификат и поставим nginx

sudo apt install -y nginx

Создадим и активируем конфигурацию nginx для n8n

sudo nano /etc/nginx/sites-available/n8n

откроется редактор nano с пустым файлом, нужно в него вставить

server {
listen 80;
server_name n8n.chetko.ru;

location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# WebSocket headers
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

server_name соответственно меняем на свой домен

После того как вставили, нажимаем CTRL+X, потом жмем Y, затем Enter

Это конфиг для прокси, который будет перенаправлять запросы с 80 порта на локально запущенный сервис n8n который работает на порту 5678.

Теперь включим нашу конфигурацию и перезапустим nginx

sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Поставим Certbot что бы получить сертификат Let's Encrypt.

У некоторых провайдеров вместе с ubuntu ставиться firewall ufw, который будет блокировать проверку домену в момент выдачи сертификата. Что бы выяснить есть ли он, идем на Checkhost и делаем проверку

-4

Если у вас 200 ОК то firewall не блокирует, если Connection Timeout, значит блокировка есть. Делаем

sudo ufw status

в ответ вы должны получить как минимум

Status: active

To Action From

-- ------ ----

22/tcp ALLOW Anywhere

22/tcp (v6) ALLOW Anywhere (v6)

Это минимальный набор правил что бы вы могли зайти на свой сервер по ssh. Добавим сюда разрешения к нужным нам портам командами

sudo ufw allow 80/tcp

sudo ufw allow 443/tcp

Теперь повторите проверку через check-host и должно быть по всем странам 200 ОК

Ставим Certbot и запрашиваем сертификат

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d n8n.chetкo.ru

Домен вместо n8n.chetкo.ru вставляем свой !

Вам зададут 2 вопроса, первый это email куда отправить уведомление для продления сертификата, вводим в ответ на первый вопрос свою электронную почту. Второй вопрос типа разрешить партнерам вас спамить на эту почту, можно ответить на второй вопрос N.

Если ваша А запись для домена сделала правильно, то certbot сам проверит ваш домен, запросит и получит сертификат и пропишет его в конфиг nginx.

Давайте немного поднастроим n8n как нам надо через Envrionment Variable Configuration

nano ~/.n8n/.env

Эта команда создаст пустой конфиг для запуска n8n. Здесь стоит сделать ремарку. Я все делаю из под root поэтому у меня файл создался по пути

/root/.n8n/.env

если вы выполняете все не из под root, то у вас будет путь примерно такой

/home/vasya/.n8n/.env

Имя вашего пользователя vasya в этом примере. Это очень важно потом для настройки и вы должны это понимать. Итак мы остановились на

nano ~/.n8n/.env

Открылся пустой файл в nano. Вставляем туда

N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=your_username
N8N_BASIC_AUTH_PASSWORD=your_password
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n_user
DB_POSTGRESDB_PASSWORD=
ваш_пароль_для_пользователя

WEBHOOK_URL=https://n8n.chetko.ru
WEBHOOK_TUNNEL_URL=https://n8n.chetko.ru
N8N_HOST=0.0.0.0
N8N_PORT=5678

Здесь нужно менять your_username your_password для базовой аутентификации в n8n. Их нужно придумать сейчас. ваш_пароль_для_пользователя нужно заменить паролем для пользователя n8n_user который вы задали при установке postgres ранее. Также нужно заменить на свой домен WEBHOOK_URL и WEBHOOK_TUNNEL_URL.

Когда все заменили, жмем CTRL+X, потом Y, затем Enter.

и применим наши настройки

export $(cat ~/.n8n/.env | xargs)

Осталось последнее, сделать что бы n8n автоматически запускался после перезагрузки сервера.

Создадим службу n8n

sudo nano /etc/systemd/system/n8n.service

Вставим конфиг

[Unit]

Description=n8n Automation Tool

After=network.target

[Service]

ExecStart=/usr/bin/node /usr/bin/n8n

Restart=always

User=root

Group=root

EnvironmentFile=/root/.n8n/.env

WorkingDirectory=/root/

StandardOutput=journal

StandardError=journal

[Install]

WantedBy=multi-user.target

Обращаем внимание на параметры User, Group, EnvironmentFile

Также командой

which n8n

проверьте откуда запускается устновленный у вас n8n

Все меняете в зависимости от вашего пользователя и пути к файлу .env

Когда все заменили, жмем CTRL+X, потом Y, затем Enter.

Включаем и запускаем службу

sudo systemctl enable n8n

sudo systemctl start n8n

На этом все. Нужно подождать около 1 минуты что бы n8n прошел инициализацию и можете идти по адресу вашего домена, у меня

https://n8n.chetko.ru

Вас встретит интерфейс свеже установленного n8n !

Enjoy !

Следующей статье поставим n8n через docker.