اپنا سوشل اکاؤنٹ خود رکھنا اچھا خیال لگتا ہے، جب تک آپ کو احساس نہ ہو کہ وہ اکاؤنٹ کسی اور کے سرور پر، اس کے اصولوں اور اپ ٹائم کے تحت رہتا ہے۔ اپنا 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 موجود ہے۔ Docker انسٹال شدہ نئے Ubuntu 24.04 سرور پر:
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 میں dist/nginx.conf پر nginx ٹیمپلیٹ شامل ہے۔ اسے /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
سچ پوچھیں تو آپ کو ریلے ویسے بھی چاہیے ہوتا۔ بالکل نئے سرور IP سے جانے والی ای میل اکثر اسپام میں جاتی ہے؛ ریلے کے پاس وہ ساکھ ہے جو ابھی آپ کے پاس نہیں۔
میڈیا: ڈسک کھانے والا
آپ کے سرور کو نظر آنے والے اکاؤنٹس کی ہر تصویر اور ویڈیو مقامی طور پر کیش ہوتی ہے۔ مصروف سرور پر یہ ہر ہفتے گیگابائٹس بنتے ہیں۔ پرانا ریموٹ میڈیا باقاعدگی سے صاف کریں:
docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30
انہیں روزانہ کی cron جاب میں ڈالیں۔ اگر آپ کا سرور بڑھے تو .env.production کی S3_* سیٹنگز سے میڈیا کو S3 سے مطابقت رکھنے والی آبجیکٹ اسٹوریج میں منتقل کریں — پھر VPS کی ڈسک پر صرف ڈیٹابیس رہتا ہے۔
دیکھ بھال
- اپ ڈیٹس: نیا ٹیگ لائیں،
docker compose pull، ریلیز نوٹس کے مطابق مائیگریشنز چلائیں، ری اسٹارٹ کریں۔ بڑے ورژن نہ چھوڑیں۔ - بیک اپ: PostgreSQL کا ڈمپ لیں اور
.env.productionکو محفوظ رکھیں — اس کے رازوں کے بغیر بحالی کام نہیں کرے گی۔ ہماری restic گائیڈ سرور سے باہر کاپیوں کا احاطہ کرتی ہے، اور Managed Backups پورے سرور کے روزانہ ریسٹور پوائنٹس شامل کرتے ہیں۔ - ڈومین مستقل ہے۔ یہ پورے فیڈیورس میں ہر اکاؤنٹ کے ایڈریس میں درج ہے۔ پہلا اکاؤنٹ بنانے سے پہلے اسے چنیں۔
ٹیم چیٹ کے لیے کچھ ہلکا چاہیے؟ شاید Matrix سرور بہتر رہے۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔