С вами Папа Карло. В мастерской порядок. Давайте установим n8n. Инструмент годный, но установка на VPS у новичков часто превращается в квест “почему не открывается сайт” и “почему вебхук не работает”. Сейчас всё разложу по полочкам: ставим на Ubuntu через Docker, делаем нормальный домен + HTTPS и настраиваем вебхуки так, чтобы оно не отваливалось.
Если что-то не получается — пишите мне в телеграм.
Что нужно заранее
- VPS с Ubuntu, например на том же таймвебе
- Домен (на регру и подобных) — без домена вебхуки будут страдать
- Доступ по SSH (логин/пароль или ключ), обычно без проблем выдает хостинг.
Заходим на сервер и обновляем систему
sudo apt update && sudo apt upgrade -y
Поставим полезное:
sudo apt install -y curl git ufw
Ставим Docker и Docker Compose
Самый простой путь — официальный репозиторий Docker.
curl -fsSL https://get.docker.com | sudo sh
Добавляем пользователя в группу docker (чтобы не писать sudo каждый раз):
sudo usermod -aG docker $USER
⚠️ После этого переподключись к SSH (выйди и зайди снова), чтобы группы применились.
Проверяем:
docker --version
docker compose version
Создаём папку под n8n
mkdir -p ~/n8n && cd ~/n8n
Готовим docker-compose.yml
Создаём файл:
nano docker-compose.yml
Вставляй вот это (база будет SQLite — для старта идеально; потом можно переехать на Postgres):
services:
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.yourdomain.ru
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.yourdomain.ru/
- GENERIC_TIMEZONE=Europe/Berlin
- TZ=Europe/Berlin
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
👉 Заменяй n8n.yourdomain.ru на свой домен.
Сохрани: Ctrl+O → Enter, выйти: Ctrl+X.
Запускаем n8n
docker compose up -d
Проверяем, что контейнер жив:
docker ps
Логи (если что-то пошло не так):
docker logs -n 100 -f n8n-n8n-1
Открываем порт и включаем файрвол
Если используешь UFW:
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
sudo ufw status
⚠️ Порт 5678 наружу лучше не светить “в интернет” без прокси — дальше сделаем нормально через HTTPS.
Поднимаем HTTPS через Nginx Proxy Manager (самый лайтовый вариант)
Чтобы не возиться с ручным Nginx и Certbot, я обычно ставлю Nginx Proxy Manager. Это прям “панелька” в браузере: привязал домен → получил SSL → готово.
Создай папку:
mkdir -p ~/npm && cd ~/npm
Создай docker-compose.yml:
nano docker-compose.yml
Вставь:
services:
npm:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
- "80:80"
- "81:81"
- "443:443"
volumes:
- npm_data:/data
- npm_letsencrypt:/etc/letsencrypt
volumes:
npm_data:
npm_letsencrypt:
Запуск:
docker compose up -d
Панель откроется на:
http://IP_СЕРВЕРА:81
Дальше в NPM:
- Proxy Hosts → Add Proxy Host
- Domain:
n8n.yourdomain.ru - Forward Hostname/IP:
127.0.0.1 - Forward Port:
5678 - Включи Websockets
- В SSL вкладке нажми Request a new SSL Certificate и включи Force SSL
Готово: теперь n8n доступен по HTTPS, и вебхуки начнут жить нормально.
Самое важное: чтобы вебхуки не ломались
В n8n вебхуки — это как входная дверь в мастерскую. Если адрес кривой, дверь не открывается, клиенты уходят.
Проверь в окружении (мы уже указали):
WEBHOOK_URL=https://n8n.yourdomain.ru/N8N_HOST=n8n.yourdomain.ruN8N_PROTOCOL=https
После изменения переменных перезапусти:
cd ~/n8n
docker compose down
docker compose up -d
Быстрая проверка вебхука
Создай тестовый workflow:
- Trigger: Webhook
- Respond: Respond to Webhook (или просто Set + Respond)
Скопируй URL и дерни его:
curl -i https://n8n.yourdomain.ru/webhook/your-path
Если получаешь ответ — значит дверь в мастерскую открывается как надо.
Мини-советы от Папы Карло (чтоб не словить “почему оно умерло”)
- Всегда ставь домен + HTTPS, иначе половина интеграций будет чудить.
- Включай Websockets в прокси, иначе интерфейс может вести себя странно.
- Делай бэкап папки
~/.n8n(у нас это volumen8n_data) — там всё важное. - Если планируешь серьёзную нагрузку — потом переедем на Postgres, но для старта SQLite норм.