بیسرو
Baserow
دیتابیس no-code و open-source - جایگزین Airtable با قابلیت self-hosting
نمای کلی
نود Baserow چیست؟
نود Baserow امکان مدیریت خودکار دادهها در Baserow را از طریق n8n فراهم میکند. Baserow یک پلتفرم دیتابیس no-code و open-source است.
چرا Baserow؟
- Open Source & Self-hosted: مالکیت کامل دادهها (مهم برای ایران)
- No-code Interface: رابط spreadsheet-like بدون نیاز به کدنویسی
- Real-time Collaboration: همکاری تیمی همزمان
- Extensible: پلاگینها و API قدرتمند
- Privacy-first: دادهها روی سرور شما میمانند
قابلیتهای کلیدی:
- انواع فیلد: Text, Long Text, Number, Boolean, Date, Single/Multiple Select, Link Row, File, Formula, Lookup, Count, Rollup, Email, Phone, URL, Rating, Created/Modified dates
- Views: Grid, Gallery, Form, Kanban, Calendar, Timeline
- فیلتر و مرتبسازی: فیلترهای ترکیبی با AND/OR
- API کامل: REST API با auto-generated docs
- Webhooks: دریافت eventهای تغییر داده
- Templates: قالبهای آماده برای شروع سریع
مقایسه Baserow vs NocoDB vs Airtable:
| ویژگی | Baserow | NocoDB | Airtable | |--------|---------|--------|----------| | Open Source | بله | بله | خیر | | Self-hosted | بله | بله | خیر | | UI Quality | عالی | خوب | عالی | | Standalone | بله (PostgreSQL داخلی) | نه (نیاز به DB) | بله | | Kanban View | بله | بله | بله | | Form View | بله | بله | بله | | Formula | بله | بله | بله | | Plugin System | بله | محدود | خیر |
محدودیتهای API:
- Self-hosted: بدون محدودیت
- Cloud (رایگان): ۱,۰۰۰ rows, 2GB storage
- Rate limit: ۲۰۰ requests/minute (cloud)
احراز هویت
احراز هویت Baserow
روش ۱: Database Token (توصیه شده)
- 1وارد Baserow شوید
- 2به Settings (آیکون چرخدنده) بروید
- 3API tokens یا Database tokens را انتخاب کنید
- 4Create database token کلیک کنید
- 5نام و permissions را تنظیم کنید:
- Read: خواندن ردیفها
- Create: ایجاد ردیف
- Update: ویرایش ردیف
- Delete: حذف ردیف
- 1Token را کپی و در n8n وارد کنید
تنظیم در n8n:
- **Host**: آدرس Baserow (مثلاً
https://baserow.example.comیاhttps://api.baserow.io) - API Token: Database token ایجاد شده
روش ۲: JWT Token (Session-based)
- 1از API
/api/user/token-auth/با email و password توکن بگیرید - 2توکن را در header
Authorization: JWT <token>ارسال کنید
⚠️ JWT Token بعد از مدتی منقضی میشود. برای automation از Database Token استفاده کنید.
نصب Baserow (Self-hosted):
Docker Compose (توصیه شده):
# دانلود docker-compose
curl -o docker-compose.yml https://baserow.io/docker-compose.yml
# اجرا
docker compose up -d
# دسترسی
# http://localhost:80Docker ساده:
docker run -d --name baserow \
-e BASEROW_PUBLIC_URL=http://localhost \
-v baserow_data:/baserow/data \
-p 80:80 -p 443:443 \
baserow/baserow:latestنکات نصب:
- حداقل ۲GB RAM
- PostgreSQL داخلی شامل میشود
- برای production از PostgreSQL خارجی استفاده کنید
- HTTPS با Let's Encrypt خودکار
عملیاتهای موجود
row-create
ایجاد ردیف جدید در جدول
row-get
دریافت یک ردیف با ID
row-update
ویرایش ردیف موجود
row-delete
حذف ردیف از جدول
row-list
دریافت لیست ردیفها با فیلتر و مرتبسازی
row-move
جابجایی ردیف در ترتیب جدول
row-batch-create
ایجاد چندین ردیف با یک درخواست (حداکثر ۲۰۰)
row-batch-update
ویرایش چندین ردیف با یک درخواست
row-batch-delete
حذف چندین ردیف با یک درخواست
table-list
دریافت لیست جداول یک database
field-list
دریافت لیست فیلدهای یک جدول
file-upload
آپلود فایل برای استفاده در فیلد File
کاربردهای متداول
کاربردهای رایج
۱. CRM (مدیریت ارتباط با مشتری)
Baserow را به عنوان CRM استفاده کنید و لیدها از فرمها خودکار اضافه شوند.
Webhook (فرم تماس) → Baserow (ایجاد ردیف در Leads) → Email (تأیید) → Telegram (alert تیم فروش)۲. Content Calendar
تقویم محتوایی در Baserow و انتشار خودکار در شبکههای اجتماعی.
Schedule (روزانه) → Baserow (پستهای امروز، status=ready) → Telegram Channel + Twitter → Baserow (update status=published)۳. Inventory Management
مدیریت موجودی محصولات و اطلاعرسانی خودکار.
Baserow Webhook (stock تغییر کرد) → IF (stock < 10) → Email (هشدار) → Baserow (update reorder_status)۴. HR & Recruitment
مدیریت رزومهها و فرآیند استخدام.
Email Trigger (رزومه جدید) → Baserow (ایجاد applicant) → Email (تأیید دریافت) → Baserow (update status=reviewing)۵. Project Tracker
مدیریت پروژهها با Kanban view و اعلان خودکار.
Baserow Webhook (task status changed) → IF (status=done) → Telegram (اطلاع تیم) → Baserow (update completed_date)۶. Survey & Feedback
جمعآوری نظرات و بازخوردها.
Baserow Form (ارسال فرم) → Code (تحلیل sentiment) → Baserow (update score) → IF (negative) → Email (alert support)۷. همگامسازی با Google Sheets
دادهها را بین Baserow و Google Sheets همگام نگه دارید.
Schedule → Baserow (ردیفهای تغییر یافته) → Google Sheets (update)
Schedule → Google Sheets (ردیفهای جدید) → Baserow (create)۸. Email Marketing List
مدیریت لیست ایمیل و خودکارسازی campaignها.
Webhook (subscribe form) → Baserow (add subscriber) → Email (welcome) → Wait (3 days) → Email (first campaign)۹. Asset Management
مدیریت اسناد و فایلهای دیجیتال.
File Upload → Baserow (ایجاد record با file field) → Code (generate thumbnail) → Baserow (update thumbnail)۱۰. Multi-Table Workflow
ترکیب دادهها از چندین جدول مرتبط.
Baserow (لیست سفارشها) → Baserow (اطلاعات مشتری از Link Row) → Code (ساخت فاکتور) → Emailنکات حرفهای
نکات حرفهای
۱. Self-hosted Baserow برای ایران
Baserow self-hosted بهترین گزینه است: بدون VPN، مالکیت کامل دادهها، و بدون محدودیت rows.
۲. از user_field_names استفاده کنید
با اضافه کردن ?user_field_names=true به API URL، میتوانید از نام خوانای فیلدها بجای field_123 استفاده کنید.
۳. Batch Operations
از batch create/update/delete استفاده کنید (حداکثر ۲۰۰ ردیف). تا ۱۰x سریعتر از تکتک.
۴. View Filters
بجای نوشتن فیلتر در API، یک View با فیلتر در Baserow بسازید و از View ID استفاده کنید.
۵. Search API
از search parameter برای جستجوی full-text در همه فیلدها استفاده کنید.
۶. Link Row Fields
Link Row فیلدهای قدرتمندی هستند. از آنها برای ایجاد روابط بین جداول (مثل Orders ← Customers) استفاده کنید.
۷. Formula Fields
از Formula fields برای محاسبات خودکار استفاده کنید. مشابه Excel اما با قدرت بیشتر.
۸. Form View
از Form View برای جمعآوری داده از کاربران بدون نیاز به لاگین استفاده کنید. URL فرم را share کنید.
۹. Webhook Integration
Baserow webhooks را در Settings > Webhooks تنظیم کنید. events: row.created, row.updated, row.deleted.
۱۰. Include/Exclude Fields
فقط فیلدهای مورد نیاز را درخواست کنید (include=field_1,field_2). سرعت بالاتر و traffic کمتر.
۱۱. Pagination
Baserow حداکثر ۲۰۰ ردیف در هر صفحه برمیگرداند. از page و size parameters استفاده کنید.
۱۲. Templates
از Baserow Templates برای شروع سریع استفاده کنید: CRM, Project Management, Content Calendar, etc.
۱۳. Kanban View
از Kanban view برای مدیریت بصری workflowها (مثل تیکتها، تسکها) استفاده کنید.
۱۴. Row Ordering
ترتیب ردیفها در Baserow قابل تنظیم است. از row move API برای drag-and-drop استفاده کنید.
۱۵. API Documentation
Baserow برای هر دیتابیس، API documentation خودکار generate میکند. در Settings > API Docs ببینید.
رفع مشکلات
رفع مشکلات رایج
❌ خطای 401 Unauthorized
علت: Token نامعتبر یا منقضی
راهحل
- Database Token را بررسی کنید
- مطمئن شوید Token به جدول مورد نظر دسترسی دارد
- برای JWT Token، ممکن است منقضی شده باشد
❌ خطای 404 Not Found
علت: Table ID یا Row ID نامعتبر
راهحل
- Table ID عددی از URL را استفاده کنید
- مطمئن شوید جدول حذف نشده باشد
- Row ID صحیح باشد
❌ خطای "Field not found"
علت: نام فیلد نادرست
راهحل
- Baserow API از field ID عددی استفاده میکند (مثل
field_123) - یا با
user_field_names=trueاز نام فیلد استفاده کنید - نام فیلد case-sensitive است
❌ خطای "Value error"
علت: نوع داده نادرست
راهحل
- Number field: عدد ارسال کنید (نه string)
- Date field: فرمت ISO (
2024-01-15) - Single Select: مقدار exact از options
- Link Row: آرایهای از Row IDs (
[1, 2, 3]) - File: ابتدا upload کنید و token را استفاده کنید
❌ خطای Rate Limit (429)
علت: تعداد درخواستها از حد مجاز بیشتر
راهحل
- Cloud: ۲۰۰ req/min
- Self-hosted: بدون محدودیت
- Wait node بین درخواستها اضافه کنید
- از batch operations استفاده کنید
❌ Webhook Event دریافت نمیشود
علت: Webhook تنظیم نشده
راهحل
- Baserow از API webhooks پشتیبانی میکند
- از
/api/database/webhooks/table/{table_id}/استفاده کنید - URL n8n باید publicly accessible باشد
- Events: rows.created, rows.updated, rows.deleted
❌ File Upload خطا میدهد
علت: فرمت یا سایز نادرست
راهحل
- ابتدا فایل را با
/api/user-files/upload-file/آپلود کنید - سپس token فایل را در field ارسال کنید
- حداکثر سایز بسته به تنظیمات سرور
❌ Link Row مقدار نمیگیرد
علت: فرمت نادرست
راهحل
- Link Row مقدار آرایهای از row IDs میگیرد:
[1, 5, 12] - نه نام یا متن
- ابتدا ردیف مقصد را بسازید و ID را استفاده کنید
