Maganin: أرشيف انتقل من ثلاث منصات دون أن يفقد عنواناً
ASP كلاسيكي للموقع العام، و Angular 10 للإدارة، وفاتورة Hosting بينهما. كل عنوان قديم مفهرس ما زال يعمل بعد الانتقال إلى Next.js.

Maganin شبكة عربية للصحة النفسية والاجتماعية: مقالات طويلة، واستشارات، وملفات أطباء، وتصنيفات، يقرأها من اليمين إلى اليسار أناس يبحثون عن مساعدة. وقد عاش محتواها أطول من منصتين. كان الموقع العام يعمل على ASP كلاسيكي بعناوين فهرستها محركات البحث سنوات، وكانت الإدارة على Angular 10 فوق API جافا مولّد، وبينهما نشر Hosting لم يعد أحد يريد أن يدفع له. نقلت إعادة البناء في 2026 الشبكة كلها إلى Next.js 15 للواجهات العامة وواجهتي الطبيب والإدارة، و API على Java 21 و Quarkus 3 فوق MySQL، ونشر واحد بـ Docker Compose خلف Caddy، مع بقاء كل عنوان قديم يعمل.
ما الذي تغيّر، بالأرقام
- كل عنوان قديمما زال يعمل بعد الانتقالالمسارات القديمة، بما فيها عرض المحتوى والاستشارات، تُحوَّل في الـ Middleware فتبقى سنوات من الروابط الواردة تعمل بدل أن تعطي 404 بصمت.
- من 3 إلى 1منصات جرى دمجهاموقع عام على ASP كلاسيكي، وإدارة على Angular 10 فوق API جافا مولّد، ونشر Hosting منفصل، صارت حزمة Docker Compose واحدة يستطيع المالك تشغيلها.
- 90 يوماًبقي فيها الـ Host القديم يعمل بعد التحويلليكون لأي شيء فاته جرد العناوين مكان يهبط فيه بدل أن يختفي بينما لا أحد ينتبه.
- 11خطوة مرقّمة في دليل التحويلمكتوبة ليقرأها المالك لا نحن: ابنِ، واضبط، واستعد النسخة، وتحقق من كل نوع صفحة، واخفض الـ TTL قبل يوم، وحوّل، وأبقِ الـ Host القديم، وأوقف القديم، وجدول النسخ الاحتياطي.
ما صُمم النظام لتحقيقهبُني ليعود المالك إلى النشر على منصة مُصانة بتكلفة VPS، دون أن يفقد القرّاء ولا محركات البحث العناوين التي يعرفونها أصلاً. لم تُغلق نقطة المراجعة مقابل خط الأساس المؤرشف، فلا يُدّعى هنا رقم زيارات أو ترتيب.
الأرشيف هو العمل
Maganin، ومعناها المجانين وتحمل الاسم عن قصد، كانت تنشر قبل أن يوجد الموقع الذي يحملها. مقالات طويلة، ودليل استشارات والأطباء خلفها، وتصنيفات تتيح لقارئ في ضيق أن يجد النوع الصحيح من المساعدة.
كل ما له قيمة كان الكتابة والروابط المشيرة إليها. وهذه الواقعة وحدها تحدّد كيف يُحدَّد نطاق ترحيل كهذا: أنت لا تعيد بناء موقع، أنت تنقل أصلاً وتحاول ألا تُسقطه.
ثلاث منصات، مسؤولية واحدة
كان الموقع العام على ASP كلاسيكي، بعناوين ظلّت مفهرسة سنوات. وكانت الإدارة تطبيق Angular 10 فوق API جافا مولّد، 37 Commit بين 2021 و 2022، وبينهما نشر Hosting منفصل ما زال أحدهم يدفع له.
لم يكن أحد يستطيع تغيير الموقع العام بأمان. وكان إطار الإدارة متأخراً بإصدارين رئيسيين. المحتوى والروابط المشيرة إليه هما الأصل؛ وكل ما التفّ حولهما كان المسؤولية، وكانت تتراكم بهدوء كل شهر لا يلمسها أحد.
أبقِ البيانات. استبدل الواجهات.
الكيانات التي تهم، المقالات والمحتوى والتصنيفات والاستشارات وأنواعها، انتقلت كما هي إلى API على Java 21 و Quarkus 3 بترحيلات Schema مُصدَّرة، فجاء الأرشيف سليماً وقابلاً للتراجع. وأُعيد بناء الموقع العام وواجهة الطبيب والإدارة على Next.js 15، من اليمين إلى اليسار من العنصر الجذر، بقراءات الـ API المجهولة تخدم المقالات والاستشارات والأطباء والتصنيفات.
الإبقاء على نموذج المجال هو ما يجعل الترحيل مملاً، والملل هو الهدف. كل كيان تعيد تصميمه أثناء الترحيل هو كيان لن تستطيع مقارنته بالنظام القديم حين يبدو شيء خاطئاً في الثانية صباحاً.
العناوين هي الأصل
هذا هو السؤال الذي يطرحه كل مالك فعلاً قبل الترحيل، ويستحق إجابة مباشرة: هل سنفقد ما لدينا.
لا، إن رُسمت التحويلات والـ Canonical والـ Metadata قبل التحويل لا اكتُشفت بعده. كل مسار قديم، بما فيه عرض المحتوى والاستشارات، يُحوَّل في الـ Middleware إلى موضعه الجديد. وسكربتات التنظيف في مجلد الترحيل تعيد كتابة الروابط القديمة التي تركتها المنصة السابقة داخل متون المقالات، وهذا هو الجزء الذي ينساه الناس: روابطك الداخلية هي أيضاً روابط واردة. ويبقى الـ Host القديم يعمل تسعين يوماً بعد التحويل، فيهبط ما فاته الجرد في مكان بدل أن يختفي.
تشغيله دون أن نكون في الغرفة
نشر واحد بـ Docker Compose: الـ API، وقاعدة البيانات مستعادة من النسخة المؤرشفة، و Caddy يصدر TLS تلقائياً فلا يمكن أن تنتهي شهادة لأن شخصاً نسي. ونسخة احتياطية يومية تُكتب خارج الحاويات. ونقاط Health و Metrics على مسار إدارة، موصولة قبل التحويل لا مضافة بعد أول حادثة. والأسرار تُنسخ من ملف مثال ولا تُودَع في المستودع أبداً.
والدليل 11 خطوة مرقّمة يقرأها المالك دوننا: ابنِ، واضبط، وشغّل، واستعد، وتحقق من كل نوع صفحة، واخفض الـ TTL للـ DNS قبل يوم، وحوّل، وأبقِ الـ Host القديم، وأوقف النشر القديم، وجدول النسخ الاحتياطي. الترحيل الذي لا يستطيع تشغيله إلا شخص واحد لم ينتهِ بعد.
ما لا يُدّعى
إعادة البناء عمل هندسي، وتُكتب هنا كعمل هندسي. لا تُدّعى أي نتيجة زيارات أو ترتيب لـ Maganin؛ ولم تُغلق نقطة المراجعة مقابل خط الأساس المؤرشف.
ما يمكن قوله هو أن الأرشيف على منصة مُصانة، وأن العناوين تعمل، وأن النسخ الاحتياطي يجري، وأن المالك يستطيع أن ينشر.
المزايا الرئيسية
- كل عنوان قديم، بما فيه عرض المحتوى والاستشارات، يُحوَّل في الـ Middleware، فتنجو سنوات من الروابط الواردة المتراكمة من الانتقال سليمة
- الإبقاء على نموذج المحتوى بدل إعادة تصميمه: المقالات والاستشارات والأطباء والتصنيفات وأنواع الاستشارات نُقلت بتاريخها، لأن الأرشيف هو الأصل
- API على Java 21 و Quarkus 3 مع ترحيلات Schema وأمان بالـ Token و Caching ونقاط Health و Metrics موصولة قبل التحويل لا بعده
- موقع عام على Next.js 15 من اليمين إلى اليسار من العنصر الجذر، بقراءات مجهولة فتصير المقالة صفحة يحصل عليها الزاحف والقارئ كاملة
- استعادة قاعدة البيانات من النسخة المؤرشفة مع سكربتات تنظيف تعيد كتابة الروابط القديمة التي تركتها المنصة السابقة داخل متون المقالات نفسها
- نشر واحد بـ Docker Compose مع TLS تلقائي، ونسخة احتياطية يومية لقاعدة البيانات تُكتب خارج الحاويات، وأسرار تبقى خارج المستودع
- دليل تحويل مكتوب في 11 خطوة مرقّمة، بما فيها خفض الـ TTL للـ DNS قبل يوم وإبقاء الـ Host القديم حياً تسعين يوماً
الأثر على العمل
يستطيع المالك أن يواصل النشر على منصة مُصانة، بتكلفة VPS، دون أن يفقد العناوين التي يعرفها القرّاء ومحركات البحث أصلاً. صارت ثلاث حزم واحدة. ولم تعد الإدارة متأخرة بإصدارين رئيسيين عمّا تديره. ويُكتب هذا الترحيل هنا كقصة هندسية لأنه كان كذلك: لا يُدّعى رقم زيارات أو ترتيب، ولم تُغلق نقطة المراجعة مقابل خط الأساس المؤرشف. وإن كنت تزن ترحيلاً، فالواقعة القابلة للنقل هي ترتيب الخطوات. جرد العناوين جاء قبل إعادة البناء لا بعدها.
أرسل رابط موقعك. نفحص قبل أن نسعّر.
عالق على منصة لا يستطيع أحد صيانتها، وروابطها ما زالت تحمل العمل؟ أرسل الـ Domain. تحصل على الزحف وجرد العناوين وإجابة مباشرة عمّا إذا كان الترحيل هو القرار، مكتوبة.
أو أرسل رابط موقعك ويرد عليك شخص خلال يوم عمل واحد.