خادم Raspberry Pi غير متصل بالإنترنت

يوضح لك هذا الدليل كيفية تهيئة جهاز Raspberry Pi كنقطة اتصال Wi-Fi محلية تخدم كوليبري.

هناك عدة أنواع من أنظمة تشغيل Raspberry Pi. هذا الدليل مخصص ومختبر على نظام Raspbian، الخيار الاكثر شعبيةً بين أنظمة التشغيل، والمبرمج استناداً على نظام Debian.

المتطلبات الأساسية

Raspberry Pi and accessories

جهاز Raspberry Pi 3

  • إصدار Raspberry Pi Model 3 وما بعد
  • بطاقة ذاكرة معاد تهيئتها من نوع MicroSD > ٤ جيغا بايت (يوصى بـ ٦٤ جيغا بايت أو وحدة تخزين USB مرفقة)
  • قارئ بطاقة الذاكرة لحاسوب محمول أو حاسوب مكتبي من أجل التدوين على بطاقة الذاكرة من نوع MicroSD
  • أحدث ملف لنظام Raspbian بامتداد .img
  • الاتصال بالإنترنت (لإعداد الجهاز)
  • يتم استخدام بطاقة ذاكرة داخلية من نوع MicroSD للنظام الأساسي، ووسائط تخزين خارجية للمحتويات (فلاش ديشك ٦٤ جيغا بايت مثلاً). ننصح بأن يكون لديك كيبل من نوع ethernet للاتصال بالإنترنت أثناء التثبيت وجلب المحتويات لكوليبري.

Tip

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

أدلة البدء

يوفر هذا الدليل إعداداً تدريجياً لكوليبري غير أنه لا يحاول شرح المفاهيم الأساسية لجهاز Raspberry Pi الخاص بك. في حال كنت جديداً على النظام، فنحن نشجعك على قراءة دليل البدء الرسمي للحصول على معرفة أساسية حول إعداد جهازك.

هل لديك شك بخصوص أي نظام Raspbian يجب اختياره؟ ننصح باستخدام Raspbian Lite إذا كنت مرتاحاً للعمل في بيئة ذات محطة طرفية واحدة فقط ولا تحتوي على واجهة مستخدم تصويرية. إن استخدام إصدار سطح المكتب سيستهلك المزيد من وحدة المعالجة المركزية ومن الذاكرة والطاقة الكهربائية. وأخيراً ، لديك خيار إيقاف تشغيل بيئة سطح المكتب حالما تنتهي من إعداد الجهاز.

نحن نقوم بتثبيت كوليبري كإحدى آخر الخطوات المتبعة. ولكن يرجى قراءة ومتابعة الخطوات السابقة.

إعداد بطاقة الذاكرة

تعمل الاوامر التالية على أنظمة لينوكس/macOS من أجل إعداد ملفات .img المتوفرة. ستحتاج أيضاً إلى معرفة نقطة ربط الجهاز الخاص بقارئ الذواكر. على نظام لينوكس، عادة ما يكون الأمر /dev/mmcblk0 مسؤولاً عن بطاقة 0th في قارئ الذواكر الخاص بك.

# Unpack the .zip into memory and write it to <device node>
unzip -p /path/to/raspbian-stretch-lite.zip | sudo dd of=/dev/mmcblk123 bs=4M conv=fsync

Tip

قم بقراءة الأدلة الرسمية لإعداد البطاقة الخاصة بك: نسخ ملفات .img

Tip

قم بتحديد بطاقة الذاكرة من نوع MicroSD الخاصة بك بناءً على تجارب الآخرين والمعايير الفنية. للمزيد من المعلومات، قم بقراءة هذا المسار لمنتديات مجتمعنا.

تحديث البرنامج

بعد تثبيت وتشغيل Raspberry Pi الخاص بك، ننصح بترقية كافة البرامج على الجهاز:

sudo apt update
sudo apt upgrade
sudo reboot  # Ensure that updates are active

تحديث البرامج الأساسية

قم بتشغيل sudo rpi-update لتحديث البرامج الأساسية.. لا شيء في هذا البرنامج التعليمي يستلزم ذلك، إلا أننا نوصى به دائماً كونه قد يساعد بحل مشكلات الأجهزة وتحسين الأداء بمرور الوقت. لا يمكنك تكرار ذلك من خلال نسخ بطاقات ذاكرة من نوع MicroSD، ينبغي عليك تكرار هذه الخطوة لكل جهاز Raspberry Pi جديد تقوم بتثبيته.

التهيئة العامة للنظام

قم بتشغيل sudo raspi-config من أجل الخيارات العامة للإعداد مثل نموذج لوحة المفاتيح والمنطقة الزمنية.. إلخ.

Warning

قم دائماً بتغيير كلمة المرور الخاصة بك بعد إعداد الجهاز. كلمة المرور الافتراضية للمستخدم pi هي raspberry.

إعداد نقطة الاتصال

يحتوي جهاز Raspberry Pi 3 على محول Wi-Fi داخلي يمكن أن يعمل كنقطة وصول، وبالتالي يمنح الأجهزة الأخرى إمكانية الاتصال بـ Raspberry Pi من خلال Wi-Fi. ندعو Raspberry Pi في هذه الحالة بـ نقطة إتصال.

نحن نفترض أنك ستحتاج إلى وصل Raspberry Pi بالإنترنت قبل إعداد نقطة الاتصال وبعده. أسهل طريقة لذلك هي من خلال اتصال كبل Ethernet خاص بـ Raspberry Pi. وبذلك، لن تضطر إلى تعطيل وتفعيل تكوين Wi-Fi في كل مرة.

  • من الممكن إعداد الجهاز بحيث يقوم تلقائياً باستخدام واجهة ethernet بشكل مدخل للانترنت عندما يتم وصل الكبل.
  • في حال كنت بحاجة إلى الاتصال بالإنترنت عن طريق شبكة Wi-Fi، سيتوجب عليك تعطيل نقطة الاتصال ومن ثم الاتصال من خلال إدارة الشبكة العادية.

تثبيت برنامج نقطة الوصول hostapd وخادم dnsmasq

في سبيل خدمة العملاء على نقطة اتصال Wi-Fi محلية، يلزمك Raspberry Pi ليكون بمثابة:

  • نقطة وصول
  • خادم بروتوكول إعداد المضيف الحيوي DHCP
  • خادم DNS

يتم التعامل مع نقطة الوصول من قبل حزمة hostapd وخادم DHCP وخادم DNS المتاحان من خلال حزمة dnsmasq. سنقوم بتثبيت وتهيئة كل منهما في هذا القسم. لمعلومات أكثر تفصيلاً، انظر الى مستندات Raspberry Pi المتاحة عبر الإنترنت.

sudo apt install dnsmasq hostapd

إعداد IP ثابت

في البداية، ستحتاج واجهة خادم الشبكة اللاسلكية wlan0 إلى أن تملك عنوان IP يمكن توقعه من دون أن تحاول الحصول عليه من خادم آخر. ندعو هذا العنوان IP ثابت.

يتم تعريفه في ملف التكوين /etc/dhcpcd.conf، والذي يمكنك تحريره من خلال الأمر أدناه.

sudo nano /etc/dhcpcd.conf

قم باستخدام مفاتيح الأسهم للانتقال إلى نهاية الملف، ثم قم بنسخ ولصق النص التالي واضغط CTRL + X للحفظ والخروج.

interface wlan0
    static ip_address=192.168.4.1/24
    nohook resolv.conf, wpa_supplicant

بعد ذلك، قم بإتاحة DNS المحلي الحالي الخاص بك

بعد تثبيت حزمتي hostapd و dnsmasq وإعداد IP ثابت، عليك أن تعيد تشغيل النظام.

sudo reboot

بعد إعادة التشغيل، يمكنك أن تتأكد من أن النظام يعمل باستخدام عنوان IP الثابت عن طريق تشغيل الأمر ipconfig ومعاينة أنّ wlan0 يمتلك عنوان IP الجديد بشكل مطبوع. ينبغي أن يحتوي على هذا المُخرَج (لاحظ عنوان IP):

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.1  netmask 255.255.255.0  broadcast 192.168.4.255
        inet6 fe80::e02e:4991:29ac:f076  prefixlen 64  scopeid 0x20<link>

تهيئة DHCP و DNS

نقوم بإنشاء ملف تهيئة جديد لـ dnsmasq في الموقع المناسب ومن ثم نبدأ بتحريره:

sudo nano /etc/dnsmasq.d/hotspot.conf

قم بنسخ ولصق النص التالي، ثم قم بالضغط على CTRL + X للحفظ والخروج.

# Gateway + DNS server
dhcp-option=3,192.168.4.1
dhcp-option=6,192.168.4.1

# Let the Raspberry Pi resolve to all DNS queries
address=/#/192.168.4.1

Warning

تتخطى هذه الإعدادات إمكانية الاتصال بمصدر عبر الإنترنت باستخدام Wi-Fi. لا يزال بالإمكان الاتصال بالإنترنت عن طريق كبل ethernet، وبجميع الأحوال ستحتاج إلى تهيئة مزود DNS في /etc/resolve.conf. في حال كنت لا تعرفه، تستطيع استخدام عنوان غوغل 8.8.8.8 كما في هذا المثال:

echo "nameserver 8.8.8.8" > /etc/resolv.conf

تهيئة نقطة الوصول

ستحتاج إلى كتابة ملف تهيئة بمعلومات حول شبكة Wi-Fi المحلية الخاصة بك.

sudo nano /etc/default/hostapd

في الملف، قم بالنسخ في التكوين التالي لتهيئة اسم الشبكة وقناة Wi-Fi (التردد) ووضع النطاق الترددي (نوصي بتردد 2.4 جيغا هرتز بوضع 'g'). قم بضبط hw_mode=a لاستخدام تردد 5 جيغا هرتز. قم بالضغط على CTRL + X للحفظ والخروج.

interface=wlan0
driver=nl80211
ssid=Offline Library
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0

# Remove the '#' in front of below lines to set a password 'Password'
# wpa=2
# wpa_passphrase=Password
# wpa_key_mgmt=WPA-PSK
# wpa_pairwise=TKIP
# rsn_pairwise=CCMP

قم بعد ذلك بتحرير /etc/default/hostapd من أجل تفعيل تهيئة الملف الذي كتبناه للتو:

sudo nano /etc/default/hostapd

قم بإضافة النص التالي في أسفل الملف ثم قم بالضغط على CTRL + X للحفظ والخروج.

DAEMON_CONF="/etc/hostapd/hostapd.conf"

أخيراً، قم بتشغيل خدمة نظام نقطة الوصول hostapd بالإضافة إلى DHCP وخادم DNS dnsmasq:

sudo systemctl start hostapd
sudo systemctl start dnsmasq

إعداد "بوابة محدودة"

ليس عليك إعداد "بوابة محدودة"، لكنها فكرة جيدة، حيث أن السلوك سيحسن من تجربة المستخدم. لن يخمن المستخدمون مواقع الخدمات (hostname / domain) على Raspberry Pi، والعديد من الأجهزة تدعم عرض صفحة الترحيب الخاصة بك بشكل تلقائي حالما تتصل مع Wi-Fi.

Captive portal screenshot

سيظهر هذا النوع من الحوار على العديد من الأجهزة عند قيامها بالكشف عن اتصال Wi-Fi ناجح دون اتصال بالإنترنت.

قمنا في الخطوة السابقة بتكوين Raspberry Pi لإعلام الأجهزة المتواجدة على نقطة الاتصال المحلية غير المتصلة بالإنترنت أنه مهما كانت المصادر التي يطلبونها مثل http://domain.com، يجب أن تحل عنوان IP الخاص بـ Raspberry Pi وهو 192.168.4.1.

أولاً، قم بتثبيت خادم HTTP nginx:

sudo apt install nginx

ستحتاج بعد ذلك إلى تحرير وملائمة صفحة البوابة المحدودة الافتراضية الخاصة بك. يمكنك استخدام هذا النموذج.

قم بنسخ محتويات النموذج من خلال تحرير /var/www/html/index.html:

sudo nano /var/www/html/index.html

يمكنك استخدام CTRL + SHIFT + V للصق النص في المحطة الطرفية. قم بالضغط على CTRL + X للحفظ والخروج.

تثبيت كوليبري

أولاً قم باتباع الإرشادات التالية لتثبيت كوليبري على Raspberry Pi.

بعد إكمال التثبيت، يمكنك إتاحة كوليبري على المنفذ :80 إضافة إلى :8080. سيتيح ذلك إمكانية كتابة kolibri.library في شريط عنوان المتصفح، وسيظهر بفضل بوابتنا المحدودة.

لكي يتيح لك خادم Nginx على الشبكة الوصول لخدمة كوليبري، قم بتحرير /etc/nginx/sites-available/kolibri ومن ثم أضف ما يعرف بـ مضيف إفتراضي:

sudo nano /etc/nginx/sites-available/kolibri

قم بنسخ ولصق ما يلي في ملف التهيئة:

server {
  listen 80;
  listen [::]:80;

  server_name kolibri kolibri.library;

  location / {
    proxy_pass http://127.0.0.1:8080;
  }
}

قم بالضغط على CTRL + X للخروج والحفظ. بعد ذلك، قم بتمكين التهيئة الجديدة من خلال ربطها بدليل المضيفين الظاهريين الممكّنين:

ln -s /etc/nginx/sites-available/kolibri /etc/nginx/sites-enabled/

إرفاق وحدة تخزين USB

يمتلك العديد من الأشخاص بطاقة ذاكرة من نوع MicroSD بسعة ٤ جيغابايت أو ١٦ جيغابايت تأتي مع Raspberry Pi. من أجل الحصول على محتوى أكبر، كأكاديمة خان بالكامل مثلاً، قد ترغب في إرفاق وسائط تخزين USB - فلاش ديسك أو محرك أقراص ثابت.

Tip

نقل المحتوى: في حال كان لديك مصدر USB لتخزين إضافي، يمكنك استخدام الأمر kolibri management movedirectory أو إنشاء روابط رمزية خاصة بك للحصول على مجلد البيانات في مكان آخر.

باستخدام أمر الإدارة المدمج:

# Stop kolibri
sudo systemctl kolibri stop
# Move the data
kolibri manage movedirectory /path/to/your/external_drive
# Start kolibri
sudo systemctl kolibri start

أو باستخدام الروابط الرمزية، تحتاج لتشغيل وإيقاف كوليبري والقيام بتعيين الأذونات بشكل صحيح:

# Stop kolibri
sudo systemctl kolibri stop
# Relocate the full Kolibri data and configuration user folder
sudo mv /home/pi/.kolibri /your/external/media/kolibri_data
# Ensure that the kolibri system service user owns the folder
sudo chown -R pi /your/external/media/kolibri_data
# Restore the original location with a symbolic link
sudo ln -s /your/external/media/kolibri_data /home/pi/.kolibri
# Start kolibri
sudo systemctl kolibri start

إرشادات أخرى

تنبيهات الاعدادات المحلية

قد تواجه تنبيهات من نمط: لا يمكن ضبط الإعدادات المحلية; تأكد من $LC_* و $LANG صحيحة! أثناء تثبيت البرنامج حول إعدادات النظام المحلية. عادةً ما تكون تلك إعدادات UTF-8 محلية مفقودة من الإعدادات المحلية المختارة لنظامك. يمكن إصلاح ذلك عن طريق تشغيل صيغة سطر الأوامر التالي:

# Run this and select the appropriate missing UTF-8 locales
sudo dpkg-reconfigure locales

تعطيل سطح المكتب الرسومي

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

# Run the configuration and navigate to the Boot option, selecting "Console"
sudo raspi-config

حفظ صورتك من أجل التكرار

قد ترغب بمجرد إعجابك بالإعداد بنشر العديد من أجهزة Raspberry Pi في المدارس والصفوف الدراسية المختلفة.. إلخ.

Tip

يوصى باستخدام نفس شبكة Wi-Fi SSID (أطلقنا عليها في هذا البرنامج التعليمي اسم المكتبة غير المتصلة بالإنترنت) في حال كنت تقوم بإعداد العديد من أجهزة Raspberry Pi في نفس المنطقة. ولكن يجب عليك تهيئتها على قنوات Wi-Fi مختلفة. قم بالفصل ما بينها بعدد 2، سيؤدي ذلك إلى تجنب تداخل ترددات الموجات اللاسلكية.

Warning

تكرار تسجيل جهاز كوليبري سيؤدي إلى (فشل) غير متوقع للمزامنة عبر الإنترنت.

يملك كوليبري آلية مزامنة حيث يمكن مزامنة بيانات المستخدم من جهاز إلى جهاز من خلال خدمة الاتصال بالإنترنت. يتم ذلك تلقائياً عندما يكتشف كوليبري اتصالاً بالانترنت. ستحتاج إلى إلغاء تسجيل (إلغاء توفير) جهازك قبل نسخ بطاقة SD ووحدة التخزين الخارجية:

kolibri manage deprovision

بعد أن يتم نسخ بطاقة SD وجهاز التخزين الخارجي الخاصين بك، ستحتاج إلى إعادة تسجيل تثبيت كوليبري على كل جهاز. يمكنك القيام بذلك دون إزالة البيانات المثبتة:

# This will ask you questions
kolibri manage provisiondevice

خطوات مستقبلية

كوليبري هو قيد التطوير فيما يتعلق بتحسين الأداء على Raspberry Pi. نحن نضيف دعماً لعدة نوى في وحدة المعالجة المركزية، وبما أن Raspberry Pi يحتوي على 4 من هذه النوى، فسوف يستفيد بشكل كبير من هذا التطوير. تشير الاختبارات تقريبا إلى العامل 4.

سيتم إطلاق هذا العمل في حزمة مستقبلية تستهدف تطبيق UWSGI و Nginx الذي تم تكوينه مسبقاً، واللذان سيكون من الممكن إضافتهما من خلال استبدال حزمة هذا البرنامج التعليمي بالحزمة الجديدة. سنضيف مذكرة إطلاق ونقوم بتحديث هذا البرنامج التعليمي بناء على ذلك.

قد ترغب أيضاً في تثبيت خدمات أخرى مثل Kiwix. في حال تابعت هذا البرنامج التعليمي، يمكنك تثبيت Kiwix إلى جانب كوليبري عن طريق تنزيل حزمة kiwix-serve وإضافة تهيئة Nginx بشكل مماثل لتلك التي أضفناها إلى كوليبري.

إن هوائي وشريحة Wi-Fi في Raspberry Pi لا يتيحان سعة كافية للعديد من العملاء. وبالتالي، قد ترغب أيضاُ في وصل نقطة وصول أقوى. في حال كنت تنوي القيام بذلك، فيجب عليك أن تعدل خادم DHCP أو (dnsmasq) للاستماع إلى جهاز eth0 بدلاً من wlan0، مع إيقاف تشغيل Wi-Fi عن طريق إزالة hostapd.

هناك صعوبات متعددة في هذا الإعداد، إلا أننا ننصح بأن تقوم بالتركيز على الجوانب القوية من منصة Raspberry Pi platform: حيث أنها أقل تكلفة ولا تستتهلك الكثير من الطاقة. قد يمكنك أن تقوم بوصلها بالطاقة الشمسية؟ قد يمكنك أن تقوم بتطبيق نظام جيد لتوزيع تحديثات البرامج والأجزاء القابلة للتبديل؟

Tip

يخضع استخدام Raspberry Pi للعديد من الارشادات والحيل التي لم يتم وصفها هنا - يرجى مشاركة تجارب الأداء الخاصة بك في منتديات المجتمع.