Твой первый... n8n
Итак, вокруг n8n много хайпа, что же он представляет собой?
Это open-source проект для автоматизаций. Его можно использовать в двух видах: как SaaS или развернуть у себя локально/на удаленном сервере.
SaaS хорош, но он ПЛАТНЫЙ (после первых 14 дней). Еще из минусов есть ограничение на количество запусков ваших автоматизаций, вы не контролируете версию, сетевые настройки, не можете пользоваться локальными файлами и linux утилитами. Можно использовать для каких-то своих несложных процессов.
Self-hosted посложнее в конфигурации, но стоит 1 раз разобраться, и можно клепать ТГ ботов сколько угодно)
Как развернуть свой собственный инстанс?
Идеальным вариантом будет арендовать виртуалку за границей. Так мы получаем сразу выделенный IPv4, с которого нормально работают чатгпт, клод, гемини.
Чтобы поиграться, могу посоветовать ВМ 2 ядра 2 гига с норм конфигурацией бесплатно на 10 дней (не реклама). Выбираем Ubuntu и ждем, запуска сервера. На дашборде нужно Ctrl+c вот эти циферки
Некст, нужно получить домен и SSL сертификат. Я делаю это здесь (тык). Выбираем домен 3 уровня, подключаем DNS на скопированный IPv4 и в разделе Free SSL certificates генерим серт. В итоге должен скачаться архив с 3 файликами: ca.cer, TVOYDOMEN.cet и TVOYDOMEN.key. Они нужны для того, чтобы телега доверяла твоему серверу (когда будем настраивать ТГ бота).
Перекидываем эти файлы на виртуалку. Я перекинул в папку certs. Я юзаю для этого Remote Host в IntelliJ идее:
Но можно и с помощью обыного docker cp.
На всякий случай, нужно дать разрешение на доступ к этим файлам (через терминал по ssh).
cd /certs chmod 777 ca.cer chmod 777 TVOYDOMEN.cer chmod 777 TVOYDOMEN.key
Алсо нужно перекинуть на виртуалку docker-compose.yaml и Dockerfile. Скачай эти файлы здесь (тык):
В docker-compose.yaml замени TVOYDOMEN на тот, что ты создал выше
Собсна запуск n8n
Накатываем на ВМ docker и docker compose. Это специальные штуки, чтобы запускать какие угодно сервисы в КОНТЕЙНЕРАХ. Вкратце, контейнер - это "упакованные" приложения (которые сконфигурированы в docker-compose.yaml), которые запускаются изолированно от остальной системы. Инструкция с офф сайта:
sudo apt-get update
sudo apt-get 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
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl status docker
# Здесь мы должны увидеть Active: active (running)# переходим в папку с docker-compose.yaml, в моем случае /n8n cd /n8n docker compose up
После последней команды появится лог успешного запуска контейнеров. Ну или error, если вы что-то сделали не так. После сообщения типа
Editor is now accessible via: n8n-1 | https://TVOYDOMEN
Можно проверить, перейдя по ссылке в браузере, должно вылезти вот это
Чтобы полностью остановить контейнеры, когда вы завершили с ними работу, в этой же директории нужно прописать
docker compose down
Кста, еще контейнеры можно запускать фоном, тогда они не будут висеть в терминале, и можно будет запустить что-то еще:
docker compose up -d
Когда уже про создание тг ботов?
Выбираем Telegram триггер On message
В этом окне нужно настроить креденшлы
Если вы никогда до этого не создавали тг ботов, это можно сделать в @BotFather. Там нужно скопировать токен:
Вставляем его в окно выше. Этот триггер будет работать, когда пользователь посылает какое-то сообщение в бот. Можно чекнуть, нажав Execute workflow
Добавим ответное сообщение. Нужно послать его по тому же chat id, по которому сработал триггер
Сохраняем и активируем наш воркфлоу (чтобы он работал всегда, а не только когда мы его запускаем вручную):
Поздравляю, вы прошли курс по основам n8n.
Теперь можно настроить вызовы нейронок, скрипты и прочее. Но об этом как-нибудь в другой раз)