امتلاك حسابك الاجتماعي فكرة جميلة، إلى أن تدرك أن الحساب يعيش على خادم شخص آخر، وفق قواعده ومدة تشغيله. خادم Mastodon الخاص بك يحل ذلك: معرّفك هو @you@your-domain، ولا أحد يستطيع إيقافه غيرك. لكن المشكلة أن Mastodon ليس تطبيقًا صغيرًا. من المفيد أن تعرف ما الذي تُقدم عليه.
لمن هذا
- خادم لمستخدم واحد، لك أو للحساب الرسمي لشركتك.
- مجتمع صغير من الأصدقاء أو فريق مشروع — عشرات الأشخاص، لا الآلاف.
لأي شيء أكبر، أنت تدير خدمة لها واجبات إشراف وبلاغات إساءة وبنية تحتية حقيقية. هذا حديث آخر.
ما يحتاجه فعلًا
يشغّل Mastodon عدة عمليات معًا: تطبيق الويب المبني على Rails، وعمّال Sidekiq في الخلفية، وخادم بث، وPostgreSQL وRedis. وبسبب الاتحاد، يواصل خادمك جلب المنشورات والوسائط من خوادم أخرى حتى وأنت نائم.
| الخادم | الخطة |
|---|---|
| مستخدم واحد، متابعات قليلة | Small-IP — 2 vCPU، 4 GB، $16 شهريًا |
| مجتمع صغير، اتحاد نشط | Medium-IP — 4 vCPU، 6 GB، $20 شهريًا |
4 GB تعمل لكنها ضيقة؛ تتكدس طوابير Sidekiq حين يتلقى منشور شهير تتابعه آلاف الردود. 6 GB تمنحك متنفسًا. القيد الآخر هو القرص — راجع قسم الوسائط أدناه.
تحتاج أيضًا إلى نطاق وIP مخصص: الخوادم الأخرى تسلّم إلى خادمك على المنفذ 443.
التثبيت بـDocker
يأتي المستودع الرسمي بملف docker-compose.yml. على خادم Ubuntu 24.04 جديد مع Docker مثبّت:
git clone https://github.com/mastodon/mastodon.git
cd mastodon
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
touch .env.production
docker compose run --rm -v $(pwd)/.env.production:/opt/mastodon/.env.production \
web bundle exec rake mastodon:setup
docker compose up -d
تسأل مهمة الإعداد عن نطاقك، وإعدادات قاعدة البيانات وRedis (القيم الافتراضية تطابق ملف compose)، وإعدادات البريد، وأول حساب مدير. وتكتب كل شيء في .env.production. اقرأ ملاحظات الإصدار للوسم الذي اخترته — فالخطوات تتغير أحيانًا بين الإصدارات الرئيسية.
يتضمن Mastodon قالب nginx في dist/nginx.conf. انسخه إلى /etc/nginx/sites-available/، واستبدل النطاق، واحصل على شهادة بـcertbot. دليلا الـreverse proxy والنطاق يغطيان الأمرين.
البريد: استخدم مرحّلًا
يرسل Mastodon رسائل التأكيد وإعادة تعيين كلمة المرور. المنفذان 25 و465 مغلقان على خوادمنا، لذا وجّه Mastodon إلى مزوّد خارجي للبريد التعاملي عبر المنفذ 587:
SMTP_SERVER=smtp.your-provider.example
SMTP_PORT=587
SMTP_LOGIN=apikey
SMTP_PASSWORD=your-smtp-password
SMTP_FROM_ADDRESS=notifications@your-domain.example
بصراحة، كنت ستريد مرحّلًا في كل الأحوال. البريد من عنوان خادم جديد تمامًا يذهب غالبًا إلى الرسائل المزعجة؛ والمرحّل يملك السمعة التي لا تملكها بعد.
الوسائط: آكلة القرص
كل صورة وفيديو من الحسابات التي يراها خادمك يُخزَّن مؤقتًا محليًا. على خادم نشط هذه غيغابايتات أسبوعيًا. نظّف الوسائط البعيدة القديمة بشكل دوري:
docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30
ضعهما في مهمة cron يومية. إن كبر خادمك، انقل الوسائط إلى تخزين كائنات متوافق مع S3 عبر إعدادات S3_* في .env.production — عندها لا يحمل قرص الـVPS إلا قاعدة البيانات.
الصيانة
- التحديثات: اجلب الوسم الجديد، ثم
docker compose pull، وشغّل الترحيلات كما تقول ملاحظات الإصدار، وأعد التشغيل. لا تتخطَّ الإصدارات الرئيسية. - النسخ الاحتياطي: خذ تفريغًا لـPostgreSQL واحفظ
.env.productionفي مكان آمن — دون أسراره لن تنجح الاستعادة. دليل restic يغطي النسخ خارج الخادم، وManaged Backups تضيف نقاط استعادة يومية للخادم كله. - النطاق دائم. إنه محفور في عنوان كل حساب عبر الفيديفيرس. اختره قبل إنشاء أول حساب.
تبحث عن شيء أخف لدردشة فريق؟ قد يناسبك خادم Matrix أكثر.
التعليقات
لا تعليقات بعد. كن الأول.