انشر الموقع على الإنترنت
انشر على Vercel، أو على أي خادم فيه Node.js، أو كصورة Docker.
الموقع تطبيق Next.js بسيط بلا قاعدة بيانات ولا واجهة API ولا أسرار. تحقّق أولًا من أنه يُبنى على جهازك:
juicyyarn buildثم اختر إحدى الطرق الثلاث أدناه.
متغيرات البيئة
لا تحتاج إلى أي منها، لا وقت البناء ولا وقت التشغيل. المتغير الوحيد الذي تقرؤه الشيفرة مفتاح بناء اختياري:
| المتغير | متى | وظيفته |
|---|---|---|
BUILD_STANDALONE | البناء | القيمة true تجعل yarn build يكتب خادمًا مستقلًا في .next/standalone. يضبطه ملف Dockerfile؛ واتركه غير مضبوط في كل مكان آخر. |
Vercel
ضع المجلد في مستودع Git
ادفع المجلد
juicyإلى GitHub أو GitLab أو Bitbucket. يستثني.gitignoreبالفعلnode_modulesومخرجات البناء.استورده في Vercel
في Vercel، أضف مشروعًا جديدًا من ذلك المستودع. يتعرّف على Next.js؛ فأبقِ إعدادات البناء الافتراضية.
اجعل Vercel يستخدم Yarn 4
قبل النشر الأول، أضف متغير بيئة واحدًا إلى المشروع، حتى يثبّت Vercel الحزم بإصدار Yarn المثبّت في
package.json:متغير بيئة في VercelENABLE_EXPERIMENTAL_COREPACK=1انشر
ابدأ النشر. كل دفع إلى المستودع ينشر الموقع من جديد.
النتيجة المتوقعة: يستجيب الموقع على عنوانه في Vercel، ثم على نطاقك بعد إضافته في إعدادات المشروع.
أي خادم فيه Node.js
على خادم فيه Node.js 22 أو أحدث، انسخ المجلد juicy، ثم ثبّته وابنِه وشغّله:
juicycorepack enable
yarn install
yarn build
yarn startيستمع على المنفذ 3030. وجّه نطاقك إليه عبر وكيل عكسي مثل Nginx أو Caddy، وأبقِه يعمل باستخدام مدير عمليات مثل pm2 أو خدمة systemd.
يتجاهل yarn start المتغير PORT. على مضيف يحدد المنفذ بنفسه، أخبره أن التطبيق يستمع على 3030، أو شغّله بـ yarn next start -p $PORT.
Docker
الصورة نفسها التي تشغّلها محليًا تعمل على الخادم. تقدّم بناءً مستقلًا على المنفذ 3030 ولا تحتاج إلى أي متغيرات. على الخادم، من المجلد juicy:
juicydocker build -t juicy .
docker run -d --restart unless-stopped --name juicy -p 3030:3030 juicyيعيد --restart unless-stopped تشغيلها بعد إعادة تشغيل الخادم. وجّه نطاقك إلى المنفذ 3030 عبر وكيل عكسي. وأي مضيف يشغّل حاوية من ملف Dockerfile يستطيع بناءها بالطريقة نفسها.
لتحديث الموقع، ابنِ الصورة مرة أخرى، ثم استبدل الحاوية:
juicydocker build -t juicy .
docker rm -f juicy
docker run -d --restart unless-stopped --name juicy -p 3030:3030 juicy