حين يسمع كثير من أصحاب المواقع كلمة «ASP.NET» يقفز إلى ذهنهم فورًا: Windows Server وIIS وترخيص باهظ. كان هذا صحيحًا لسنوات، لكنه لم يعد كذلك. مع تحوّل منصّة Microsoft إلى .NET الحديث المتعدّد المنصّات، صار تشغيل ASP.NET Core على Ubuntu خيارًا رسميًا ومدعومًا بالكامل — بل هو في كثير من مشاريع الاستضافة الخيار الأبسط والأخفّ والأقلّ تكلفة. في هذا الدليل من مرام هوست نشرح متى يغنيك Ubuntu عن Windows Server تمامًا، وكيف تعمل البنية عمليًا، ومتى يبقى Windows ضروريًا فعلًا.
⚡ الإجابة المختصرة
Ubuntu 24.04 + ASP.NET Core + Nginx + MySQL/PostgreSQL. أما إذا اعتمد تطبيقك على .NET Framework القديم أو ASP.NET Web Forms أو خصائص IIS أو Windows Authentication أو مكوّنات COM/ActiveX، فيبقى Windows Server هو الخيار الصحيح. القاعدة: لا تقرّر بناءً على كلمة «ASP.NET» وحدها، بل على إصدار .NET والمكوّنات التي يعتمد عليها المشروع.
الفرق الجوهري: .NET Framework القديم مقابل ASP.NET Core الحديث
وجود كلمة «ASP.NET» في اسم المشروع لا يعني تلقائيًا أن الخادم يجب أن يعمل بنظام Windows. لا بدّ أولًا من التفريق بين تقنيتين مختلفتين جذريًا:
- .NET Framework القديم (ASP.NET التقليدي): يشمل ASP.NET Web Forms وASP.NET MVC القديم المبني على .NET Framework 4.x. هذه التطبيقات مرتبطة ببيئة Windows وقد تحتاج Windows Server وIIS.
- ASP.NET Core الحديث: المبني على .NET 8 أو .NET 9 أو .NET 10 — سواء كان MVC أو Web API أو Minimal APIs أو Blazor في السيناريوهات المدعومة. هذا متعدّد المنصّات (Cross-platform) ويعمل على Windows وLinux وmacOS.
الخلاصة: معرفة إصدار .NET الذي بُني عليه المشروع هي أول خطوة قبل شراء أي VPS. تطبيق ASP.NET Core حديث يفتح لك باب Linux على مصراعيه.
هل يعمل ASP.NET Core على Ubuntu فعلًا؟
نعم، وبشكل رسمي مدعوم من Microsoft. توفّر Microsoft حزمًا رسمية لتثبيت .NET على Ubuntu، وإصدار Ubuntu 24.04 LTS مدرَج ضمن الإصدارات المدعومة في وثائق Microsoft الرسمية لتثبيت .NET على Ubuntu. عمليًا، وعند تشغيل ASP.NET Core على Ubuntu، يمكنك تطوير المشروع على Windows باستخدام Visual Studio ثم نشره على Ubuntu Server، ويعمل بشكل طبيعي طالما أن كل المكتبات المستخدمة تدعم Linux.
هذا ما فتح المجال أمام الشركات لاعتماد بيئة Ubuntu + ASP.NET Core + MySQL/PostgreSQL + Nginx بدل Windows Server + IIS + SQL Server في كل تطبيق لا يحتاج خصائص Windows تحديدًا. ولهذا صار تشغيل ASP.NET Core على Ubuntu ممارسة إنتاجية شائعة لا مجرد تجربة.
كيف يعمل ASP.NET Core على Ubuntu؟ (Kestrel وNginx وsystemd)
عند تشغيل ASP.NET Core على Ubuntu، يحتوي التطبيق أصلًا على خادم ويب داخلي يُسمّى Kestrel. لكن في بيئات الإنتاج لا يُفتح Kestrel مباشرة للعالم الخارجي، بل يوضع خلف Nginx كوكيل عكسي (Reverse Proxy) — وهو ما توثّقه Microsoft رسميًا لاستضافة ASP.NET Core على Linux مع Nginx. تسلسل الطلب:
- الزائر يفتح
https://example.comفيتّصل بـ Nginx على المنفذ 443. - Nginx (بشهادة SSL) يوجّه الطلب داخليًا إلى التطبيق العامل على
127.0.0.1:5000. - تطبيق ASP.NET Core عبر Kestrel يعالج الطلب ويستعلم من قاعدة البيانات على
127.0.0.1:3306. - يعود الردّ عبر Nginx إلى الزائر — دون أن يُفتح المنفذ 5000 أو 3306 للإنترنت إطلاقًا.
إذا كنت تشغّل عدّة مواقع من عنوان واحد، فهذا بالضبط دور الوكيل العكسي؛ راجِع دليلنا حول إنشاء Reverse Proxy لنشر عدّة مواقع من عنوان IP واحد. Nginx يوجّه كل دومين إلى منفذ التطبيق المناسب داخليًا.
تشغيل ASP.NET Core على Ubuntu بشكل دائم عبر systemd
بدل تشغيل dotnet MyApp.dll يدويًا في الطرفية (وفقدان التطبيق عند إغلاق الجلسة)، يُنشأ للتطبيق خدمة systemd. عندها يشغّله النظام تلقائيًا بعد كل إعادة إقلاع، ويعيد تشغيله عند تعطّله، ويسجّل السجلّات. تديره بأوامر موحّدة:
sudo systemctl start myapp
sudo systemctl status myapp
sudo systemctl restart myapp
sudo systemctl enable myapp # التشغيل تلقائيًا بعد الإقلاع
بعد إعداد systemd بشكل صحيح، تسلسل الإقلاع يصبح: يعمل Ubuntu ← تبدأ الشبكة ← تبدأ قاعدة البيانات ← يبدأ تطبيق ASP.NET Core ← يبدأ Nginx ← يصبح الموقع متاحًا تلقائيًا، دون أي تدخّل يدوي.
Runtime أم SDK؟ وما قصة «Hosting Bundle»؟
هنا يقع التباس شائع: يقول المطوّر «أحتاج ASP.NET Core Hosting Bundle» فيظنّ صاحب الموقع أنه مضطرّ لشراء Windows. الحقيقة أن Hosting Bundle مصطلح خاصّ ببيئة Windows لتجهيز IIS. على Ubuntu لا تثبّته إطلاقًا، بل تثبّت:
- ASP.NET Core Runtime — يكفي إذا كان الخادم سيشغّل مشروعًا منشورًا فقط (وهو ما توصي به وثائق Microsoft لتشغيل التطبيقات).
- .NET SDK — إذا كنت تريد أيضًا بناء المشروع أو تنفيذ عمليات تطوير وتصريف (Compilation) داخل الخادم.
قواعد البيانات: MySQL وPostgreSQL وSQL Server
ASP.NET Core لا يفرض عليك قاعدة بيانات بعينها. يمكنك استخدام MySQL أو PostgreSQL أو MariaDB أو Microsoft SQL Server أو SQLite بحسب المشروع. وتثبيت MySQL على Ubuntu مباشر عبر مدير الحزم apt، ويُدار كخدمة systemd طبيعية كما في توثيق Ubuntu الرسمي لتثبيت MySQL.
قاعدة البيانات لا تحتاج Public IP
127.0.0.1:3306، ولا تفتح المنفذ 3306 للإنترنت. هذه ممارسة أفضل أمنيًا من ترك قاعدة البيانات مكشوفة دون حاجة.نقطة مهمّة: وجود Microsoft SQL Server لا يعني أن خادم الويب نفسه يجب أن يكون Windows. يمكن أن يكون خادم الويب Ubuntu + ASP.NET Core بينما يعمل SQL Server على خادم آخر — بل فصل خادم التطبيق عن خادم قاعدة البيانات ممارسة طبيعية في المشاريع الكبيرة.
IIS مقابل Nginx: المكوّنات المكافئة
الانتقال إلى تشغيل ASP.NET Core على Ubuntu ليس تعلّمًا من الصفر، بل استبدال كل مكوّن بمكافئه:
| على Windows Server | الوظيفة | على Ubuntu |
|---|---|---|
| IIS | خادم الويب / الوكيل | Nginx |
| ASP.NET Core Hosting Bundle | بيئة التشغيل | ASP.NET Core Runtime |
| Windows Services | إدارة الخدمة | systemd |
| RDP | الوصول الإداري | SSH |
| Administrator | المستخدم الأعلى | root / sudo |
| Windows Firewall | الجدار الناري | UFW / nftables |
النتيجة بالنسبة إلى الزائر واحدة تمامًا: يفتح الدومين ويصل إلى تطبيق ASP.NET Core عبر HTTPS — والاختلاف كلّه خلف الكواليس.
فرق التكلفة: ترخيص Windows مقابل Ubuntu
هذه من أهمّ النقاط عند تشغيل ASP.NET Core على Ubuntu. فـ Ubuntu Server يُستخدم دون رسوم ترخيص نظام تشغيل لكل VPS، بينما Windows Server عادةً تُضاف تكلفة ترخيصه إلى فاتورة الاستضافة. فإذا كان تطبيقك ASP.NET Core + MySQL ولا يحتوي أي عنصر يعتمد على Windows أو IIS، فقد يدفع العميل تكلفة إضافية دون أن يحصل على أي ميزة فعلية مقابلها. هنا يصبح تشغيل ASP.NET Core على Ubuntu توفيرًا حقيقيًا لا تنازلًا عن شيء.
متى تحتاج Windows Server فعلًا؟
Windows Server لم يفقد أهميّته؛ المشكلة فقط في استخدامه حين لا حاجة تقنية إليه. يبقى Windows هو الخيار الصحيح أو الإلزامي في هذه الحالات:
- .NET Framework القديم (4.x): تطبيقات المؤسسات المبنية عليه وليس على .NET الحديث.
- ASP.NET Web Forms: مرتبط ببيئة .NET Framework القديمة، وUbuntu ليس بديلًا مباشرًا له.
- اعتماد مباشر على خصائص IIS لا مكافئ مباشر لها.
- Windows Authentication وActive Directory بطريقة مرتبطة ببيئة Windows.
- مكوّنات COM / COM+ / ActiveX القديمة الخاصة بـ Windows.
- استدعاء برامج Windows خارجية (ملف EXE أو مكتبة تعمل على Windows فقط) من داخل التطبيق.
- حاجة العميل إلى RDP وسطح مكتب Windows كامل لإدارة برامج بالطريقة التقليدية.
في هذه الحالات قد يناسبك مزج البيئتين على البنية نفسها؛ راجِع كيف تنشئ عدّة خوادم Linux وWindows من لوحة Proxmox خاصة بشركتك لتشغيل ما يحتاج Windows وما يكفيه Linux جنبًا إلى جنب.
متى يكون تشغيل ASP.NET Core على Ubuntu الخيار الأمثل؟
اختر Ubuntu بثقة حين تكون كل مكوّنات المشروع متعدّدة المنصّات، ومن أوضح الأمثلة:
- ASP.NET Core Web API أو MVC حديث.
- واجهة خلفية (Backend) لتطبيق موبايل أو لواجهة React / Vue / Angular.
- منصّة SaaS أو نظام إدارة حديث أو موقع شركة مبني بـ .NET الحديث.
- تطبيق يستخدم MySQL أو PostgreSQL.
- تطبيق يعمل داخل Docker أو معمارية Microservices.
لكل هذه، لا توجد ضرورة تقنية لدفع تكلفة Windows Server. وإن كنت تنظّم دورة حياة المشروع، فدليلنا حول بناء بيئة تطوير وStaging وProduction داخل منصّة واحدة يكمّل الصورة.
أي إصدار .NET تختار في 2026؟
تعتمد Microsoft نمطًا ثابتًا: الإصدارات الزوجية طويلة الدعم (LTS) والفردية قصيرة الدعم (STS). لذلك:
- .NET 10 (LTS): إصدار الدعم طويل الأمد الحالي، وهو الخيار الأنسب لأي مشروع جديد في 2026 عندما تكون مكوّناته متوافقة.
- .NET 8 و.NET 9: إصدارات أقدم تقترب من نهاية دورة دعمها — إن كنت عليها فخطّط للترقية بحسب توافق مكتباتك.
للتواريخ الدقيقة لنهاية الدعم لكل إصدار، ارجع دائمًا إلى سياسة دعم .NET الرسمية من Microsoft بدل الاعتماد على أرقام قد تتغيّر.
جدول المقارنة الشامل: Ubuntu مقابل Windows Server
| المعيار | Ubuntu Server | Windows Server |
|---|---|---|
| ASP.NET Core الحديث | نعم | نعم |
| .NET 10 | نعم | نعم |
| MySQL / PostgreSQL | نعم | نعم |
| Nginx | ممتاز | ممكن |
| IIS | لا | نعم |
| .NET Framework القديم | لا (أصليًا) | نعم |
| ASP.NET Web Forms | غير مناسب | نعم |
| Windows Authentication التقليدي | محدود بحسب السيناريو | ممتاز |
| RDP / سطح مكتب | ليس الاستخدام المعتاد | نعم |
| SSH | نعم | نعم |
| رسوم ترخيص نظام التشغيل | لا توجد عادةً | قد توجد تكلفة |
| Docker | ممتاز | مدعوم |
أسئلة اسألها لمطوّرك قبل شراء السيرفر
قبل حجز VPS لتطبيق ASP.NET، اطرح على المطوّر هذه الأسئلة — إجاباتها تحسم اختيار نظام التشغيل:
- هل المشروع ASP.NET Core أم ASP.NET Framework؟ وما إصدار .NET؟
- هل كل مكتبات المشروع تدعم Linux؟ أم توجد Dependency خاصة بـ Windows؟
- هل يعتمد على IIS أو Windows Authentication تحديدًا؟
- ما قاعدة البيانات (MySQL / PostgreSQL / SQL Server)؟ وما حجمها المتوقّع؟
- كم عدد المستخدمين المتزامنين المتوقّع؟ وهل يحتاج Redis أو Background Services؟
- هل يستدعي التطبيق أي برنامج EXE خارجي يعمل على Windows فقط؟
إذا أشارت الإجابات إلى مشروع ASP.NET Core حديث متعدّد المنصّات، فإن تشغيل ASP.NET Core على Ubuntu غالبًا سيكون خيارك الأمثل.
ما مواصفات VPS التي تحتاجها؟
للمشاريع الصغيرة والمتوسّطة يمكن البدء بخادم 2 vCPU + 4GB RAM + تخزين NVMe + Ubuntu 24.04 LTS مع صلاحية root ونسخ احتياطي منتظم. الـ 2GB قد تكفي تطبيقًا صغيرًا جدًا، لكن تشغيل Ubuntu وASP.NET Core وNginx وMySQL على الخادم نفسه يجعل 4GB نقطة بداية أكثر راحة. الأنظمة الأكبر قد تحتاج 8 أو 16 أو 32GB بحسب حجم قاعدة البيانات وعدد المستخدمين المتزامنين.
ميزة تشغيل ASP.NET Core على Ubuntu هنا أنه يعمل بلا واجهة رسومية، فتتركّز موارده على التطبيق وقاعدة البيانات لا على نظام التشغيل — وهذا فرق ملموس على خادم صغير أو متوسّط. لكن لا تحسب السعة بناءً على استهلاك نظام التشغيل وحده؛ فالتطبيق وقاعدة البيانات هما أكبر مستهلكَي الذاكرة عادةً.
الأمان والنسخ الاحتياطي
مجرّد تثبيت النظام — Windows كان أو Ubuntu — لا يجعل الخادم آمنًا. اهتمّ بتحديث النظام و.NET وقاعدة البيانات وNginx، وتقييد SSH، وتفعيل الجدار الناري، وحماية سلاسل الاتصال (Connection Strings) عبر متغيّرات البيئة بدل وضعها في الشيفرة. للتفاصيل العملية راجِع دليل تأمين VPS في 10 خطوات: SSH وFail2ban والجدار الناري.
وللنسخ الاحتياطي، خذ نسخًا من قاعدة البيانات وملفات التطبيق والملفات التي يرفعها المستخدمون ومتغيّرات البيئة، واحتفظ بنسخة خارج الخادم نفسه حتى لا تفقد الموقع ونسخته معًا عند أي عطل.
الأسئلة الشائعة
هل ASP.NET Core يحتاج Windows Server؟
لا. ASP.NET Core الحديث (.NET 8/9/10) متعدّد المنصّات ويعمل على Ubuntu وLinux رسميًا. الذي يحتاج Windows هو .NET Framework القديم وASP.NET Web Forms، لا ASP.NET Core.
هل تشغيل ASP.NET Core على Ubuntu مدعوم رسميًا من Microsoft؟
نعم. توفّر Microsoft حزم .NET وASP.NET Core Runtime لـ Ubuntu وتوثّق استضافته على Linux خلف Nginx، وUbuntu 24.04 LTS من الإصدارات المدعومة رسميًا.
هل Ubuntu أسرع من Windows Server لتطبيقات .NET؟
لا قاعدة مطلقة؛ الأداء يعتمد على المعالج والتخزين وتصميم التطبيق واستعلامات قاعدة البيانات. لكن Ubuntu يعمل بلا واجهة رسومية، فيوفّر موارد أكثر للتطبيق على الخوادم الصغيرة والمتوسّطة.
هل أستطيع استخدام SQL Server مع خادم Ubuntu؟
نعم. قاعدة البيانات ونظام تشغيل خادم الويب أمران منفصلان؛ يمكن أن يعمل خادم الويب على Ubuntu بينما يعمل SQL Server على خادم آخر مناسب له.
هل أحتاج لوحة تحكّم مثل cPanel أو Plesk لتشغيل ASP.NET Core على Ubuntu؟
لا. يمكن إدارة الخادم بالكامل عبر SSH وsystemd، وهو المعتاد في بيئات الإنتاج. تُضاف لوحة تحكّم فقط عند الحاجة إليها لإدارة عدّة مواقع أو خدمات.
الخلاصة
في كثير من مشاريع ASP.NET Core الحديثة، يغنيك Ubuntu تمامًا عن Windows Server. إذا كان مشروعك ASP.NET Core + .NET حديث + MySQL/PostgreSQL ولا يعتمد على IIS أو .NET Framework القديم أو مكتبات خاصة بـ Windows، فبيئة Ubuntu + Nginx + ASP.NET Core + MySQL منصّة استضافة كاملة واحترافية. أما إذا اعتمد على المكوّنات القديمة الخاصة بـ Windows، فابقَ على Windows Server. لا تقرّر بناءً على كلمة «ASP.NET»؛ حدّد إصدار .NET وقاعدة البيانات والمكوّنات، ثم اختر نظام التشغيل الأنسب — وفي المشاريع الجديدة صار تشغيل ASP.NET Core على Ubuntu خيارًا عمليًا يستحقّ أن يكون الافتراضي.
جاهز لتشغيل تطبيق .NET الخاص بك؟
ASP.NET Core + Nginx + MySQL — أو Windows Server للمشاريع التي تحتاجه. نساعدك في اختيار البيئة الأنسب لتطبيقك بدل تحميله تكاليف لا يحتاجها. اطلب خادمك الآن ←
