−25%

روی پرداخت سالانه Windows، تا ۳۱ اکتبر. مشاهده پلن‌ها

EQVPS

VPS برای Mastodon: سرور کوچک خودتان

یک سرور کوچک Mastodon را روی VPS میزبانی کنید: برآورد صادقانه‌ی رم و دیسک، نصب با Docker، ایمیل از طریق رله‌ی SMTP و پاک‌سازی رسانه‌ها تا دیسک پر نشود.

مالک حساب اجتماعی خودتان بودن ایده‌ی جذابی است، تا وقتی متوجه شوید آن حساب روی سرور کس دیگری زندگی می‌کند، با قوانین و زمان کارکرد او. سرور Mastodon خودتان این را حل می‌کند: شناسه‌ی شما @you@your-domain است و هیچ‌کس جز خودتان نمی‌تواند خاموشش کند. ماجرا این است که Mastodon برنامه‌ی کوچکی نیست. بهتر است بدانید وارد چه چیزی می‌شوید.

برای چه کسانی است

برای هر چیز بزرگ‌تر، دارید سرویسی را اداره می‌کنید با وظایف نظارت، گزارش‌های سوءاستفاده و زیرساخت واقعی. آن بحث دیگری است.

واقعاً چه چیزهایی لازم دارد

Mastodon چند پردازه را هم‌زمان اجرا می‌کند: برنامه‌ی وب Rails، کارگرهای پس‌زمینه‌ی Sidekiq، یک سرور استریم، PostgreSQL و Redis. به خاطر فدراسیون، سرور شما حتی وقتی خوابید هم به گرفتن پست‌ها و رسانه‌ها از سرورهای دیگر ادامه می‌دهد.

سرورپلن
یک کاربر، دنبال‌شده‌های کمSmall-IP — ۲ vCPU، ۴ گیگابایت، ۱۶ دلار در ماه
جامعه‌ی کوچک، فدراسیون فعالMedium-IP — ۴ vCPU، ۶ گیگابایت، ۲۰ دلار در ماه

۴ گیگابایت کار می‌کند اما تنگ است؛ وقتی پستی محبوب که دنبالش می‌کنید هزاران پاسخ بگیرد صف‌های Sidekiq انباشته می‌شوند. ۶ گیگابایت جای نفس کشیدن می‌دهد. محدودیت دیگر دیسک است — بخش رسانه‌ها را در ادامه ببینید.

یک دامنه و یک IP اختصاصی هم لازم دارید: سرورهای دیگر روی پورت ۴۴۳ به سرور شما تحویل می‌دهند.

نصب با 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 ایمیل‌های تأیید و بازنشانی رمز می‌فرستد. پورت‌های ۲۵ و ۴۶۵ روی سرورهای ما بسته‌اند، پس Mastodon را از طریق پورت ۵۸۷ به یک سرویس‌دهنده‌ی بیرونی ایمیل تراکنشی وصل کنید:

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

آن‌ها را در یک کرون‌جاب روزانه بگذارید. اگر سرورتان بزرگ شد، رسانه‌ها را با تنظیمات S3_* در .env.production به فضای ذخیره‌سازی شیء سازگار با S3 منتقل کنید — آن‌وقت دیسک VPS فقط پایگاه داده را نگه می‌دارد.

نگهداری

دنبال چیز سبک‌تری برای چت تیمی هستید؟ شاید یک سرور Matrix بهتر جور باشد.

آماده استقرار؟ با رمزارز بپرداز، بدون KYC — در حدود یک دقیقه فعال می‌شود.

← همین حالا مستقر کن

سؤالات متداول

یک سرور Mastodon چقدر رم لازم دارد؟

برای سرور تک‌کاربره یا کوچک، ۴ گیگابایت حداقل واقع‌بینانه است و ۶ گیگابایت راحت. Mastodon هم‌زمان یک پردازه‌ی وب، کارگرهای Sidekiq، PostgreSQL و Redis را اجرا می‌کند، و فدراسیون حتی وقتی کسی چیزی منتشر نمی‌کند Sidekiq را مشغول نگه می‌دارد.

چرا Mastodon به IP اختصاصی نیاز دارد؟

سرورهای دیگر پست‌ها را از طریق HTTPS روی پورت ۴۴۳ به سرور شما تحویل می‌دهند و مردم سرور شما را در مرورگر باز می‌کنند. این به ترافیک ورودی روی ۴۴۳ به IP خودتان نیاز دارد، چیزی که پلن‌های NAT ندارند.

چطور از Mastodon ایمیل بفرستم؟

از طریق یک سرویس‌دهنده‌ی بیرونی ایمیل تراکنشی با SMTP روی پورت ۵۸۷. پورت‌های ۲۵ و ۴۶۵ روی سرورهای ما بسته‌اند، و رله در هر حال تحویل بسیار بهتری از یک IP تازه دارد.

چرا دیسکم این‌قدر سریع پر می‌شود؟

سرور شما رسانه‌های هر حسابی را که می‌بیند کش می‌کند. 'tootctl media remove --days 7' را به‌صورت زمان‌بندی‌شده اجرا کنید، یا رسانه‌ها را به فضای ذخیره‌سازی شیء سازگار با S3 منتقل کنید.

می‌توانم بعداً دامنه را عوض کنم؟

نه. دامنه بخشی از هویت هر حساب در کل فدیورس است. پیش از ساختن اولین حساب با دقت انتخابش کنید.

نظرات

هنوز نظری نیست. اولین نفر باشید.

یک نظر بگذارید

نظرات پیش از نمایش بررسی می‌شوند.