IPFS على الخادم. استضافة المواقع من جهاز كمبيوتر محمول



أحتاج غالبًا إلى نشر صفحة ثابتة أو موقع ويب ، أو عرض توضيحي باستخدام نموذج ويب أو تخطيط. إن الصب في مكان ما مثل Jsfiddle في كل مرة ليس دائمًا مناسبًا ، وتحرير الإحصائيات في المضيف المحلي أسرع بكثير وأكثر متعة. تبدأ المشاكل عندما أحتاج إلى شخص ما لعرض عملي ، أو فقط افتح نفس الصفحة من الهاتف. يجب أن نستضيف جميع خيارات العمل والرسومات التي لا نهاية لها ، لكل ملفات تحميل مرة أخرى ، المسمار vhosts.

باستخدام IPFS ، يمكنك استضافة المواقع على الإنترنت مباشرة من جهاز الكمبيوتر المحمول الخاص بك ، وسيتم تطبيق جميع تحديثات الملفات المحلية على الإنترنت على الفور ، ولا تحتاج إلى تحميلها في مكان ما. عند فصل الكمبيوتر المحمول عن الشبكة ، سيظل الموقع متاحًا. يشبه IPFS Bittorrent ، فقط للويب.

في المقالة ، سننشر عقدة IPFS على الخادم ونجرب هذه التقنية عمليًا.

ما هو IPFS؟


IPFS هي شبكة p2p كبيرة وغير مركزية يتم استخدامها كخدمة لمشاركة الملفات أو أرشيف الويب أو استبدال Bittorrent . يمكن العثور على جميع الأمثلة الرائعة لاستخدام IPFS في المشاريع الحقيقية في قاعة الشهرة على الموقع الرسمي awesome.ipfs.io .

باختصار ، إنها تعمل على النحو التالي: تحصل الملفات المخزنة على تعدد عناصرها وتنقسم إلى كتل متناثرة عبر جميع العقد المهتمة. تتم مزامنة DHT على العقد ؛ عندما يتم تنزيل ملف ، يتم تجميع الكتل من العقد المختلفة (نظريًا ، الأقرب). علاوة على ذلك ، للوصول إلى الملف أو الدليل لا تحتاج إلى رفع عقدة ، يمكن الوصول إليها جميعًا من المتصفح ، مما يقودنا إلى الميزة الشائعة: يمكنك استضافة المواقع على IPFS مجانًا. ولكن الإحصائيات فقط ، فإن تحديث أي بيانات أكثر من مرة واحدة كل بضع دقائق غير مريح بسبب نفس التجزئة التي تشكل رابطًا وتتغير في كل مرة يتم فيها تغيير الملف (هناك نظام دائم لأسماء IPNS ، ولكنه بطيء). ومع ذلك ، لم يمنع هذا الرجال من Orbitdb من تحديث قاعدة البيانات إلى IPFS ، ولكن هناك بعض الفروق الدقيقة. اقرأ المزيد حول جهاز الشبكة هنا..


افترض أن لدي عقدة أقوم بتوزيع مواقع ثابتة بها مجانًا ، وأذهب إليها بنفسي وأحيانًا أحمل زملائي لإلقاء نظرة. الكمية الإجمالية للبيانات محدودة فقط بحجم القرص الخاص بي ، وسرعة التنزيل بواسطة الإنترنت المنزلي ، ما الذي يمكن أن يكون أفضل؟ ولكن هناك عدد من المشاكل. أولاً ، يحتاج IPFS نفسه إلى حد كبير من الإنترنت وقطعة صلبة من المعالج ، وحتى بدون حركة المرور ، فإنه يأخذ دائمًا بعض الموارد لمزامنة DHT. ثانيًا ، أعمل بشكل أساسي مع جهاز كمبيوتر محمول وأحتفظ بجميع الملفات الموجودة عليه ، وبالتالي فليس من الممكن دائمًا أن أحصل على ألياف نصف غيغابايت محلية الصنع في متناول اليد. لا تعد فترات الراحة القصيرة لـ IPFS مشكلة ، فهي تحافظ على ذاكرة التخزين المؤقت في DHT لعدة ساعات ، ولكنها تكلف مكانًا ما لتغادره لبضعة أيام ، والآن تنتشر جميع مشروعاتك بسعادة خارج الشبكة. يمكنك الدمج ("تذكر") الملفات على سطح المكتب ، ولكن هذا سيضاعف على الأقل حركة المرور ،وهو أيضًا ليس أمرًا مشابهًا. ماذا أفعل؟ حاولت رفع العقدة على الخادم لتفريغ جهاز الكمبيوتر المحمول ، ولكن لا يزال يتعين علي تحميل الملفات يدويًا ، مثل الاستضافة العادية. ونتيجة لذلك ، قمت بتدخين أرصفة وواجهات برمجة التطبيقات وكتبت أداة بسيطة لمزامنة إحصائياتي المحلية مع الخادم.



يحتوي IPFS على تطبيقين منفصلين: go-ipfs و js-ipfs. شبيبة الأقرب إلي ، لذا كتبت عنها. أردت أن تكون الأداة قادرة على التقاط المجلدات من مواقعي ، وتحميلها بانتظام على الشبكة أثناء عملي. يجب أن يمسك جانب الخادم بتجزئة المجلدات ويركلها حتى لا تضيع الملفات.

التثبيت والبدء


npm install ipfs -g

يحتوي Js-ipfs على برنامج تعليمي مفصل مع أمثلة ، لذلك:

git clone https://github.com/ipfs/js-ipfs.git
cd js-ipfs
npm install
npm run build

تعمل العقدة في عدة أسطر:

const IPFS = require('ipfs')
async function main () {
  const node = await IPFS.create()
}
main()

يتم تسجيل البسكويت والبذور له ، ولكن هذا يكفي للبدء.

نكتب وظيفة


بعد ذلك ، تحتاج إلى نقل الملفات إلى العقدة وتحميلها إلى IPFS. للقيام بذلك ، استخدم node.addخيار { recursive: true }المجلدات. يمكن تمرير العنوان في وسيطات عند بدء التشغيل ، وحفظه عن طريق الأمر. من المهم تسجيل التجزئة الأخيرة فقط - من المجلد الجذر:



تم نقل المجلد بالكامل إلى الشبكة بنجاح. سيتم فتح الموقع عبر الرابط ، ويمكن التحقق من المجلد نفسه على webford الخاص بـ IPFS:



بعد ذلك ، لجعل عملية الحفظ ملائمة ، أضفت الحفظ باستخدام رقم الإصدار والنشر في IPNS عبرnode.name.publish. لكن الحفظ يدوياً أمر ممل! أريد أن أتمكن من مشاهدة الموقع المحدث بالسرعة التي أرى بها تغييرات في المضيف المحلي ، مما يعني أن التحديث يجب أن يحدث تلقائيًا. وإذا نسيت فجأة حفظ شيء ما ، وقم بإيقاف تشغيل الكمبيوتر المحمول والعودة إلى المنزل ، فسيتم حفظ الإصدار الحالي ليس فقط في المحرر ، ولكن أيضًا على الشبكة. سنقوم بالحفظ التلقائي بشكل افتراضي مرة واحدة كل 10 دقائق ، مع القدرة على تغيير الفاصل الزمني لمعدلات عمل مختلفة. بالمناسبة ، إذا لم تتغير الملفات منذ الحفظ الأخير ، فلن تتغير التجزئة أيضًا.



رائع ، ولكن حتى الآن نقوم بتوزيع جميع الملفات من الجهاز المحلي. حان الوقت لربط عقدة الخادم! نأخذ pubsub التجريبي ، ونحصل على الموضوع من الحجج عند بدء التشغيل ونحاول تقديم التجزئة



المحفوظة : مرحى! الشيء الصغير هو جعل الخادم يقوم بتخزين جميع التجزئة التي تم تلقيها وركلها (node.pin.add) ، وتعليم العميل قطع عقدة عند عدم الحاجة ( node.stop).


هذه هي قائمة التنزيلات على عقدة الخادم

ما هي النتيجة؟


  • عندما أجلس لكتابة الرمز ، يتم حفظه تلقائيًا في IPFS
  • جميع الإصدارات متاحة دائمًا عبر الروابط الشخصية / ipfs / Qm ...
  • يمكنني نشر الموقع في IPNS حتى لا يتم إرسال مجموعة من الروابط إلى العميل
  • تستيقظ العقدة المحلية فقط لتحميل الملفات والاتصال بالخادم ، ثم تعود للنوم
  • محليًا ، لدي نسخة واحدة فقط من الموقع ، حركة المرور إلى التنزيلات الفردية للإصدارات الجديدة أقل بكثير من حركة مرور الخلفية لعقدة IPFS
  • يمكنني العمل أخيرًا في مضيف محلي بدون صداع مع الإصدارات

كل هذه السعادة تكلفني سعر أرخص VPS ، في حين أن هناك موارد كافية ويجب أن تكون كافية في مكان آخر لمدة عام قادم ، وبعد ذلك سيكون من الممكن شراء خادم آخر أو أرشفة الخادم القديم.

بشكل عام ، باستخدام IPFS ، يمكنك القيام بأشياء أكثر إثارة للاهتمام. أرغب بالتأكيد في تذكر هذه الأداة وكتابة واحدة جديدة ، مع لزج. في هذه الأثناء ، احتفظ بالموقع الذي كتبناه واستضافناه طوال الوقت:

https://ipfs.slipner.ru/ - مع المجال
https://ipfs.io/ipfs/QmeV7MVFSiWJr8u4dhXzEAoJgbVJsHvSUqjsbQyNL4WrD2 - IPFS
https : // gate / ipns / QmTjKBMJS8owPUXQFSMjoR4kqFNXXVKB7DqNGgyqibxuff / - IPNS عبر البوابة الرسمية

متصفح Opera مع دعم IPFS




قبل بضعة أيام فقط ، طرحت Opera Software المتصفح الأول بدعم IPFS الأصلي. ومع ذلك ، حتى الآن ، فقط في إصدار الهاتف المحمول لنظام Android. هذا يعني أنه يمكنه الوصول مباشرة إلى شبكة IPFS بدون بوابات الويب! نحن في انتظار إضافة الدعم إلى إصدار سطح المكتب.




All Articles