في كثير من الشركات تجد أن بيانات العملاء والمخزون والطلبات تعيش في ملفات Excel على مجلد مشترك Shared Drive أو تتنقل بين الموظفين في البريد، وهذا هو الحل الأول الذي يبدأ به الجميع لأنه لا يحتاج إلى أي إعداد، ولكن مع الوقت سوف تجد أن لا أحد يعرف أين أحدث نسخة من الملف، وأن موظفين عدلا الملف نفسه في الوقت نفسه فضاعت تعديلات أحدهما، وأن الملف لا يتحقق من أي قيمة تكتب فيه، فيضع أحدهم البريد في عمود الهاتف ولا يعترض عليه أحد، والسبب أن ملف الجداول Spreadsheet صمم للحسابات وليس لحفظ بيانات يعمل عليها فريق كامل.
لذلك ينتقل الفريق عادة إلى الحل الثاني، وهو خدمة سحابية مثل Airtable تعطيه جداول مشتركة يعدل فيها الجميع في الوقت نفسه، وهذا يحل مشكلة النسخ المتعددة، ولكنه يأتي بمشكلة أخرى، وهي أن بيانات عملائك أصبحت على سيرفرات Servers شركة أخرى خارج سيطرتك، وأنك تدفع اشتراكاً عن كل مستخدم، وكلما كبر الفريق كبرت الفاتورة.
والحل الأنسب في رأينا هو أن تشغل الأداة نفسها على سيرفرك، وهنا يأتي دور NocoDB الذي يعطيك جداول Tables تشبه Airtable في الاستخدام، وفيه أنواع متعددة من الحقول Fields منها البريد والعملة وقوائم الاختيار والمرفقات والروابط Links بين الجداول، ويمكنك أن تعرض الجدول الواحد بعدة طرق Views مثل الشبكة Grid والنموذج Form والمعرض Gallery وKanban والتقويم، وتحدد صلاحيات Permissions كل عضو، ويصلك مع كل جدول واجهة REST API جاهزة، والبيانات كلها تبقى في قاعدة PostgreSQL تملكها أنت.
وقد يتساءل البعض: هل ما زال NocoDB مفتوح المصدر Open Source كما كان؟ والإجابة أن المشروع غير رخصته License في 9 يناير 2026 من AGPL-3.0 إلى Sustainable Use License، وهي رخصة تسمح لك بقراءة الكود وتعديله ولكنها تضع قيوداً على الاستخدام التجاري، لذلك لم يعد NocoDB مفتوح المصدر بالمعنى الدقيق، وهذا يعني لك عملياً أنك تستطيع تشغيله على سيرفرك لعمل شركتك الداخلي أو لاستخدامك الشخصي دون أي رسوم مهما كان حجم شركتك، أما إذا أردت أن تقدمه لعملائك كخدمة مستضافة Hosted Service أو تعطيهم دخولاً مباشراً إليه فسوف تحتاج إلى رخصة تجارية Commercial License.
ويناسب NocoDB قواعد البيانات Databases التشغيلية الصغيرة والمتوسطة التي يديرها موظفون لا يبرمجون، مثل نظام CRM بسيط أو سجل للأصول أو متابعة للطلبات، ولكنه لا يحل محل تطبيق مبني لغرض محدد إذا احتاج العمل إلى منطق معقد، ولا محل قاعدة بيانات تحليلية Analytical Database فيها ملايين السجلات Records. ولاحظ أن بعض الميزات مقصورة على النسخ المدفوعة، مثل إدارة الفرق والمزامنة Sync ولوحات المؤشرات Dashboards، وسوف تجدها في الواجهة UI وعليها علامة Business.
وسوف نناقش في هذا المقال ما يلي:
- تثبيت NocoDB مع PostgreSQL وRedis عبر Docker Compose خلف الـ Reverse Proxy، ومعنى كل متغير في الإعداد.
- إنشاء حساب المدير الأول وإغلاق التسجيل المفتوح قبل أن يسبقك إليه أحد.
- إنشاء أول قاعدة Base وجدول، ثم رمز API تقرأ به البيانات وتضيفها من أدوات الأتمتة.
- النسخ الاحتياطي والاستعادة والتحديث، وأشهر المشكلات وحلولها.
ما تحتاجه قبل أن تبدأ Requirements
- سيرفر مثبت عليه Docker وCompose، وإذا لم تثبته بعد فابدأ بدليل تثبيت Docker على Ubuntu.
- الموارد Resources: يستهلك الـ Container الخاص بـ NocoDB قرابة 620 ميجابايت من الذاكرة RAM، وPostgreSQL قرابة 75 ميجابايت، وRedis قرابة 12 ميجابايت، لذلك خصص للخدمة 2 GB من الذاكرة على الأقل حتى يبقى لها هامش عندما يكثر المستخدمون.
- نطاق Domain مثل
data.example.com، وReverse Proxy يعمل بـ HTTPS مثل Nginx Proxy Manager ومتصل بشبكة Docker باسمproxy. - خادم بريد SMTP إذا أردت أن تدعو الأعضاء بالبريد وأن يستعيدوا كلمات المرور بأنفسهم.
تثبيت NocoDB بـ Docker Compose
نبدأ بإنشاء مجلد للخدمة يحفظ فيه ملف Compose وملف الأسرار:
sudo mkdir -p /opt/nocodb
sudo chown $USER: /opt/nocodb
cd /opt/nocodbبعد ذلك تحتاج إلى سرين Secrets تمررهما إلى الـ Containers عبر متغيرات البيئة Environment Variables، وهما كلمة مرور PostgreSQL، وسر توقيع جلسات الدخول JWT. وإذا لم تحدد سر JWT فسوف يولده NocoDB بنفسه، ولكن تثبيته في ملف .env يجعله جزءاً من إعدادك الذي تنسخه وتنقله معك، فلا تنقطع جلسات المستخدمين حين تنقل الخدمة إلى سيرفر آخر أو تعيد بناءها:
cat > .env <<EOF
POSTGRES_PASSWORD=$(openssl rand -hex 24)
NC_AUTH_JWT_SECRET=$(openssl rand -hex 32)
EOF
chmod 600 .envواستخدمنا الخيار -hex لأن كلمة المرور تدخل في رابط الاتصال NC_DB، والرموز مثل @ و/ و& تكسر هذا الرابط، أما الحروف والأرقام الست عشرية فلا تسبب أي مشكلة.
الآن سوف ننشئ الملف /opt/nocodb/compose.yaml، ويمكنك مقارنته بما في دليل التثبيت الرسمي بـ Docker Compose وأمثلة Compose الرسمية:
services:
nocodb:
image: nocodb/nocodb:2026.09.1
container_name: nocodb
restart: unless-stopped
environment:
NC_DB: "pg://db:5432?u=nocodb&p=${POSTGRES_PASSWORD}&d=nocodb"
NC_AUTH_JWT_SECRET: ${NC_AUTH_JWT_SECRET}
NC_REDIS_URL: redis://redis:6379
NC_SITE_URL: https://data.example.com
NC_DISABLE_TELE: "true"
NC_DISABLE_MUX: "true"
volumes:
- nocodb_data:/usr/app/data
networks:
- internal
- proxy
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "wget -q --tries=1 --spider http://localhost:8080/api/v1/health || exit 1"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
db:
image: postgres:17.11
container_name: nocodb-db
restart: unless-stopped
environment:
POSTGRES_USER: nocodb
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: nocodb
volumes:
- pg_data:/var/lib/postgresql/data
networks:
- internal
healthcheck:
test: ["CMD-SHELL", "pg_isready -U nocodb -d nocodb"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:8.6.7
container_name: nocodb-redis
restart: unless-stopped
volumes:
- redis_data:/data
networks:
- internal
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
volumes:
nocodb_data:
name: nocodb_data
pg_data:
name: nocodb_pg
redis_data:
name: nocodb_redis
networks:
internal: {}
proxy:
external: trueفي الإعداد أعلاه لاحظ التالي:
- NC_DB يجعل PostgreSQL القاعدة الأساسية لـ NocoDB، ففيها تحفظ بيانات التعريف Metadata أي المستخدمون والقواعد والعروض، وجداولك نفسها أيضاً، ولكل قاعدة مخطط Schema مستقل. وإذا لم تحدد هذا المتغير فسوف يستخدم NocoDB ملف SQLite داخل الـ Container، وهذا لا يصلح إلا للتجربة.
- Redis للتخزين المؤقت Cache وطوابير المهام Job Queues، وهو يسرع الواجهة حين يكثر المستخدمون، ورغم أنه اختياري فالأمثلة الرسمية تتضمنه. والاسم الحالي لهذا المتغير في التوثيق هو
NC_CACHE_REDIS_URL، والاسمNC_REDIS_URLالذي نستخدمه هنا وفي الأمثلة الرسمية ما زال مدعوماً. - NC_SITE_URL هو الرابط العام للخدمة، ومنه يبني NocoDB روابط رسائل الدعوة واستعادة كلمة المرور ورابط صفحة توثيق الـ API، وقد تجده في الشروحات القديمة باسمه السابق
NC_PUBLIC_URLالذي ما زال مدعوماً. - NC_DISABLE_TELE يوقف إرسال بيانات الاستخدام المجهولة Telemetry إلى الشركة، وهذا منطقي لأنك تستضيف الأداة بنفسك حتى تبقى بياناتك عندك. أما
NC_DISABLE_MUXفنقلناه كما هو من المثال الرسمي. - nocodb_data فيه المرفقات Attachments المرفوعة إذا لم تستخدم تخزين S3، وملفات محلية أخرى.
- الملف لا ينشر أي منفذ Port على المضيف Host، والسبب أن الـ Reverse Proxy يصل إلى
nocodb:8080عبر شبكةproxy، وإذا أردت أن تجرب قبل إعداده فأضفports: ["127.0.0.1:8080:8080"]وادخل عبر نفق SSH Tunnel. - المثال الرسمي يضيف Container رابعاً باسم worker للمهام التي تعمل في الخلفية Background Jobs مثل الاستيراد والتصدير، ولكن الـ Container الرئيسي ينفذ هذه المهام بنفسه إذا لم يوجد worker، لذلك نكتفي به على سيرفر صغير، وتضيف الـ worker عندما يكبر الحمل.
بعد ذلك أنشئ شبكة proxy إذا لم تكن موجودة، وشغل الخدمات:
docker network create proxy
docker compose up -d
docker compose ps
docker compose logs --tail 5 nocodbوالمخرج سوف يكون كما يلي:
nocodb Up About a minute (healthy)
nocodb-db Up 2 minutes (healthy)
nocodb-redis Up 2 minutes (healthy)
...
App started successfully.الإقلاع الأول Startup يأخذ دقيقة أو دقيقتين، والسبب أن NocoDB ينشئ فيه جداول النظام System Tables في PostgreSQL. وبعدها أنشئ في الـ Reverse Proxy مضيفاً من نوع Proxy Host للنطاق data.example.com يوجه الطلبات إلى http://nocodb:8080، واطلب له شهادة Let's Encrypt Certificate، وفعل Force SSL وWebsockets Support، والخيار الأخير ضروري حتى تعمل التحديثات الحية Real-time Updates في الجداول، فبدونه لن يرى الموظف تعديل زميله حتى يعيد تحميل الصفحة.
إنشاء حساب المدير الأول Admin Account
افتح https://data.example.com، ولاحظ أن أول من يسجل يصبح المدير الأعلى Super Admin للسيرفر كله، وأن التسجيل يبقى مفتوحاً لأي شخص بعده، لذلك سجل فوراً بعد تشغيل الخدمة حتى لا يسبقك أحد إذا كان الرابط مفتوحاً للعموم:

بعد ذلك يسألك NocoDB عن غرض الاستخدام، ويمكنك تخطي السؤال بالزر Skip، ثم تصل إلى مساحة العمل Workspace الافتراضية وفيها قاعدة نموذجية باسم «Getting Started». وقبل أن تبدأ العمل قم بثلاثة أمور:
- عطل التسجيل المفتوح Open Signup من Settings أسفل يسار الواجهة، حتى لا يدخل أحد إلا بدعوة، ويمكنك تثبيت ذلك في الإعداد بمتغير البيئة
NC_INVITE_ONLY_SIGNUP: "true". - اضبط SMTP من الإعدادات حتى تصل الدعوات ورسائل استعادة كلمة المرور.
- فعل التحقق بخطوتين Two-Factor Authentication من إعدادات الحساب ثم Security إذا كانت نسختك تتيحه.
إنشاء أول قاعدة Base وجدول
الـ Base في NocoDB تقابل «الملف» في Airtable، أي مجموعة جداول مترابطة لها أعضاؤها وصلاحياتها. اضغط New Base وأعطها اسماً مناسباً، وفي مثالنا سميناها CRM:

وداخل القاعدة اختر Create New Table واكتب اسم الجدول Customers، وإذا كانت بياناتك الآن في ملف CSV أو Excel فاختر Import Data، فهذه أسرع طريقة لنقل جداول البيانات Spreadsheets إلى NocoDB دون أن تعيد كتابتها:

أضف الحقول من رأس الجدول بزر + الذي بجانب آخر عمود Column، وفي مثالنا أربعة حقول: Email من نوع Email، وCompany نص Text، وStatus قائمة اختيار Single Select فيها Lead وCustomer وChurned، وDeal عملة Currency. واختر النوع الصحيح لكل حقل، والسبب أن NocoDB يعتمد عليه في التحقق Validation من صيغة البريد، وتلوين عناصر القوائم، وفرز الأرقام وجمعها بدقة، وهذا بالضبط ما كان ينقص ملف Excel على المجلد المشترك.

وفوق الجدول شريط أدوات Toolbar فيه Filter وSort وGroup، وكل ما تضبطه منها يحفظ مع العرض، ويمكنك أن تنشئ للجدول نفسه أكثر من عرض، مثلاً عرض Kanban مجمع حسب الحالة لفريق المبيعات، أو نموذج Form عام يستقبل الطلبات الجديدة دون أن يعطي مرسلها أي صلاحية على الجدول.
ربط NocoDB بأدواتك عبر رمز API
كل جدول له واجهة REST جاهزة، وبها تربط NocoDB بأدوات الأتمتة Automation مثل n8n أو بتطبيقاتك. ولإنشاء رمز Token افتح قائمة الحساب أسفل اليسار، ثم Account Settings ثم API Tokens، واضغط زر إنشاء رمز جديد Create New API Token، وسم الرمز باسم الجهة التي سوف تستخدمه حتى تعرفه لاحقاً في القائمة:


يرسل الرمز في الترويسة Header xc-token، ومعرف الجدول Table ID تجده في رابط المتصفح أو في تبويب Details ثم APIs، وهناك أيضاً أمثلة جاهزة. والمثال التالي يقرأ السجلات التي حالتها Lead ويعيد منها حقلين فقط:
NC_TOKEN=ضع-الرمز-هنا
TABLE_ID=mt945qa9swr9dj6
curl -s -H "xc-token: $NC_TOKEN" "https://data.example.com/api/v2/tables/$TABLE_ID/records?where=(Status,eq,Lead)&fields=Title,Deal"والمخرج سوف يكون كما يلي:
{"list":[{"Title":"عمر حداد","Deal":4500},{"Title":"ليلى يوسف","Deal":8000}],"pageInfo":{"totalRows":2,"page":1,"pageSize":25,"isFirstPage":true,"isLastPage":true}}وهذا مثال يضيف سجلات دفعة واحدة، حيث ترسل مصفوفة JSON Array فيها سجل أو أكثر:
curl -s -X POST -H "xc-token: $NC_TOKEN" -H 'Content-Type: application/json' "https://data.example.com/api/v2/tables/$TABLE_ID/records" -d '[{"Title":"هند العلي","Email":"[email protected]","Company":"شركة المثال","Status":"Customer","Deal":21500}]'والمخرج هو معرف كل سجل جديد:
[{"Id":9}]في الأمثلة أعلاه لاحظ التالي:
- قيمة حقل الاختيار يجب أن تكون أحد الخيارات المعرفة مسبقاً، وإلا رفض NocoDB الطلب برسالة
Invalid option(s) ... provided for column "Status"، وهذا هو التحقق الذي لن تجده في ملف Excel. - الطلب الذي يحمل رمزاً خاطئاً أو لا يحمل رمزاً يعود بالحالة
401. - المسار
/api/v2ما زال يعمل، وهناك إصدار أحدث من الواجهة بالمسار/api/v3بصيغة مختلفة للمخرج، فإذا بدأت تكاملاً جديداً فراجع توثيق الـ REST APIs قبل أن تختار بينهما. - إذا أرسلت نصاً عربياً من طرفية Terminal على Windows فتأكد أن ترميزها Encoding هو UTF-8، وإلا فسوف تصل الحروف علامات استفهام.
كيف تتأكد أن كل شيء يعمل
- الأمر
docker compose psيعرض الخدمات الثلاث بحالةhealthy. - الأمر
curl -s https://data.example.com/api/v1/healthيعيد{"message":"OK",...}. - الجداول محفوظة في PostgreSQL وليس في SQLite، والأمر
docker compose exec db psql -U nocodb -d nocodb -Atc "select schemaname, tablename from pg_tables where tablename = 'Customers'"يعرض جدولك داخل مخطط يحمل معرف القاعدة. - طلب الـ API الذي يحمل الرمز يعود بالحالة
200، والطلب الذي لا يحمله يعود بالحالة401. - بعد قصر التسجيل على الدعوات يرفض NocoDB أي محاولة تسجيل من نافذة خاصة في المتصفح.
- افتح الجدول في نافذتين وعدل سجلاً في إحداهما، فإذا ظهر التعديل في الأخرى مباشرة فالـ Websockets تعمل عبر الـ Reverse Proxy.
النسخ الاحتياطي Backup والاستعادة Restore
النسخة الاحتياطية الكاملة لـ NocoDB تتكون من أربعة أشياء: قاعدة PostgreSQL كاملة لأن فيها التعريفات والبيانات معاً، ومجلد nocodb_data الذي فيه المرفقات، والملفان compose.yaml و.env. ولا تنس الملف الأخير، والسبب أن فيه كلمة مرور القاعدة التي يحتاجها NC_DB، وسر JWT الذي بدونه تنقطع جلسات الدخول بعد الاستعادة، أما رموز الـ API فمحفوظة في القاعدة نفسها وتعود معها. وتفريغ القاعدة Dump يتم بالصيغة المخصصة لـ PostgreSQL والخدمة تعمل كما يلي:
cd /opt/nocodb
mkdir -p backups
docker compose exec -T db pg_dump -U nocodb -Fc nocodb > backups/nocodb-$(date +%F).dump
docker run --rm -v nocodb_data:/data:ro -v "$PWD/backups":/backup alpine:3.24 tar czf /backup/nocodb-files-$(date +%F).tar.gz -C /data .وللاستعادة على سيرفر جديد انسخ compose.yaml و.env، وشغل القاعدة وحدها، واستعد التفريغ بالأداة pg_restore، وبعدها استعد المرفقات ثم شغل التطبيق:
docker compose up -d db
docker compose exec -T db pg_restore -U nocodb -d nocodb --clean --if-exists --no-owner < backups/nocodb-2026-09-26.dump
docker run --rm -v nocodb_data:/data -v "$PWD/backups":/backup alpine:3.24 tar xzf /backup/nocodb-files-2026-09-26.tar.gz -C /data
docker compose up -dوبعد الاستعادة قارن عدد السجلات في جداولك بما كان في الأصل، وجرب الاستعادة على سيرفر اختبار كل بضعة أشهر، والسبب أن النسخة الاحتياطية التي لم تجرب استعادتها لا يمكن الاعتماد عليها يوم تحتاجها. وللنسخ اليومي الآلي استخدم أداة مثل restic مع cron، وانقل النسخ خارج السيرفر.
تحديث NocoDB إلى إصدار أحدث Upgrade
إصدارات NocoDB تصدر بوتيرة سريعة، وأرقامها مبنية على التاريخ مثل 2026.09.0، وكل إصدار يطبق ترحيلات Migrations على قاعدة التعريفات عند الإقلاع، وبعدها لا يمكنك العودة إلى إصدار أقدم إلا من نسخة احتياطية، لذلك خذ نسخة احتياطية قبل كل تحديث، والخطوات كما يلي:
- اقرأ ملاحظات الإصدار Release Notes، وخاصة ما يخص متغيرات البيئة التي ألغيت أو تغيرت أسماؤها.
- خذ تفريغاً للقاعدة كما في القسم السابق.
- غير الوسم Tag في
compose.yamlإلى الإصدار الجديد، ثم نفذ الأوامر التالية:
cd /opt/nocodb
docker compose pull
docker compose up -d
docker compose logs -f nocodbوانتظر حتى تظهر الرسالة App started successfully. وتصبح الحالة healthy. أما PostgreSQL فتحديثه داخل الفرع 17، من 17.11 إلى 17.12 مثلاً، يكفيه تغيير الوسم، ولكن الانتقال إلى إصدار رئيسي Major Version جديد مثل 18 يتطلب تفريغاً ثم استعادة، والسبب أن ملفات البيانات لا تتوافق بين الإصدارات الرئيسية، ولاحظ أيضاً أن الـ Image الخاصة بـ PostgreSQL 18 غيرت مسار البيانات الافتراضي، فلا تغير الوسم إلى 18 على نفس الـ Volume.
مشكلات شائعة وحلولها
NocoDB لا يبدأ بسبب خطأ في الاتصال بالقاعدة
راجع السجلات Logs بالأمر docker compose logs nocodb، وغالباً سوف تجد السبب واحداً من اثنين: الأول أن كلمة المرور فيها رموز تكسر رابط NC_DB، والحل أن تولدها بالخيار -hex، والثاني أنك غيرت POSTGRES_PASSWORD بعد تهيئة القاعدة، وPostgreSQL لا يقرأ هذا المتغير إلا عند الإنشاء الأول، فتبقى كلمة المرور القديمة هي الصحيحة داخل القاعدة.
صفحة فارغة أو أخطاء CORS خلف الـ Reverse Proxy
تأكد أن NC_SITE_URL يطابق النطاق الذي تفتحه حرفاً بحرف ومعه https://، ثم أعد إنشاء الـ Container بعد التعديل، وإذا لم تظهر التحديثات الحية ففعل Websockets Support في الـ Reverse Proxy.
الدعوات ورسائل استعادة كلمة المرور لا تصل
هناك سببان محتملان: SMTP غير مضبوط، أو NC_SITE_URL غير مضبوط فتخرج الرسائل بروابط خاطئة، لذلك اضبط البريد من إعدادات المدير ثم أرسل رسالة اختبار. وإذا فقدت كلمة مرور المدير الأعلى والبريد غير مضبوط، فضع NC_ADMIN_EMAIL وNC_ADMIN_PASSWORD معاً في البيئة، وأعد إنشاء الـ Container حتى يعين كلمة مرور ذلك الحساب، ثم احذف المتغيرين. ولاحظ أن كلمة المرور يجب أن تكون 8 حروف على الأقل وفيها حرف كبير ورقم ورمز، وأنك إذا وضعت البريد وحده فسوف يتوقف NocoDB عند الإقلاع برسالة Missing admin password.
الواجهة بطيئة مع الجداول الكبيرة
تأكد أن Redis متصل عبر NC_REDIS_URL، وأن ذاكرة الـ Container كافية بالأمر docker stats، والجداول التي فيها عشرات الآلاف من السجلات تستفيد من الفهارس Indexes في PostgreSQL على الأعمدة التي تفرز وتصفي بها كثيراً.
فشل رفع مرفق كبير
الحد يأتي غالباً من الـ Reverse Proxy أو من Cloudflare، وتجد تفاصيله في دليل حدود حجم رفع الملفات، ولكن لـ NocoDB نفسه أيضاً حد لحجم جسم الطلب Request Body وقيمته الافتراضية 1 ميجابايت، وترفعه بالمتغير NC_REQUEST_BODY_SIZE الموثق مع بقية متغيرات البيئة.
الخلاصة
وصلنا لنهاية الموضوع، وأهم ما فيه:
- ملفات Excel المشتركة لا تتحقق من البيانات ولا تمنع تعارض التعديلات، وAirtable يحل ذلك ولكن بياناتك تبقى عند شركة أخرى وتدفع عن كل مستخدم، وNocoDB يعطيك تجربة قريبة منه وبياناتك في PostgreSQL على سيرفرك.
- رخصة NocoDB منذ يناير 2026 هي Sustainable Use License، وهي تسمح بالاستخدام الداخلي دون رسوم، وتمنع بيعه كخدمة لعملائك دون رخصة تجارية.
- ثبت
NC_AUTH_JWT_SECRETوNC_SITE_URLفي الإعداد، وولد كلمة مرور القاعدة بالخيار-hex. - سجل حساب المدير فور التشغيل، ثم أغلق التسجيل المفتوح بـ
NC_INVITE_ONLY_SIGNUP. - رموز الـ API في النسخة المجانية كاملة الصلاحيات ولا تنتهي، لذلك أنشئها من مستخدم مخصص لكل تكامل.
- انسخ القاعدة والمرفقات و
.envمعاً، وجرب الاستعادة، وخذ نسخة قبل كل تحديث لأن الترحيلات لا رجوع عنها إلا من النسخة الاحتياطية.
سجل التحديثات
- سبتمبر 2026: كتابة الدليل واختباره على NocoDB 2026.09.0 مع PostgreSQL 17.11.
- أكتوبر 2026: مراجعة الدليل وتحديثه إلى NocoDB 2026.09.1، وإضافة تغيير الرخصة إلى Sustainable Use License، وتصحيح ما يتأثر بسر JWT عند الاستعادة، وتوضيح صلاحيات رموز الـ API ودور الـ worker.