انتقل إلى المقال
Aniq-UI

Northstackشغّل Northstack محليًا

شغّل Northstack محليًا

ثبّت كل تطبيق وشغّله باستخدام Node.js و Yarn، بطرفية مستقلة لكل تطبيق.

لحزمة الحزمة الكاملة

قبل أن تبدأ: ثبّت Node.js 22.13 أو إصدارًا أحدث من 22، أو Node.js 24.11 أو أحدث، وشغّل corepack enable مرة واحدة (على Node.js 25 وما بعده، التي لا تضم Corepack، شغّل npm install -g corepack أولًا). لا حاجة إلى خادم قاعدة بيانات.

اطّلع على المتطلبات

افتح كل طرفية في المكان الذي تتوقعه الأوامر أدناه: داخل northstack-full-stack للحزمة الكاملة، أو بجانب مجلد التطبيق لحزمة واجهة API الخلفية.

قبل أن تبدأ: ثبّت Node.js 22.9 أو أحدث وشغّل corepack enable مرة واحدة (على Node.js 25 وما بعده، التي لا تضم Corepack، شغّل npm install -g corepack أولًا).

اطّلع على المتطلبات

افتح الطرفية بجانب مجلد التطبيق، حيث فككت ضغط ملف ZIP.

التطبيقالمجلدالعنوان
APIback-endlocalhost:8000محلي
لوحة تحكم مساحة العملdashboardlocalhost:3031محلي
الموقع العامwebsitelocalhost:3030محلي

شغّل واجهة API أولًا: فلوحة التحكم تقرأ كل بياناتها منها، ويستدعيها نموذج التواصل في الموقع ودفع الترخيص.

شغّل واجهة API

  1. ثبّت واضبط الإعداد

    يعمل .env.example كما هو على جهازك: SQLite في ./database.sqlite، وواجهة API على المنفذ 8000، ويُسمح للموقع (http://localhost:3030) ولوحة التحكم (http://localhost:3031) باستدعائها.

    الطرفية
    corepack enable
    cd back-end
    yarn install
    cp .env.example .env
    تواجه مشكلة؟
  2. أنشئ قاعدة البيانات

    ينشئ yarn seed الملف database.sqlite وجداوله، وأدوار المنصة وإعداداتها، ومساحة العمل التجريبية Forma Studio (12 مشروعًا مع لوحاتها، و8 أعضاء، ودعوتان، واشتراك Pro بثلاث فواتير، ومفتاح API، ونشاط الأسابيع الماضية، وثلاث محادثات مع المساعد)، ومساحة عمل ثانية لمالكها، و732 مؤسسة خلف أرقام المنصة. وينتهي بطباعة الحسابات التي تسجّل الدخول بها. تتبع التواريخ يوم تشغيله. وإعادة تشغيله على قاعدة بيانات فيها حسابات لا تضيف حسابًا ولا مساحة عمل، وتعيد إلى أدوار المنصة المدمجة صلاحياتها.

    الطرفيةفي back-end
    yarn seed
  3. شغّل الخادم

    الطرفيةفي back-end
    yarn dev

    النتيجة المتوقعة: يجيب localhost:8000/api/healthمحلي بـ "status":"ok" و"database":"up".

    تواجه مشكلة؟

شغّل واجهة API

  1. ثبّت واضبط الإعداد

    يعمل .env.example كما هو على جهازك: SQLite في ./database.sqlite، وواجهة API على المنفذ 8000، ويُسمح للموقع (http://localhost:3030) ولوحة التحكم (http://localhost:3031) باستدعائها.

    الطرفية
    corepack enable
    cd northstack-backend
    yarn install
    cp .env.example .env
    تواجه مشكلة؟
  2. أنشئ قاعدة البيانات

    ينشئ yarn seed الملف database.sqlite وجداوله، وأدوار المنصة وإعداداتها، ومساحة العمل التجريبية Forma Studio (12 مشروعًا مع لوحاتها، و8 أعضاء، ودعوتان، واشتراك Pro بثلاث فواتير، ومفتاح API، ونشاط الأسابيع الماضية، وثلاث محادثات مع المساعد)، ومساحة عمل ثانية لمالكها، و732 مؤسسة خلف أرقام المنصة. وينتهي بطباعة الحسابات التي تسجّل الدخول بها. تتبع التواريخ يوم تشغيله. وإعادة تشغيله على قاعدة بيانات فيها حسابات لا تضيف حسابًا ولا مساحة عمل، وتعيد إلى أدوار المنصة المدمجة صلاحياتها.

    الطرفيةفي northstack-backend
    yarn seed
  3. شغّل الخادم

    الطرفيةفي northstack-backend
    yarn dev

    النتيجة المتوقعة: يجيب localhost:8000/api/healthمحلي بـ "status":"ok" و"database":"up".

    تواجه مشكلة؟

كل حساب تجريبي يسجّل الدخول بكلمة المرور NorthstackDemo26!: owner@northstack.example وadmin@northstack.example وmember@northstack.example وbilling@northstack.example وplatform@northstack.example وsupport@northstack.example.

شغّل لوحة تحكم مساحة العمل

في طرفية ثانية:

  1. ثبّت واضبط الإعداد

    يوجّه ملف .env المنسوخ لوحة التحكم إلى واجهة API على المنفذ 8000 وإلى تحديثات الصلاحيات المباشرة على الخادم نفسه.

    الطرفية
    cd dashboard
    yarn install
    cp .env.example .env
  2. شغّلها وسجّل الدخول

    الطرفيةفي dashboard
    yarn dev

    النتيجة المتوقعة: يفتح localhost:3031محلي نموذج تسجيل الدخول. سجّل الدخول بـ owner@northstack.example وكلمة المرور NorthstackDemo26!.

    تواجه مشكلة؟

شغّل لوحة تحكم مساحة العمل

واجهة API ليست جزءًا من هذه الحزمة. تعمل لوحة التحكم وحدها ببياناتها التجريبية المدمجة: شغّلها من دون ملف .env.

  1. ثبّتها وشغّلها على البيانات التجريبية

    من دون .env يكون NEXT_PUBLIC_API_BASE_URL فارغًا، وتجيب كل شاشة من البيانات التجريبية داخل متصفحك.

    الطرفية
    corepack enable
    cd northstack-dashboard
    yarn install
    yarn dev

    النتيجة المتوقعة: يفتح localhost:3031محلي نموذج تسجيل الدخول مع إشعار «بيانات تجريبية» في الأسفل. يسجّل أي إدخال الدخول: يفتح owner@northstack.example مساحة عمل المالك، ويفتح كل بريد تجريبي دوره.

    تواجه مشكلة؟
  2. اربطها بواجهة API

    مع تشغيل Northstack API على http://localhost:8000/api، أوقف yarn dev وانسخ الإعدادات النموذجية وشغّله مرة أخرى. إذا كانت واجهة API تعمل في مكان آخر، فاضبط NEXT_PUBLIC_API_BASE_URL (مع /api) وNEXT_PUBLIC_WEBSOCKET_BASE_URL (من دونها) في .env على عنوانها.

    الطرفيةفي northstack-dashboard
    cp .env.example .env
    yarn dev

    النتيجة المتوقعة: سجّل الدخول بـ owner@northstack.example وكلمة المرور NorthstackDemo26!، وتقبلها واجهة API المملوءة بالبيانات. يختفي إشعار «بيانات تجريبية».

    تواجه مشكلة؟

شغّل الموقع العام

في طرفية ثالثة:

  1. ثبّت واضبط الإعداد

    كل قيمة في ملف .env المنسوخ اختيارية: فهو يوجّه الموقع إلى واجهة API على المنفذ 8000 وإلى لوحة التحكم على 3031.

    الطرفية
    cd website
    yarn install
    cp .env.example .env
  2. شغّله

    الطرفيةفي website
    yarn dev

    النتيجة المتوقعة: يفتح localhost:3030محلي الموقع بالإنجليزية؛ والعربية على /ar.

    تواجه مشكلة؟

شغّل الموقع العام

واجهة API ليست جزءًا من هذه الحزمة. يعمل الموقع وحده ببياناته التجريبية المدمجة: شغّله من دون ملف .env.

  1. ثبّتها وشغّلها على البيانات التجريبية

    من دون .env يكون NEXT_PUBLIC_API_BASE_URL فارغًا: نموذج التواصل ودفع الترخيص يجيبان داخل متصفحك ولا يرسلان شيئًا.

    الطرفية
    corepack enable
    cd northstack-website
    yarn install
    yarn dev

    النتيجة المتوقعة: يفتح localhost:3030محلي الموقع مع إشعار «بيانات تجريبية» أسفل كل صفحة؛ والعربية على /ar.

    تواجه مشكلة؟
  2. اربطها بواجهة API

    مع تشغيل Northstack API على http://localhost:8000/api، أوقف yarn dev وانسخ الإعدادات النموذجية وشغّله مرة أخرى. إذا كانت واجهة API تعمل في مكان آخر، فاضبط NEXT_PUBLIC_API_BASE_URL في .env على عنوانها، مع /api.

    الطرفيةفي northstack-website
    cp .env.example .env
    yarn dev

    النتيجة المتوقعة: يختفي إشعار «بيانات تجريبية»، ويصل نموذج التواصل والدفع إلى واجهة API الخاصة بك.

    تواجه مشكلة؟

منافذ أخرى

من دون Docker تُضبط المنافذ في الملفات. يمرّر سكربتا dev وstart للموقع في package.json القيمة -p 3030؛ ولمنفذ آخر شغّل yarn next dev -p 3040 (أو yarn next start -p 3040 بعد yarn build). تقرأ لوحة التحكم PORT من ملف .env الخاص بها (PORT=3041)، وتبدأ على 3031 من دونه. ومع واجهة API، أضف عنوان الواجهة الأمامية المنقولة إلى CORS_ORIGIN في .env الخاص بواجهة API، واضبطه هناك باسم WEBSITE_URL للموقع، أو باسم DASHBOARD_URL وFRONTEND_URL للوحة التحكم؛ واضبط NEXT_PUBLIC_SITE_URL أو NEXT_PUBLIC_BASE_URL الخاص بالواجهة الأمامية نفسها ليطابقه. ولنقل واجهة API اضبط PORT وPUBLIC_API_URL وPUBLIC_MEDIA_URL في .env الخاص بها على الرقم نفسه، واضبط NEXT_PUBLIC_API_BASE_URL في الواجهتين الأماميتين (وNEXT_PUBLIC_WEBSOCKET_BASE_URL في لوحة التحكم أيضًا).

بناء الإنتاج

المجلدات نفسها، تُبنى مرة واحدة ثم تُشغَّل. اضبط أولًا .env الخاص بواجهة API للإنتاج: مع NODE_ENV=production لا تغيّر واجهة API الجداول عند التشغيل، وترفض البدء ما دام JWT_SECRET فارغًا أو ما زال قيمة المثال، أو ما دام CORS_ORIGIN فارغًا.

ملف .env الخاص بواجهة API
NODE_ENV=production
JWT_SECRET=paste-the-generated-secret-here
CORS_ORIGIN=http://localhost:3030,http://localhost:3031
FRONTEND_URL=http://localhost:3031
DASHBOARD_URL=http://localhost:3031
WEBSITE_URL=http://localhost:3030
PUBLIC_API_URL=http://localhost:8000
PUBLIC_MEDIA_URL=http://localhost:8000/media

ولّد السر بالأمر node -e "console.log(require('crypto').randomBytes(48).toString('hex'))". ثم، في مجلد واجهة API، ابنها وأنشئ جداولها مرة واحدة مع البيانات التجريبية، وشغّلها. yarn seed:prod هو yarn seed المترجَم.

الطرفية
yarn build
yarn seed:prod
yarn start:prod

على الخادم، ابدأ فارغًا

يحمّل yarn seed:prod الحسابات التجريبية مع كلمة المرور المنشورة لها، فاستخدمه على جهازك فقط. على الخادم شغّل yarn admin:create:prod بدلًا منه: الجداول ومسؤول المنصة الخاص بك، من دون بيانات تجريبية. وبعد التحديث، يرفع yarn schema:prod الجداول إلى مستوى الكود الجديد.

البدء فارغًا

بناء الإنتاج للواجهات الأمامية

في مجلد كل واجهة أمامية، أوقف yarn dev وابنِ مرة واحدة ثم شغّل. يعمل الموقع على 3030 ولوحة التحكم على 3031.

الطرفية
yarn build
yarn start

تدمج الواجهتان الأماميتان قيم NEXT_PUBLIC_* وقت البناء، لذلك شغّل yarn build مرة أخرى بعد تغيير .env. قبل أن تنشر في أي مكان عام، اقرأ دليل النشر.

ابدأ من جديد ببيانات تجريبية جديدة

أوقف واجهة API، ثم احذف ملف قاعدة البيانات واملأه بالبيانات مرة أخرى، داخل مجلد واجهة API. هذا يحذف كل ما أنشأته.

الطرفية
rm -f database.sqlite* && yarn seed

في PowerShell:

الطرفية
Remove-Item database.sqlite*; yarn seed

يفرغ yarn reset كل جدول ويُبقي الجداول، ويحذف yarn drop كل جدول؛ شغّل yarn seed بعد أي منهما لملء قاعدة البيانات مرة أخرى. وعلى MySQL، حيث لا يوجد ملف يُحذف، ابدأ من جديد بما يلي:

الطرفية
yarn reset
yarn seed

الأوامر

المهمةAPIلوحة التحكمالموقع
التثبيتyarn installyarn installyarn install
خادم التطويرyarn dev (8000)yarn dev (3031)yarn dev (3030)
بناء الإنتاجyarn buildyarn buildyarn build
التشغيل للإنتاجyarn start:prodyarn startyarn start
ملء البيانات التجريبيةyarn seed (بعد البناء: yarn seed:prod)غير مطلوبغير مطلوب
إنشاء الجداول أو تحديثها، من دون بياناتyarn schema (بعد البناء: yarn schema:prod)غير مطلوبغير مطلوب
أول مسؤول منصة، من دون بيانات تجريبيةyarn admin:create (بعد البناء: yarn admin:create:prod)غير مطلوبغير مطلوب
إفراغ كل جدولyarn resetغير مطلوبغير مطلوب
حذف كل جدولyarn dropغير مطلوبغير مطلوب
فحص الأنواعجزء من yarn buildyarn typecheckyarn typecheck
فحص الكود (Lint)yarn lintyarn lintyarn lint

التالي

هل كان هذا مفيدًا؟

تمت مراجعته على إصدار 2026-11-06

توقفت عند خطوة؟

ابحث عن الحل قبل أن تبدأ من جديد.

حل المشكلات

تفضيلات ملفات تعريف الارتباط

نستخدم ملفات تعريف الارتباط لتعزيز تجربة التصفح الخاصة بك وتحليل حركة المرور على الموقع وتخصيص المحتوى. بالنقر على "قبول الكل"، فإنك توافق على استخدامنا لملفات تعريف الارتباط للتحليلات والإعلانات المخصصة.