Привет всем. Настраиваю связку Baserow + n8n, оба в Docker через Portainer. Baserow открывается по домену нормально, но когда в n8n добавляю Baserow ноду и пытаюсь выбрать базу данных — вылетает ошибка:
"There was a problem loading the parameter options from server: [object Object]"
В credentials указал домен https://db.example.com , email и пароль. Сохраняется без ошибок, но дропдаун с базами не загружается. Что делать?
Привет! Давай разбираться. Первым делом проверь — n8n вообще достигает Baserow внутри Docker? Выполни команду прямо из контейнера n8n:
docker exec -it n8n-master sh -c \ "node -e \"const h=require('http');const d=JSON.stringify({email:'твой@email.com',password:'твойпароль'});const r=h.request({hostname:'baserow',port:80,path:'/api/user/token-auth/',method:'POST',headers:{'Content-Type':'application/json','Content-Length':d.length}},res=>{let b='';res.on('data',c=>b+=c);res.on('end',()=>console.log(res.statusCode,b))});r.write(d);r.end()\""
Что вернёт?
Что вернёт?
Вернуло вот это:
400 <!doctype html> <html lang="en"> <head><title>Bad Request (400)</title></head> <body><h1>Bad Request (400)</h1></body> </html>
400 — это хорошо, значит соединение есть. Baserow получает запрос, но Django его отклоняет. Скорее всего hostname baserow не прописан в ALLOWED_HOSTS. Проверь логи:
docker logs baserow --tail 10
Вот что в логах:
ERROR - Invalid HTTP_HOST header: 'baserow'. You may need to add 'baserow' to ALLOWED_HOSTS. Bad Request: /api/user/token-auth/
Скорее всего hostname
baserowне прописан в ALLOWED_HOSTS
Так и есть. Как добавить?
Многие на этом месте добавляют переменную DJANGO_ALLOWED_HOSTS — но в Baserow она не работает. Правильная переменная называется BASEROW_EXTRA_ALLOWED_HOSTS. Открой свой docker-compose стек и добавь в environment:
environment: BASEROW_PUBLIC_URL: 'https://db.example.com' BASEROW_CADDY_ADDRESSES: ':80' BASEROW_EXTRA_ALLOWED_HOSTS: 'baserow,localhost'
Важно: BASEROW_PUBLIC_URL добавляется в ALLOWED_HOSTS автоматически, его в BASEROW_EXTRA_ALLOWED_HOSTS писать не нужно. Только дополнительные хосты.
После этого пересоздай стек и проверь логи снова.
Помогло! Логи чистые, ошибок нет. Повторил команду проверки — вернуло 200 и токен. В n8n в credentials поменял хост с https://db.example.com на http://baserow — и дропдаун с базами данных загрузился!
Спасибо огромное, несколько часов убил на это.
Рад что разобрались! Подведу итог для тех кто найдёт эту тему:
Проблема: n8n Baserow нода не загружает список баз данных ([object Object]), хотя credentials сохраняются.
Причина: Django внутри Baserow отклоняет запросы от контейнера n8n, потому что hostname baserow не в списке разрешённых хостов.
Решение:
-
В docker-compose Baserow добавить переменную:
BASEROW_EXTRA_ALLOWED_HOSTS: 'baserow,localhost'
-
В credentials n8n указать хост
http://baserow(внутренний Docker hostname), а не внешний домен.
Частая ошибка: переменная DJANGO_ALLOWED_HOSTS в Baserow не работает — нужна именно BASEROW_EXTRA_ALLOWED_HOSTS.
UPD для baserow:1.24.2
Это была цепочка из нескольких проблем, которые накладывались одна на другую:
-
Неправильная переменная —
DJANGO_ALLOWED_HOSTSне работает в Baserow, нужнаBASEROW_EXTRA_ALLOWED_HOSTS -
Caddy роутит по hostname — в новой версии Baserow Caddy пропускает
/api/*только если hostname совпадает сBASEROW_PUBLIC_URL. Запросы от n8n приходили с hostnamebaserow— Caddy их не узнавал и отдавал фронтенд вместо API -
BASEROW_CADDY_GLOBAL_CONF— вставляется внутрь глобального блока{}, поэтому туда нельзя вставить отдельный сайт -
Решение — заменить Caddyfile целиком через volume, убрав проверку
@is_baserow_toolчтобы все запросы на/api/*роутились на бэкенд независимо от hostname
По сути Baserow в новых версиях стал сложнее внутри — раньше этого не было. Зато теперь всё настроено правильно и стабильно работает.
Финальная конфигурация:
-
BASEROW_EXTRA_ALLOWED_HOSTS: 'baserow,localhost'— правильная переменная для Django -
Кастомный
/root/Caddyfileсмонтирован через volume — убрана проверка@is_baserow_toolкоторая блокировала запросы от n8n -
В n8n credentials хост
http://baserow
