Kendi sosyal hesabınıza sahip olmak güzel bir fikir, ta ki hesabın başkasının sunucusunda, onun kurallarına ve çalışma süresine bağlı yaşadığını fark edene kadar. Kendi Mastodon sunucunuz bunu çözer: kullanıcı adınız @you@your-domain olur ve onu sizden başka kimse kapatamaz. İşin püf noktası şu: Mastodon küçük bir uygulama değil. Neye girdiğinizi bilmekte fayda var.
Kimler için
- Kendiniz veya şirketinizin resmi hesabı için tek kullanıcılı bir sunucu.
- Arkadaşlardan ya da bir proje ekibinden oluşan küçük bir topluluk — binlerce değil, onlarca kişi.
Bundan büyüğü için moderasyon sorumlulukları, kötüye kullanım şikâyetleri ve gerçek altyapısı olan bir servis işletiyorsunuz demektir. O başka bir konu.
Gerçekte neye ihtiyaç duyar
Mastodon aynı anda birkaç süreç çalıştırır: Rails web uygulaması, arka planda Sidekiq işçileri, bir akış sunucusu, PostgreSQL ve Redis. Federasyon sayesinde sunucunuz siz uyurken bile diğer sunuculardan gönderi ve medya çekmeye devam eder.
| Sunucu | Plan |
|---|---|
| Tek kullanıcı, az takip | Small-IP — 2 vCPU, 4 GB, $16/ay |
| Küçük topluluk, aktif federasyon | Medium-IP — 4 vCPU, 6 GB, $20/ay |
4 GB çalışır ama sıkışıktır; takip ettiğiniz popüler bir gönderi binlerce yanıt aldığında Sidekiq kuyrukları birikir. 6 GB nefes alacak alan bırakır. Diğer kısıt disktir — aşağıdaki medya bölümüne bakın.
Ayrıca bir alan adına ve özel bir IP'ye ihtiyacınız var: diğer sunucular sizinkine 443 portundan teslim eder.
Docker ile kurulum
Resmî depo bir docker-compose.yml içerir. Docker kurulu temiz bir Ubuntu 24.04 sunucusunda:
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
Kurulum görevi alan adınızı, veritabanı ve Redis ayarlarını (varsayılanlar compose dosyasıyla uyumlu), e-posta ayarlarını ve ilk yönetici hesabını sorar. Hepsini .env.production dosyasına yazar. Seçtiğiniz etiketin sürüm notlarını okuyun — adımlar ana sürümler arasında zaman zaman değişir.
Mastodon, dist/nginx.conf içinde bir nginx şablonu sunar. Onu /etc/nginx/sites-available/ dizinine kopyalayın, alan adını değiştirin ve certbot ile bir sertifika alın. Reverse proxy ve alan adı rehberlerimiz ikisini de anlatıyor.
E-posta: bir aktarıcı kullanın
Mastodon onay ve şifre sıfırlama e-postaları gönderir. Sunucularımızda 25 ve 465 portları kapalıdır, bu yüzden Mastodon'u 587 portu üzerinden harici bir işlemsel e-posta sağlayıcısına yönlendirin:
SMTP_SERVER=smtp.your-provider.example
SMTP_PORT=587
SMTP_LOGIN=apikey
SMTP_PASSWORD=your-smtp-password
SMTP_FROM_ADDRESS=notifications@your-domain.example
Açıkçası bir aktarıcıyı zaten isterdiniz. Yepyeni bir sunucu IP'sinden giden e-postalar genellikle spam'e düşer; aktarıcının sizin henüz sahip olmadığınız bir itibarı vardır.
Medya: disk yiyici
Sunucunuzun gördüğü hesaplardaki her görsel ve video yerel olarak önbelleğe alınır. Hareketli bir sunucuda bu haftada gigabaytlar demektir. Eski uzak medyayı düzenli olarak temizleyin:
docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30
Bunları günlük bir cron görevine koyun. Sunucunuz büyürse, .env.production içindeki S3_* ayarlarıyla medyayı S3 uyumlu nesne depolamaya taşıyın — böylece VPS diskinde yalnızca veritabanı kalır.
Bakım
- Güncellemeler: yeni etiketi çekin,
docker compose pull, sürüm notlarının dediği gibi migration'ları çalıştırın, yeniden başlatın. Ana sürümleri atlamayın. - Yedekler: PostgreSQL dökümü alın ve
.env.productiondosyasını güvende tutun — içindeki sırlar olmadan geri yükleme çalışmaz. restic rehberimiz sunucu dışı kopyaları anlatıyor, Managed Backups de günlük tam sunucu geri yükleme noktaları ekler. - Alan adı kalıcıdır. Fediverse genelinde her hesabın adresine işlenmiştir. İlk hesabı oluşturmadan önce seçin.
Ekip sohbeti için daha hafif bir şey mi istiyorsunuz? Bir Matrix sunucusu daha uygun olabilir.
Yorumlar
Henüz yorum yok. İlk olun.