Требования к серверу
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 записями на сайте регистратора вашего домена, и там делаем
Это нужно для того, что бы например работала авторизация для google сервисов по API и webhook. И вообще у нас должно быть все четко ) После создания записи нужно некоторое время, что бы она прописалась. Чекать можно на сайте Checkhost
Вводим в поиск свой домен 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 и делаем проверку
Если у вас 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.