استمع إلى المقال

Mastodon هي شبكة اجتماعية لامركزية مفتوحة المصدر. توفر ميزات التدوين المصغر تشبه إلى حد ما شبكة Twitter تتيح لك متابعة المستخدمين الآخرين ونشر الرسائل والصور. تمت كتابة Mastodon بلغة Ruby و JavaScript ، وتضمن طبيعته مفتوحة المصدر أنه يظل مفتوحًا لأي شخص لاستخدامه بشكل خاص وآمن. كما يمكن لأي شخص إنشاء خادم/مثيل Mastodon وبناء مجتمعاته الخاصة مع الأصدقاء. بالإضافة إلى ذلك ، فإن Mastodon مدعوم ومتاح من خلال تطبيقات متعددة لأنظمة iOS و Android ومنصات أخرى.

يكمن الاختلاف الجوهري بين Mastodon و Twitter بكونها برنامج حُر ومفتوح المصدر لتشغيل خدمات الشبكات الاجتماعية ذاتية الاستضافة. وعكس Twitter تتميز Mastodon بكونها شبكة لامركزية, تشكل وتدار كمجتمع اتحاد فدرالي Fediverse ,تم إنشاء هذا البرنامج بدوره حول معيار ActivityPub، وهو بروتوكول مفتوح غير مركزي يمكن للعديد من التطبيقات الأخرى والشبكات الاجتماعية التفاعل معه ,يوفر واجهة برمجة تطبيقات عميل/خادم لإنشاء وتحديث وحذف المحتوى ، بالإضافة إلى واجهة برمجة تطبيقات من خادم إلى خادم لتقديم الإشعارات والمحتوى. يمكن تكوين مجتمعات بشكل حر تسمي مثيل أو خادم ,يمكنك إعداد مثيل Mastodon على الخادم الخاص بك والاتصال بمثيلات Mastodon الأخرى.

ميزات Mastodon

  • التحكم الكامل في البيانات. يمكنك تنزيل جميع مشاركاتك والترحيل إلى مثيل وخادم آخر.
  • لا يتم التحكم بصلاحياتك بشكل مركزي, Mastodon غير مركزية يديرها مجتمع وليس جهة واحدة تتحكم وتفرض شروطها.
  • يمكن لكل مثيل Mastodon وضع قواعده الخاصة.
  • 500 حرف كحد أقصى لكل منشور مقارنة ب 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 الخاص بالخادم.

قد يهمك: إعداد وتنصيب توزيعة أبونتو سيرفرUbuntu Server 21.10 .

ثبيت 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

قد يهمك:تثبيت Node.js في أبونتو لينكس

قم بتثبيت 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: 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
Do you want to create an admin user straight away? Yes
Username: admin
E-mail: [email protected]
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.

sudo ss -lnpt | grep 3000

إذا كان Mastodon يعمل بشكل صحيح ، فيجب أن يبدو كالتالي:

تحتوي هذه الصورة على سمة alt فارغة؛ اسم الملف هو image-18.png

في حال كان المنفذ 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 LTS

لتثبيت خادم الويب 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 [email protected] -d social.example.com

الصورة التالية لمثال افتراضي للنتيجة :

ويمكنك الوصول إلى صفحة Mastodon عبر HTTPS (https://social.example.com). او https://localhost حسب خيارات التثبيت

ويمكنك تسجيل الدخول باستخدام حساب المسؤول الذي تم إنشاؤه في الخطوة 3. بعد تسجيل الدخول ، يجب عليك تغيير كلمة المرور واجراء الاعدادات الخاصة بمثيل Mastodon كما ترغب.

هل أعجبك المحتوى وتريد المزيد منه يصل إلى صندوق بريدك الإلكتروني بشكلٍ دوري؟
انضم إلى قائمة من يقدّرون محتوى إكسڤار واشترك بنشرتنا البريدية.