নিজের সোশ্যাল অ্যাকাউন্টের মালিক হওয়া ভালো ভাবনা, যতক্ষণ না বুঝতে পারেন অ্যাকাউন্টটা অন্য কারও সার্ভারে, তাদের নিয়ম আর আপটাইমের অধীনে থাকে। নিজের 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 সার্ভার বেশি মানাবে।
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।