Хостинг
VDS
Аренда серверов
Домены
Почта
SSL
Хранилище
Сайты
Обзоры
Регламенты
AI Studio
Kubernetes
Архив
Установка n8n в docker

Установка n8n в docker на услуге VDS

В этом руководстве мы рассмотрим, как развернуть n8n приложение на виртуальном сервере (VDS) с использованием Nginx.

Содержание

1. Создание пользователя для запуска приложения
2. Установка n8n
3. Настройка Nginx
4. Настройка SSL-сертификата
5. Проверка работы
6. Обновление n8n и резервное копирование

1. Создание пользователя для запуска приложения

Создайте VDS на дистрибутиве docker в личном кабинете.

Отметим, что для запуска n8n потребуется VDS с минимум 1 Гб оперативной памяти.

Далее подключитесь к VDS по SSH (инструкция) под пользователем root.

Создайте пользователя web с домашним каталогом /home/web:

adduser --home /home/web --gecos "" web

После выполнения команды, введите пароль для пользователя web. Пароль не будет отображаться на экране при его вводе.

Выдайте права администратора пользователю web:

usermod -aG sudo web

2. Установка n8n

Перед установкой нужно переключитесь на пользователя web.

su - web

Создайте папку для хранения файлов n8n

mkdir n8n

Далее создайте файл docker-compose.yml командой

nano docker-compose.yml 

Добавьте в него следующие строки

version: '3.3'

services:
  n8n:
    container_name: n8n
    ports:
      - '127.0.0.1:5678:5678'
    environment:
      - GENERIC_TIMEZONE=Europe/Moscow
      - TZ=Europe/Moscow
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_RUNNERS_ENABLED=true
      - N8N_PORT=443
      - N8N_SECURE_COOKIE=true
      - WEBHOOK_URL=http://sitename.ru
      - N8N_HOST=sitename.ru


    volumes:
      - './n8n:/home/node/.n8n'
    image: docker.n8n.io/n8nio/n8n

В переменной WEBHOOK_URL нужно указать домен, по которому будет работаьб Ваш сайт. В этом файле можно добавить нужные вам переменные, для более тонкой настройки n8n.

Теперь зайпустите n8n командой

sudo docker compose up -d 

3. Настройка Nginx

Установите nginx:

apt install nginx -y

Создайте конфигурационный файл для сайта:

nano /etc/nginx/sites-available/sitename.ru.conf

Пример конфигурации:

server {
    listen 80;
    server_name sitename.ru;
    access_log /var/log/nginx/sitename_ru.log combined;

    client_max_body_size 300m;


    location / {
        try_files $uri @backend;
    }

    location @backend {
        proxy_pass http://localhost:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        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_read_timeout 600s;
        proxy_buffering off;

    }

    gzip on;
    gzip_types text/plain text/css application/javascript application/json image/svg+xml;
    gzip_min_length 256;
    gzip_comp_level 5;
    gzip_vary on;

    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options DENY;
    add_header X-XSS-Protection "1; mode=block";
}

Вместо sitename.ru нужно указать домен, по которому будет работать Ваш сайт.

Описание настроек в nginx

Здесь мы опишем некоторые настройки, которые нужно корректировать для запуска вашего приложения.

Переменная server_name - указывает по какому домену будет работать данный конфигурационный файл nginx

Переменная proxy_pass - указывает по какому адресу работает ваше nodejs-приложение и куда нужно проксировать запросы, для работы сайта.

Активируйте конфигурационный файл и перезапустите Nginx:

ln -s /etc/nginx/sites-available/sitename.ru.conf /etc/nginx/sites-enabled/
nginx -t 
nginx -s reload

4. Настройка SSL-сертификата

Нужно настроить SSL-сертификат для работы сайта. Для выпуска сертификата установите утилиту dehydrated:

apt install dehydrated

Создайте файл со списком доменов для вашего сертификата:

nano /etc/dehydrated/domains.txt

В нём напишите список доменов. Для каждого отдельного сертификата список доменов пишется в одной отдельной строке:

sitename.ru 

Вместо sitename.ru нужно указать домен, по которому будет работать Ваш сайт.

Далее в файле /etc/nginx/sites-available/sitename.ru.conf после строки access_log /var/log/nginx/sitename_ru.log combined; добавьте строки

location /.well-known/acme-challenge {
        alias /var/lib/dehydrated/acme-challenges/;
    }

Перезапустите Nginx

nginx -t 
nginx -s reload

Выпустите SSL-сертификат командами

dehydrated --register --accept-terms
dehydrated -c

Для расширения количества поддерживаемых протоколов шифрования сгенерируйте файл dhparam

openssl dhparam -out /etc/nginx/dhparam.pem 2048

Теперь нужно подключить SSL-сертификат к сайту. Для этого откройте файл /etc/nginx/sites-available/sitename.ru.conf и перепишити конфигурационный файл следующим образом

server {
    listen 80;
    server_name sitename.ru;
    access_log /var/log/nginx/sitename_ru.log combined;

    client_max_body_size 300m;


    location /.well-known/acme-challenge {
        alias /var/lib/dehydrated/acme-challenges/;
    }

if ($scheme = http) {
        return 301 https://$host$request_uri;
}


}

server {
    listen 443 ssl;
    server_name sitename.ru;
    access_log /var/log/nginx/sitename_ru.log combined;

    client_max_body_size 300m;


    location /.well-known/acme-challenge {
        alias /var/lib/dehydrated/acme-challenges/;
    }

    ssl_certificate     /var/lib/dehydrated/certs/sitename.ru/fullchain.pem;
    ssl_certificate_key /var/lib/dehydrated/certs/sitename.ru/privkey.pem;
    ssl_dhparam /etc/nginx/dhparam.pem;
    ssl_protocols  TLSv1.2 TLSv1.3;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        try_files $uri @backend;
    }

    location @backend {
        proxy_pass http://localhost:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        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_read_timeout 600s;
        proxy_buffering off;

    }

    gzip on;
    gzip_types text/plain text/css application/javascript application/json image/svg+xml;
    gzip_min_length 256;
    gzip_comp_level 5;
    gzip_vary on;

    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options DENY;
    add_header X-XSS-Protection "1; mode=block";


}

Перезапустите Nginx

nginx -t 
nginx -s reload

Откройте менеджер cron-заданий командой

crontab -e

Добавьте в открывшемся текстовом редакторе строку

0 2 */3 * * /usr/bin/dehydrated -c -g && /usr/sbin/nginx -s reload

5. Проверка работы

Проверьте, что контейнер запущен и не выдаёт ошибок:

sudo docker logs -f n8n

Откройте в браузере https://sitename.ru. Вы попадёте на страницу создания первого аккаунта — заполните форму и задайте пароль администратора. После этого n8n готов к работе.

Если страница не открывается, проверьте по порядку:

1) sudo docker logs n8n — нет ли ошибок в логах приложения;

2) curl -I http://sitename.ru с самого сервера — отвечает ли Nginx;

3) открыты ли порты 80/443 (шаг 3).

6. Обновление n8n и резервное копирование

Обновление n8n

su - web
cd /home/web
sudo docker compose pull
sudo docker compose up -d

После обновления проверьте логи: sudo docker logs -f n8n.

Перед обновлением рекомендуется сделать резервную копию данных (см. ниже), чтобы при проблемах с новой версией их можно было восстановить.

Резервное копирование

Все данные n8n (база, credentials, файлы) хранятся в каталоге ~/n8n пользователя web. Рекомендуется регулярно делать его копию, например на другой сервер или в облачное хранилище:

su - web
tar czf /root/n8n-backup-$(date +%F).tar.gz n8n

Для восстановления достаточно разархивировать каталог в место, указанное в volumes в docker-compose.yml, и перезапустить контейнер.

Поздравляем, теперь приложение n8n запущено на VDS.

Облачные VDS
Облачные VDS
Облачные VDS
Масштабируются под любые задачи: от размещения сайта до IT-инфраструктуры
Заказать

Нам доверяют тысячи компаний и разработчиков

22 года
Предоставляем услуги профессионального хостинга
35 000+
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime наших серверов хостинга
Callibri
Forum
УГМК-Здоровье
Крылья
Tele-Club
Linline
ipos.digital
Премьер зал
Магнум
Алатырь
Туристер
RoiBuro
ROSO
Callibri
Forum
УГМК-Здоровье
Крылья
Tele-Club
Linline
ipos.digital
Премьер зал
Магнум
Алатырь
Туристер
RoiBuro
ROSO
ВК49865