// Engineering Log

n8n и бэкенд-сервисы: Часть 2 — Supabase

Опубликовано 22.09.2026

// Быстрый маршрут

Эта статья относится к теме Python и автоматизация.

Supabase — бэкенд-платформа на основе PostgreSQL. Она объединяет базу данных, автоматически создаваемый REST API, регистрацию и вход пользователей, хранилище файлов, серверные функции и подписку на изменения. Код распространяется под лицензией Apache 2.0, поэтому Supabase можно использовать как облачный сервис или установить на собственный сервер.

Из чего состоит Supabase

  • База данных — полноценный PostgreSQL: таблицы, индексы, функции, транзакции, расширения.
  • REST API — генерируется автоматически по структуре таблиц (PostgREST): для каждой таблицы сразу доступны чтение, вставка, обновление и удаление.
  • Auth — регистрация и вход по почте и паролю, одноразовым ссылкам, через внешних провайдеров.
  • Row Level Security — политики доступа на уровне строк: пользователь видит только те записи, которые разрешает политика.
  • Storage — хранилище файлов с правами доступа.
  • Edge Functions — серверные функции на TypeScript.
  • Realtime — рассылка изменений данных подписанным клиентам.

Главное отличие от документных сервисов — это обычный PostgreSQL. Данные можно выгрузить стандартными средствами (pg_dump), а к базе подключить любое приложение, которое умеет работать с PostgreSQL, в том числе n8n.

Облако или свой сервер

Облачная версия удобна, но её серверы находятся за рубежом, а картой российского банка сервис не оплатить. Для персональных данных граждан России с 1 июля 2025 года она не подходит: первичный сбор таких данных должен вестись в базах на территории России.

Установка на свой сервер описана в официальной документации: репозиторий клонируется, файл .env.example копируется в .env, в нём задаются секреты, затем все сервисы запускаются командой docker compose up -d. Перед первым запуском обязательно замените значения POSTGRES_PASSWORD, JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY и DASHBOARD_PASSWORD: документация прямо предупреждает, что запускать сервис со значениями по умолчанию нельзя.

Минимальные требования для небольшой рабочей установки — 4 ГБ оперативной памяти, 2 ядра и 40 ГБ на SSD; рекомендуется 8 ГБ, 4 ядра и 80 ГБ. В отличие от облака, самостоятельная установка не включает журналы и аналитику (они подключаются отдельным файлом compose), автоматические резервные копии и HTTPS: сертификат настраивается на обратном прокси, а резервное копирование базы — вашими силами.

Что умеет узел Supabase в n8n

Встроенный узел Supabase работает только со строками таблиц. Операций пять:

  • создать строку;
  • удалить строку;
  • получить одну строку;
  • получить все строки, отобранные фильтром;
  • изменить строку.

По умолчанию узел видит схему public; другую схему можно указать в параметре Use Custom Schema.

Учётные данные узла — адрес проекта (Host) и секретный ключ. Supabase переходит на новый формат ключей: старые ключи service_role пока работают, но их отключают, поэтому для новых подключений берите секретный ключ нового формата. Секретный ключ обходит политики Row Level Security, поэтому хранится только в n8n и на сервере.

Чего узел не умеет

Произвольного SQL, операций с пользователями Auth и файлами Storage в узле нет. Для них есть два пути:

  • Узел Postgres с прямым подключением к базе Supabase. Он выполняет любой SQL: соединения таблиц, агрегаты, массовые обновления. Для самостоятельной установки это обычное подключение к PostgreSQL по частной сети.
  • Узел HTTP Request к API Supabase с теми же учётными данными. Так вызываются функции Auth, Storage и Edge Functions.

Как Supabase сообщает n8n об изменениях

Для этого служат Database Webhooks. Это обёртка над триггерами PostgreSQL и расширением pg_net: после вставки, изменения или удаления строки база асинхронно отправляет HTTP-запрос и не задерживает основную транзакцию. Настраиваются веб-хуки в панели управления или SQL-запросом.

В теле запроса приходит JSON с полями type (INSERT, UPDATE или DELETE), table, schema, record — строка после изменения — и old_record — строка до изменения. В n8n такой запрос принимает узел Webhook, а узел Switch разводит обработку по значению type.

Если Supabase и n8n запущены в Docker на одной машине, адрес localhost внутри контейнера указывает на сам контейнер. Документация Supabase для такого случая советует host.docker.internal; на сервере удобнее поместить оба сервиса в одну сеть Docker и обращаться к n8n по имени контейнера.

Примеры процессов

Заявки с сайта в базу. Webhook принимает форму → узел Supabase сохраняет заявку в таблицу leads → сообщение менеджеру в Telegram. Если заявка с тем же телефоном уже есть, её лучше найти выборкой строк по фильтру и обновить, а не создавать дубликат.

Письмо о смене статуса заказа. Database Webhook на таблицу orders → Webhook в n8n → IF: record.status отличается от old_record.status → письмо клиенту. Сравнение со старым значением отсекает изменения, не касающиеся статуса.

Ежедневный отчёт. Schedule Trigger в 9:00 → узел Postgres (Execute Query) с запросом, который считает заказы и выручку за вчера → сообщение в рабочий чат. Агрегацию делает база одним запросом, а не n8n по тысячам строк.

Типичные ошибки

  • Секретный ключ в клиентском коде. Во фронтенд передают только публичный ключ; секретный остаётся в n8n.
  • Таблица без Row Level Security. Если политика не включена, публичный ключ даёт доступ ко всем строкам таблицы через REST API.
  • Самостоятельная установка без резервных копий. Облачные резервные копии на свой сервер не переносятся; настройте pg_dump или резервное копирование с журналами WAL.
  • Порт PostgreSQL открыт наружу ради n8n. Подключайте n8n к базе через частную сеть.
  • Большие выборки через узел Supabase. Тысячи строк надёжнее обрабатывать SQL-запросом на стороне базы.

// Похожая задача

Если у вас похожая ситуация

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

Тема статьи

Python и автоматизация

Боты, интеграции, внутренние сервисы, автоматизация процессов и workflow.

Часто с этим приходят

  • Сделать бота, интеграцию или внутренний инструмент
  • Убрать ручную рутину через Python и API
  • Связать сервисы и автоматизировать процесс целиком

// Следующий шаг

Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.

Открыть услуги

// Reviews

Отзывы по теме

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Написать в Telegram

Отвечаю в течение рабочего дня (03:00–13:00 GMT)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ