−25%

على الدفع السنوي لـ Windows حتى 31 أكتوبر. عرض الخطط

EQVPS

VPS لـMastodon: خادمك الصغير الخاص

استضف خادم Mastodon صغيرًا على VPS: تقدير صادق للذاكرة والقرص، تثبيت بـDocker، بريد عبر مرحّل SMTP، وتنظيف الوسائط كي لا يمتلئ القرص.

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

الصيانة

تبحث عن شيء أخف لدردشة فريق؟ قد يناسبك خادم Matrix أكثر.

جاهز للنشر؟ ادفع بالعملات المشفّرة، بلا KYC — يعمل في نحو دقيقة.

← انشر الآن

الأسئلة الشائعة

كم يحتاج خادم Mastodon من الذاكرة؟

لخادم فردي أو صغير، 4 GB هي الحد الأدنى الواقعي و6 GB مريحة. يشغّل Mastodon في الوقت نفسه عملية ويب وعمّال Sidekiq وPostgreSQL وRedis، والاتحاد يُبقي Sidekiq مشغولًا حتى حين لا ينشر أحد.

لماذا يحتاج Mastodon إلى IP مخصص؟

الخوادم الأخرى تسلّم المنشورات إلى خادمك عبر HTTPS على المنفذ 443، والناس يفتحون خادمك في المتصفح. هذا يتطلب حركة واردة على 443 إلى عنوانك الخاص، وهو ما لا تملكه خطط NAT.

كيف أرسل البريد من Mastodon؟

عبر مزوّد خارجي للبريد التعاملي بـSMTP على المنفذ 587. المنفذان 25 و465 مغلقان على خوادمنا، والمرحّل يمنحك على أي حال تسليمًا أفضل بكثير من عنوان جديد تمامًا.

لماذا يمتلئ قرصي بهذه السرعة؟

يخزّن خادمك مؤقتًا وسائط كل حساب يراه. شغّل 'tootctl media remove --days 7' بشكل دوري، أو انقل الوسائط إلى تخزين كائنات متوافق مع S3.

هل يمكنني تغيير النطاق لاحقًا؟

لا. النطاق جزء من هوية كل حساب في الفيديفيرس كله. اختره بعناية قبل إنشاء أول حساب.

التعليقات

لا تعليقات بعد. كن الأول.

اترك تعليقًا

تُراجَع التعليقات قبل ظهورها.