Mastodon هي شبكة اجتماعية لامركزية مفتوحة المصدر. توفر ميزات التدوين المصغر تشبه إلى حد ما شبكة Twitter تتيح لك متابعة المستخدمين الآخرين ونشر الرسائل والصور. تمت كتابة Mastodon بلغة Ruby و JavaScript ، وتضمن طبيعته مفتوحة المصدر أنه يظل مفتوحًا لأي شخص لاستخدامه بشكل خاص وآمن. كما يمكن لأي شخص إنشاء خادم/مثيل Mastodon وبناء مجتمعاته الخاصة مع الأصدقاء. بالإضافة إلى ذلك ، فإن Mastodon مدعوم ومتاح من خلال تطبيقات متعددة لأنظمة iOS و Android ومنصات أخرى.
يكمن الاختلاف الجوهري بين Mastodon و Twitter بكونها برنامج حُر ومفتوح المصدر لتشغيل خدمات الشبكات الاجتماعية ذاتية الاستضافة. وعكس Twitter تتميز Mastodon بكونها شبكة لامركزية, تشكل وتدار كمجتمع اتحاد فدرالي Fediverse ,تم إنشاء هذا البرنامج بدوره حول معيار ActivityPub، وهو بروتوكول مفتوح غير مركزي يمكن للعديد من التطبيقات الأخرى والشبكات الاجتماعية التفاعل معه ,يوفر واجهة برمجة تطبيقات عميل/خادم لإنشاء وتحديث وحذف المحتوى ، بالإضافة إلى واجهة برمجة تطبيقات من خادم إلى خادم لتقديم الإشعارات والمحتوى. يمكن تكوين مجتمعات بشكل حر تسمي مثيل أو خادم ,يمكنك إعداد مثيل Mastodon على الخادم الخاص بك والاتصال بمثيلات Mastodon الأخرى.
ميزات Mastodon
- التحكم الكامل في البيانات. يمكنك تنزيل جميع مشاركاتك والترحيل إلى مثيل وخادم آخر.
- لا يتم التحكم بصلاحياتك بشكل مركزي, Mastodon غير مركزية يديرها مجتمع وليس جهة واحدة تتحكم وتفرض شروطها.
- يمكن لكل مثيل Mastodon وضع قواعده الخاصة.
- حرف كحد أقصى لكل منشور مقارنة ب 280 في Twitter.
- تصميم ويب سريع الاستجابة ومتوافق مع الجوّال. يمكن للمستخدمين القراءة أو النشر من الكمبيوتر المحمول والجهاز اللوحي والهاتف.
- 100٪ مصدر مفتوح مجاني. لا توجد نسخة تجارية مدفوعة مع ميزات أفضل أو أكثر اكتمالا.
- تتوفر تطبيقات الأجهزة المحمولة الرسمية لـ Mastodon لنظامي التشغيل iOS و Android
سنشرح هذا المقال كيفية تثبيت Mastodon على خادم Ubuntu 22.04 / 20.04
تمت كتابة Mastodon باستخدام React.js و Ruby on Rails ، باستخدام PostgreSQL كنظام إدارة قاعدة البيانات .
المتطلبات
- خادم يعمل بأحد أنظمة التشغيل التالية: Ubuntu 22.04 و 20.04 وأي توزيعة أخرى تعتمد على Debian مثل Linux Mint. يوصى باستخدام تثبيت جديد لنظام التشغيل لمنع أي مشكلات محتملة.
- وصول SSH إلى الخادم (أو استخدام Terminal إذا كنت تستخدم توزيعة سطح المكتب).
- مستخدم sudo الجذر أو الوصول إلى المستخدم الجذر.
- اسم نطاق Domain بشير إلى عنوان IP الخاص بالخادم.
ثبيت Mastodon على Ubuntu 22.04 LTS Jammy Jellyfish
الخطوة 1: تكوين خادم قاعدة بيانات PostgreSQL
لنقم بتسجيل الدخول إلى الخادم عبر SSH أو من Terminal , يتوفر PostgreSQL عادة في مستودع أوبونتو الافتراضي ,مع هذا يفضل تثبيت أحدث إصدار من PostgreSQL عبر سطر الأوامر التالي:
echo "deb [signed-by=/etc/apt/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
نحتاج لاستيراد المفتاح العام PostgreSQL.
sudo mkdir -p /etc/apt/keyrings/ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/keyrings/postgresql.asc
من ثم سنقوم بتحديث فهرس المستودع وتثبيت PostgreSQL:
sudo apt update sudo mkdir -p /etc/apt/keyrings/
سيبدأ خادم قاعدة بيانات PostgreSQL تلقائيًا ويستمع إلى 127.0.0.1:5432 ، كما يتضح من الأمر التالي:
sudo ss -lnpt | grep postgres
إذا لم تحصل على خرج مشابه ، فمن المحتمل أن يكون ذلك بسبب عدم تشغيل خادم PostgreSQL. يمكنك تأكيد بدء خادم PostgreSQL عن طريق إصدار الأمر التالي:
sudo systemctl start postgresql
يتم إنشاء مستخدم postgres في نظام التشغيل أثناء التثبيت كمستخدم افتراضي لخادم قاعدة بيانات PostgreSQL. يمكننا استخدام sudo للتبديل إلى مستخدم postgres وتسجيل الدخول إلى وحدة تحكم ومحرر تعليمات PostgreSQL:
sudo -u postgres -i psql
لنبدأ بإنشاء قاعدة بيانات لـ Mastodon:
CREATE DATABASE mastodon;
ومن ثم بإنشاء مستخدم قاعدة بيانات:
CREATE USER mastodon;
لنقم بتعيين كلمة مرور لهذا المستخدم:
ALTER USER mastodon WITH ENCRYPTED PASSWORD 'your_preferred_password';
لنمنح هذا المستخدم الإذن لإنشاء قاعدة بيانات:
ALTER USER mastodon createdb;
قم بتعيين هذا المستخدم كمالك لقاعدة بيانات Mastodon:
ALTER DATABASE mastodon OWNER TO mastodon;
تم اعداد قاعدة البيانات يمكننا تسجيل الخروج من مجرر أوامر PostgreSQL:
\q
الخطوة الثانية: تثبيت Ruby على Ubuntu 22.04 / 20.04
يتطلب Mastodon روبي 2.5+. يتضمن مستودع Ubuntu 22.04 / 20.04 حزمة روبي ، لذا قم بتشغيل الأمر التالي لتثبيته:
sudo apt install ruby ruby-dev
للتحقق من رقم إصدار Ruby الخاص بك ، قم بتشغيل:
ruby -v
الخطوة 3: تنزيل وتكوين Mastodon
لنبدأ إنشاء مستخدم Mastodon:
sudo adduser mastodon --system --group --disabled-login
من ثم تثبيت أداة git في حال عدم تثبيتها سابقا:
sudo apt install git
قم بتشغيل الأمر التالي لاستنساخ مستودع كود Mastodon من Github.
git clone https://github.com/tootsuite/mastodon.git
أنشئ الدليل / var / www / ، إذا لم يكن موجود وانقل دليل mastodon إلى / var / www /:
sudo mkdir -p /var/www/ sudo mv mastodon/ /var/www/
نحتاج تغيير المالك إلى mastodon:
sudo chown mastodon:mastodon /var/www/mastodon/ -R
قم بتغيير الدليل وتحقق من أحدث إصدار مستقر من Mastodon. يمكنك الانتقال إلى صفحة إصدارات Github لمشاهدة أحدث إصدار ثابت. أنا أستخدم الآن الإصدار 4.0.2.
cd /var/www/mastodon/ sudo -u mastodon git checkout v4.0.2
تثبيت bundler مدير ملحقات روبي.
sudo gem install bundler
تثبيت Node.js
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash - sudo apt-get install -y nodejs sudo apt-get install gcc g++ make curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update && sudo apt-get install yarn
لنقم بتثبيت Yarn ، وهو مدير حزم Node.js.
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - sudo apt update sudo apt -y install yarn
تثبيت الحزم المطلوبة لتجميع التعليمات البرمجية المصدر.
sudo apt install redis-server optipng pngquant jhead jpegoptim gifsicle nodejs imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file g++ libprotobuf-dev protobuf-compiler pkg-config gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev libidn11-dev libicu-dev libjemalloc-dev
ثم قم بتثبيت حزم ملحقات لـ Mastodon.
sudo -u mastodon bundle config deployment 'true' sudo -u mastodon bundle config without 'development test' sudo -u mastodon bundle install -j$(getconf _NPROCESSORS_ONLN)
الخطوة التالية هي تشغيل معالج الإعداد وبدء تثبيت mastodon:
sudo -u mastodon RAILS_ENV=production bundle exec rake mastodon:setup
أولاً ، سوف يطرح عليك سلسلة من الأسئلة:
- سم المجال Domain name: اختر اسم المجال لاستخدامه لمثيل Mastodon الخاص بك.ان كنت تمتلك نطاق حقيقي وعنوان ipيشير له . في مثالنا سنختار سيرفر محلي localhost .
- تمكين وضع المستخدم الفردي Enable single user mode: إذا كنت تريد أن يتمكن الزوار من التسجيل في مثيل Mastodon الخاص بك ، فلا تقم بتمكين وضع المستخدم الفردي.
- هل تستخدم حاوية Are you using Docker to run Mastodon في مثالنا الحالي الاجابة لا
- PostgreSQL host: 127.0.0.1
- PostgreSQL port: 5432
- PostgreSQL database: mastodon
- PostgreSQL user password ادخل كلمة المرور التي استخدمتها في الخطوة الاولي اعلاه.
- Redis host: 127.0.0.1
- Redis port: 6379
- Redis password:فقط اضغط على Enter ، لأنه لا توجد كلمة مرور لـ Redis.
- Do you want to store uploaded files on the cloud? إذا كنت ترغب في تخزين الملفات التي تم تحميلها بواسطة المستخدم في سحابة S3 ، فيمكنك اختيار نعم. سنختار حاليا تخزين الملفات على الخادم مباشرة ، سنختار لا.
- E-mail address to send e-mails “from : يمكنك الضغط على Enter لاستخدام عنوان البريد الإلكتروني الافتراضي للمرسل.
- Send a test e-mail with this configuration right now? اختر نعم لإرسال بريد إلكتروني تجريبي في حال اعدادك لخادم .SMTP
- Send test e-mail to: أدخل عنوان البريد الإلكتروني للاختبار.
- Save configuration? اختر “نعم” بالطبع.
إذا واجهت مشكلة بالاتصال وخطا أثناء إكمال الأمر السابق يمكن البدء بالأمر التالي :
yarn install --network-timeout 10000000
All done! You can now power on the Mastodon server 🐘 Do you want to create an admin user straight away? Yes Username: admin E-mail: abakdash@gmail.com You can login with the password: f8dcf98b3530e28815516ad5e7a64f07 You can change your password once you login. bakdash@bakdash-Satellite-C850-B908:/var/www/mastodon$
بعد الانتهاء يمكنك الآن تشغيل خادم Mastodon لأول مرة.
الخطوة 4: ابدأ تشغيل Mastodon
يوفر Mastodon قوالب خدمة systemd مريحة. يمكننا نسخها إلى الدليل / etc / sysetmd / system /.
sudo cp /var/www/mastodon/dist/mastodon*.service /etc/systemd/system/
نحتاج إلى إجراء بعض التغييرات على ملفات الخدمة. لنقم بتغيير دليل العمل من / home / mastodon / live / إلى / var / www / mastodon / :
sudo sed -i 's/home\/mastodon\/live/var\/www\/mastodon/g' /etc/systemd/system/mastodon-*.service
قم بتغيير /home/mastodon/.rbenv/shims/bundle إلى / usr / local / bin / bundle.
sudo sed -i 's/home\/mastodon\/.rbenv\/shims/usr\/local\/bin/g' /etc/systemd/system/mastodon-*.service
أعد تحميل systemd لتصبح التغييرات سارية المفعول :
sudo systemctl daemon-reload
ابدأ خدمات النظام الثلاثة:
sudo systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
تأكد من أنهم جميعًا في حالة نشطة (قيد التشغيل):
sudo systemctl status mastodon-web mastodon-sidekiq mastodon-streaming
انتظر بضع ثوانٍ ، ثم قم بتشغيل الأمر التالي للتحقق مما إذا كان Mastodon يُدرج في المنفذ 3000.
إذا كان Mastodon يعمل بشكل صحيح ، فيجب أن يبدو كالتالي:
في حال كان المنفذ 3000 محجوز لخدمة اخرى، فأنت بحاجة إلى تحرير الملف /etc/systemd/system/mastodon-web.service.
sudo gedit etc/systemd/system/mastodon-web.service
ابحث عن السطر التالي Environment=”PORT=3000″ قم بتغيير رقم المنفذ مثل 3001 ، لذلك سوف يستمع Mastodon على المنفذ 3001. أعد تحميل systemd وأعد تشغيل Mastodon.
sudo systemctl daemon-reload sudo systemctl restart mastodon-web
الخطوة 5: تكوين Nginx Reverse Proxy
لتثبيت خادم الويب Nginx من مستودع برامج Ubuntu 22.04 / 20.04 الافتراضي.عبر الامر التالي:
sudo apt install nginx
انسخ ملف تكوين قالب Nginx:
sudo cp /var/www/mastodon/dist/nginx.conf /etc/nginx/conf.d/mastodon.conf
قم بتحرير الملف الجديد:
sudo gedit /etc/nginx/conf.d/mastodon.conf
ابحث عن السطر التالي المنفذ 80 و المنفذ 443:
server_name example.com; عدل الى اسم النطاق
ابحث عن السطر التالي المنفذ 80 و المنفذ 443:
root /home/mastodon/live/public;
غيره الى :
root /var/www/mastodon/public;
ابحث عن السطرين التاليين:
# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
قم بتغييرها إلى ما يلي ، بحيث يستخدم Nginx بشكل مؤقت شهادة TLS موقعة ذاتيًا. سنحصل على شهادة Let’s Encrypt الصالحة لاحقًا:
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
sudo mkdir -p /var/nginx/cache/ // لفحص اعدادات Nginx. sudo nginx -t sudo systemctl reload nginx
الآن يجب أن تكون قادرًا على رؤية صفحة مثيل Mastodon على السيرفر المحلي او اسم النطاق الذي اعتمدته .
الخطوة 7: تفعيل HTTPS
لتشفير حركة مرور HTTP ، يمكننا تمكين HTTPS عن طريق تثبيت شهادة TLS مجانية صادرة من Let’s Encrypt. قم بتشغيل الأمر التالي لتثبيت عميل Let’s Encrypt (certbot) على خادم Ubuntu 22.04 / 20.04.
sudo apt install certbot python3-certbot-nginx
بعد ذلك ، قم بتشغيل الأمر التالي للحصول على شهادة TLS وتثبيتها باستخدام اسم النطاق خاصتك والبريد الالكتروني:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d social.example.com
الصورة التالية لمثال افتراضي للنتيجة :
ويمكنك الوصول إلى صفحة Mastodon عبر HTTPS (https://social.example.com). او https://localhost حسب خيارات التثبيت
ويمكنك تسجيل الدخول باستخدام حساب المسؤول الذي تم إنشاؤه في الخطوة 3. بعد تسجيل الدخول ، يجب عليك تغيير كلمة المرور واجراء الاعدادات الخاصة بمثيل Mastodon كما ترغب.
بمكنك الانتقال إلى صفحة إدارة المثيل بالانتقال إلى example.com/admin/settings/edit. تتيح لك صفحة الإدارة تغيير شكل ومظهر وسلوك المثيل الخاص بك.
إذا كان المثيل الخاص بك قيد التشغيل ولكن به مشكلات ، فيمكنك تحري الخلل وإصلاحه من لوحة معلومات Sidekiq. إما أن تحدد Sidekiq من قائمة الإدارة أو انتقل إلى example.com/sidekiq لرؤية لوحة القيادة.
عندما تكون مستعدًا لجعل المثيل متاحا للعامه، يمكنك إضافته إلى القائمة في Instances.social عن طريق ملء نموذج المسؤول.
ﻻ