İçeriğe geç

Eğitimlerİletişim

Ubuntu 24.04 veya Debian 13'e Mastodon kaynaktan nasıl kurulur

Mastodon sunucusunu resmi belgelerdeki gibi kaynaktan kurun: Ruby, Node.js, PostgreSQL, Redis, Certbot'lu Nginx, systemd servisleri, yedekler ve yükseltmeler.

  • İleri
  • 90 dk okuma
  • Güncellendi

Denendiği sistemler: Ubuntu 24.04 LTS, Debian 13

Bu sayfada
  1. Ön koşullar
  2. Adım 1 — Sunucuyu güncelleyin ve güvenlik duvarını açın
  3. Adım 2 — Node.js ve PostgreSQL depolarını ekleyin
  4. Adım 3 — Sistem paketlerini kurun ve mastodon kullanıcısını oluşturun
  5. Adım 4 — PostgreSQL kullanıcısını oluşturun
  6. Adım 5 — Kodu alın ve Ruby'yi kurun
  7. Adım 6 — Ruby ve JavaScript bağımlılıklarını kurun
  8. Adım 7 — Kurulum sihirbazını çalıştırın
  9. Adım 8 — Sertifika alın ve Nginx'i yapılandırın
  10. Adım 9 — Mastodon servislerini başlatın
  11. Adım 10 — Yönetici kurulumunu tamamlayın ve medya temizliğini zamanlayın
  12. Yedekleme ve geri yükleme
  13. Mastodon güncelleme
  14. Sorun giderme
  15. Tarayıcı fil resimli hata sayfasını gösteriyor
  16. Sayfalar stil ve resim olmadan yükleniyor
  17. Onay e-postaları hiç gelmiyor
  18. Disk doluyor
  19. Bir yükseltmeden sonra bundle install Ruby sürüm hatasıyla başarısız oluyor
  20. Sonraki adımlar

Mastodon merkeziyetsiz bir sosyal ağdır: her sunucu kendi topluluğunu barındırır ve ActivityPub üzerinden binlerce başka sunucuyla federe olur. Bu rehber Mastodon'u resmi belgelerin anlattığı şekilde, kaynaktan, Ubuntu 24.04 LTS veya Debian 13 üzerine kurar: Node.js ve PostgreSQL kendi depolarından, Ruby rbenv ile, Redis, Certbot'tan Let's Encrypt sertifikası alan Nginx ve web uygulamasını, arka plan işçilerini ve streaming API'sini çalıştıran üç systemd servisi. Ardından sahip (owner) hesabını oluşturur, medya temizliğini zamanlar, yedeklemeyi ve yükseltmeleri ayarlarsınız.

Ön koşullar

  • Ubuntu 24.04 LTS veya Debian 13 çalıştıran yeni bir sunucu. Resmi rehberin hedeflediği iki sürüm bunlardır; Ubuntu 26.04 ve Debian 12 kapsanmaz.
  • sudo yetkisi ve SSH anahtarıyla girişi olan, root olmayan bir kullanıcı: Yeni bir Linux sunucusunu güvenli hale getirin ve SSH anahtarlarını ayarlayın rehberlerine bakın.
  • Sunucuyu gösteren bir A kaydına (IPv6 kullanıyorsanız AAAA kaydına) sahip social.example.com gibi bir alan adı.
  • Bir e-posta sağlayıcısından SMTP bilgileri: sunucu, port, kullanıcı adı, parola ve gönderen adresi.
  • İsteğe bağlı: medya için S3 uyumlu bir kova; örneğin Self-hosted S3 depolama rehberindeki gibi.

Mastodon projesi en düşük gereksinimleri yayınlamaz. Aşağıdaki değerler küçük bir sunucu için temkinli bir başlangıç noktasıdır, resmi rakamlar değildir:

KaynakEn düşük (resmi)Önerilen başlangıç
CPUYayınlanmamış2 vCPU
RAMYayınlanmamış4 GB; varlık (asset) derlemesi ve Sidekiq bellek ister
DiskYayınlanmamış40 GB SSD ve medya için ek alan ya da medya için nesne depolama
YazılımRuby 3.3+, PostgreSQL 14+, Redis 7.0+, Node.js 22+ (Mastodon 4.7)Aşağıdaki adımların kurduğu sürümler

Adım 1 — Sunucuyu güncelleyin ve güvenlik duvarını açın

Bir root kabuğu açın, güncellemeleri kurun ve yalnızca SSH ile web trafiğine izin verin. Resmi ön koşullar aynı portlar için iptables kuralları kullanır; ufw daha az yazarak aynı sonucu verir:

Bash
sudo -i
apt update && apt upgrade -y
apt install -y ufw
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status verbose

Adım 2 — Node.js ve PostgreSQL depolarını ekleyin

Mastodon rehberi Node.js 24'ü NodeSource'tan, PostgreSQL'i ise PostgreSQL projesinin kendi apt deposundan kurar:

Bash
apt install -y curl wget gnupg lsb-release ca-certificates
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_24.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
wget -O /usr/share/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
echo "deb [signed-by=/usr/share/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list

Adım 3 — Sistem paketlerini kurun ve mastodon kullanıcısını oluşturun

Derleme araçlarını, medya kütüphanelerini, Nginx, Node.js, Redis, PostgreSQL ve Certbot'u tek komutla kurun, Yarn'ı sağlayan corepack'i etkinleştirin ve kodun sahibi olacak yetkisiz mastodon kullanıcısını oluşturun:

Bash
apt update
apt install -y imagemagick ffmpeg libvips-tools libpq-dev libxslt1-dev file git \
  protobuf-compiler pkg-config autoconf bison build-essential \
  libssl-dev libyaml-dev libreadline-dev zlib1g-dev libffi-dev libgdbm-dev \
  nginx nodejs redis-server postgresql certbot python3-certbot-nginx \
  libidn-dev libicu-dev libjemalloc-dev
corepack enable
adduser --disabled-password mastodon
node -v

node -v bir v24 sürümü yazmalıdır. adduser isteğe bağlı kullanıcı bilgilerini sorar; atlamak için Enter tuşuna basın.

Adım 4 — PostgreSQL kullanıcısını oluşturun

Mastodon PostgreSQL'e yerel soket üzerinden aynı adlı Linux kullanıcısı olarak bağlanır; bu yüzden veritabanı kullanıcısının parolaya ihtiyacı yoktur:

Bash
sudo -u postgres psql
SQL
CREATE USER mastodon CREATEDB;
\q

Daha büyük sunucular için rehber, PostgreSQL'i /etc/postgresql/18/main/postgresql.conf içinde pgTune değerleriyle ayarlamayı ve PostgreSQL'i yeniden başlatmayı önerir. Küçük bir sunucu varsayılanlarla sorunsuz çalışır.

Adım 5 — Kodu alın ve Ruby'yi kurun

mastodon kullanıcısına geçin, depoyu klonlayın, en son kararlı sürüm etiketine geçin ve sürümün istediği Ruby sürümünü rbenv ile kurun:

Bash
su - mastodon
git clone https://github.com/mastodon/mastodon.git live && cd live
git checkout $(git tag -l | grep '^v[0-9.]*$' | sort -V | tail -n 1)
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install
ruby -v

rbenv install sürümü depodaki .ruby-version dosyasından okur ve Ruby'yi jemalloc ile derler; bu birkaç dakika sürer. ruby -v aynı sürümü yazmalıdır.

Adım 6 — Ruby ve JavaScript bağımlılıklarını kurun

Hâlâ mastodon kullanıcısı olarak, ~/live içinde:

Bash
bundle config deployment 'true'
bundle config without 'development test'
bundle install
yarn install

İki bundle config satırı yalnızca ilk kurulumda gerekir. Her iki kurulum da biraz zaman alır; buradaki hatalar genellikle Adım 3'ten bir sistem paketinin eksik olduğunu gösterir.

Adım 7 — Kurulum sihirbazını çalıştırın

Etkileşimli sihirbaz .env.production dosyasını yazar, tüm sırları ve şifreleme anahtarlarını üretir, veritabanı şemasını oluşturur, varlıkları derler ve ilk yönetici hesabını oluşturabilir:

Bash
RAILS_ENV=production bin/rails mastodon:setup

Soruları şöyle yanıtlayın:

SoruBu rehber için yanıt
Domain namesocial.example.com; bu değer LOCAL_DOMAIN olur
Single user modeSunucu yalnızca sizin için değilse No
Are you using DockerNo
PostgreSQL host, port, database, user, passwordVarsayılanları kabul edin: /var/run/postgresql, 5432, mastodon_production, mastodon, boş parola
Redis host, port, passwordVarsayılanları kabul edin: localhost, 6379, boş parola
Store uploaded files on the cloudYerel depolama için No; S3 uyumlu kovanızı girmek için Yes
Send e-mails from localhostNo; ardından SMTP sunucunuzu (örneğin smtp.example.com), 587 numaralı portu, kullanıcı adını, parolayı ve gönderen adresini girin
Send a test e-mailSMTP'yi şimdi denemek için Yes
Save configuration, prepare the database, compile assetsYes
Create an admin userYes; bir kullanıcı adı ve e-posta seçin, ardından sihirbazın yazdığı parolayı kopyalayın

Sihirbaz bittiğinde root kabuğuna dönün:

Bash
exit

Adım 8 — Sertifika alın ve Nginx'i yapılandırın

Certbot'un Nginx eklentisiyle bir sertifika isteyin, ardından depodaki Mastodon Nginx yapılandırmasını kurun:

Bash
certbot certonly --nginx -d social.example.com
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
rm /etc/nginx/sites-enabled/default
sed -i 's/example\.com/social.example.com/g' /etc/nginx/sites-available/mastodon
nano /etc/nginx/sites-available/mastodon

sed komutu şablondaki yer tutucu alan adını sizinkiyle değiştirir; social.example.com yerine gerçek alan adınızı kullanın. Düzenleyicide yorum satırı hâlindeki iki sertifika satırını bulun ve baştaki # işaretini kaldırarak şu hâle getirin:

Nginx
ssl_certificate     /etc/letsencrypt/live/social.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/social.example.com/privkey.pem;

Nginx'in mastodon ev dizinindeki varlık dosyalarını okumasına izin verin, yapılandırmayı test edin ve Nginx'i yeniden başlatın:

Bash
chmod o+x /home/mastodon
nginx -t
systemctl restart nginx

https://social.example.com adresi şimdi Mastodon'un fil resimli hata sayfasını gösterir; çünkü Mastodon süreçleri henüz çalışmıyor. Certbot paketi sertifikayı kendiliğinden yeniler; certbot renew --dry-run yenilemeyi test eder.

Adım 9 — Mastodon servislerini başlatın

Depo; web uygulaması (Puma), arka plan işçileri (Sidekiq) ve streaming API için systemd unit dosyalarıyla gelir. Bunlar bu rehberin kullandığı mastodon kullanıcısını ve /home/mastodon/live yolunu varsayar:

Bash
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
systemctl status mastodon-web mastodon-sidekiq mastodon-streaming --no-pager

Üçü de active (running) olmalıdır. https://social.example.com adresini açın, sihirbazdaki yönetici hesabıyla giriş yapın ve parolasını Preferences > Account altında değiştirin.

Adım 10 — Yönetici kurulumunu tamamlayın ve medya temizliğini zamanlayın

Sihirbazda yönetici hesabını atladıysanız sahip hesabını tootctl ile oluşturun. Mastodon kurulum rehberi tarayıcıdan kaydın varsayılan olarak kapalı olduğunu belirtir; ilk hesabı oluşturmanın yolu budur:

Bash
su - mastodon
cd live
RAILS_ENV=production bin/tootctl accounts create alice --email [email protected] --confirmed --role Owner
RAILS_ENV=production bin/tootctl accounts modify alice --approve
exit

İlk komut rastgele bir parola yazar. Ardından Preferences > Administration > Server Settings sayfasına gidin ve iletişim kullanıcı adını, bir iş e-postasını, sunucu açıklamasını ve kuralları ya da davranış kurallarını doldurun. Kayıtları açmadan önce aynı bölümdeki kayıt modunu gözden geçirin; onay gerektirmek her yeni hesabı kontrol etmenizi sağlar.

Mastodon diğer sunuculardan gelen medyayı ve bağlantı önizlemelerini önbelleğe alır ve bu önbellek her gün büyür. tootctl media remove, belirli bir gün sayısından (varsayılan 7) eski önbelleğe alınmış uzak ekleri siler; tootctl preview_cards remove ise bağlantı önizleme küçük resimlerini siler (varsayılan 180 gün). İkisini de mastodon kullanıcısı olarak zamanlayın:

Bash
su - mastodon
crontab -e
Text
PATH=/home/mastodon/.rbenv/shims:/home/mastodon/.rbenv/bin:/usr/local/bin:/usr/bin:/bin
RAILS_ENV=production
15 3 * * * cd /home/mastodon/live && bin/tootctl media remove --days 7
45 3 * * 0 cd /home/mastodon/live && bin/tootctl preview_cards remove --days 180

Kaydedin, düzenleyiciden çıkın ve exit çalıştırın. PATH satırı, cron'un rbenv ile kurulan Ruby sürümünü bulmasını sağlar. RAILS_ENV=production bin/tootctl media usage medyanın ne kadar alan kullandığını gösterir.

Yedekleme ve geri yükleme

Mastodon'un yedekleme rehberi önem sırasına göre dört şey listeler: PostgreSQL veritabanı (kaybı tüm sunucunun kaybı demektir), sırları içeren .env.production dosyası (kaybı herkesin oturumunu kapatır ve iki faktörlü kimlik doğrulamayı bozar), yerel depolama kullanıyorsanız public/system içindeki kullanıcı yüklemeleri ve en az kritik olan Redis veritabanı. Bu komutları root kabuğunda çalıştırın:

Bash
mkdir -p /opt/backups
chmod 700 /opt/backups
sudo -u mastodon pg_dump -Fc mastodon_production > /opt/backups/mastodon-db-$(date +%F).dump
cp /home/mastodon/live/.env.production /opt/backups/mastodon-env-$(date +%F)
redis-cli SAVE
cp /var/lib/redis/dump.rdb /opt/backups/mastodon-redis-$(date +%F).rdb
tar czf /opt/backups/mastodon-system-$(date +%F).tar.gz --exclude=system/cache -C /home/mastodon/live public/system
ls -lh /opt/backups

--exclude=system/cache seçeneği, Mastodon'un yeniden çekebileceği diğer sunuculardan önbelleğe alınmış medyayı atlar. Nesne depolama kullanıyorsanız public/system yerine kovayı sağlayıcınızın araçlarıyla yedekleyin. En iyi yedekler sunucu dışındaki yedeklerdir; bu dosyaları başka bir makineye kopyalayın.

Yeni bir sunucuya geri yüklemek için Adım 1–6'yı aynı sürüm etiketiyle izleyin, ardından Adım 8'i ve Adım 9'un cp ile daemon-reload satırlarını servisleri başlatmadan uygulayın. Kurulum sihirbazını çalıştırmayın. Sonra yedekleri root olarak yükleyin:

Bash
systemctl stop 'mastodon-*.service'
sudo -u mastodon createdb -T template0 mastodon_production
sudo -u mastodon pg_restore -Fc -U mastodon -n public --no-owner --role=mastodon -d mastodon_production < /opt/backups/mastodon-db-2026-10-09.dump
cp /opt/backups/mastodon-env-2026-10-09 /home/mastodon/live/.env.production
chown mastodon:mastodon /home/mastodon/live/.env.production
tar xzf /opt/backups/mastodon-system-2026-10-09.tar.gz -C /home/mastodon/live
chown -R mastodon:mastodon /home/mastodon/live/public/system
systemctl stop redis-server
cp /opt/backups/mastodon-redis-2026-10-09.rdb /var/lib/redis/dump.rdb
chown redis:redis /var/lib/redis/dump.rdb
systemctl start redis-server

Son olarak varlıkları ve ana akışları yeniden oluşturun, servisleri başlatın ve Nginx'i yeniden başlatın:

Bash
su - mastodon
cd live
RAILS_ENV=production bundle exec rails assets:precompile
RAILS_ENV=production ./bin/tootctl feeds build
exit
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
systemctl restart nginx

Mastodon güncelleme

GitHub'daki her Mastodon sürümünün kendi yükseltme talimatları vardır ve adımların sırası önemlidir. Mastodon'un yükseltme rehberi yama sürümlerini atlayabileceğinizi, ancak her ara sürüm serisinden (minor) en az bir sürümü kurmanız ve her talimatı en az bir kez çalıştırmanız gerektiğini söyler. Kendi sürümünüzle hedef sürüm arasındaki her sürümün notlarını okuyun ve önce yedek alın.

Aşağıdaki adımlar 4.7 sürümlerinin Docker dışı talimatlarını izler. v4.7.3 değerini yükselttiğiniz sürümle değiştirin:

Bash
su - mastodon
cd live
git fetch --tags
git checkout v4.7.3
bundle install
yarn install --immutable
RAILS_ENV=production bundle exec rails assets:precompile
SKIP_POST_DEPLOYMENT_MIGRATIONS=true RAILS_ENV=production bundle exec rails db:migrate
exit

Süreçleri yeniden başlatın, ardından kalan dağıtım sonrası (post-deployment) geçişlerini çalıştırın:

Bash
systemctl restart mastodon-sidekiq
systemctl reload mastodon-web
systemctl restart mastodon-streaming
su - mastodon
cd live
RAILS_ENV=production bundle exec rails db:migrate
exit

systemctl reload mastodon-web kesinti olmadan aşamalı bir yeniden başlatma yapar; streaming servisini yeniden başlatmak istemcilerin bağlantısını kısa süreliğine keser. Sürüm notları yeni bir Ruby sürümü istediğinde ruby-build'i git -C ~/.rbenv/plugins/ruby-build pull ile güncelleyin ve bundle install öncesinde ~/live içinde RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install çalıştırın.

Sorun giderme

Tarayıcı fil resimli hata sayfasını gösteriyor

Nginx çalışıyor ama Puma yanıt vermiyor. systemctl status mastodon-web ve journalctl -u mastodon-web -n 50 --no-pager çıktılarını kontrol edin. Unit dosyasındaki yanlış bir yol veya Ruby sürümü ya da başarısız bir varlık derlemesi olağan nedenlerdir.

Sayfalar stil ve resim olmadan yükleniyor

Nginx derlenmiş varlıkları okuyamıyor. chmod o+x /home/mastodon komutunu yeniden çalıştırın; dosyalar eksikse mastodon kullanıcısı olarak RAILS_ENV=production bundle exec rails assets:precompile ile yeniden oluşturun.

Onay e-postaları hiç gelmiyor

Postaları Sidekiq gönderir. SMTP hataları için journalctl -u mastodon-sidekiq -n 100 --no-pager çıktısını okuyun, .env.production içindeki SMTP_ değerlerini kontrol edin ve bu dosyadaki her değişiklikten sonra üç Mastodon servisini de yeniden başlatın. SMTP_PORT değeri, Adım 7'deki relay portu olan 587 olmalıdır.

Disk doluyor

Alanın nereye gittiğini görmek için mastodon kullanıcısı olarak RAILS_ENV=production bin/tootctl media usage çalıştırın. Adım 10'daki cron görevlerinin çalıştığından emin olun (Ubuntu'da grep CRON /var/log/syslog, Debian'da journalctl -u cron), gerekirse --days değerini düşürün veya medyayı nesne depolamaya taşıyın.

Bir yükseltmeden sonra bundle install Ruby sürüm hatasıyla başarısız oluyor

Sürüm henüz kurulu olmayan bir Ruby sürümü istiyor. ruby-build'i güncelleyin, ~/live içinde RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install çalıştırın, ardından bundle install komutunu ve kalan yükseltme adımlarını tekrarlayın.

Sonraki adımlar

Sık sorulan sorular

Mastodon alan adımı sonradan değiştirebilir miyim?

Hayır. Mastodon yapılandırma belgeleri LOCAL_DOMAIN ve WEB_DOMAIN değerlerinin bir kez ayarlandıktan sonra güvenle değiştirilemeyeceğini söyler: uzak sunucular hesaplarınızı yeni hesaplar gibi görür ve onlarla iletişim bozulabilir. Yeniden kurulum bile bunu düzeltmez; bu yüzden kurulum sihirbazını çalıştırmadan önce karar verin.

Bir e-posta sunucusuna ihtiyacım var mı?

Evet. Mastodon onay bağlantılarını, parola sıfırlamalarını ve bildirimleri yapılandırdığınız SMTP sunucusu üzerinden gönderir. HyperDC VPS'lerde giden 25 numaralı port varsayılan olarak kapalıdır. 3 ay veya daha uzun süreyle satın alınan hizmetlerde destek talebiyle açılır. O zamana kadar e-postaları 587 numaralı port üzerinden bir SMTP relay ile gönderin.

Bu rehber neden Caddy yerine Nginx kullanıyor?

Mastodon deposu web, streaming ve statik dosya yolları için bir Nginx yapılandırmasıyla gelir ve resmi kurulum rehberi bunu Certbot ile birlikte kullanır. Bu yapılandırmada kalmak sunucunuzu belgelere ve sürüm notlarına yakın tutar.

Medyayı nesne depolamada mı saklamalıyım?

İsteğe bağlıdır. Yerel depolama yüklemeleri ve önbelleğe alınan uzak medyayı sunucudaki public/system klasöründe tutar. S3 uyumlu nesne depolama bunları makinenin dışına taşır; kurulum sihirbazı bunu yapılandırabilir ve Mastodon yapılandırma belgelerine göre kovanın ACL desteklemesi gerekir.

Mastodon'u bunun yerine Docker ile çalıştırabilir miyim?

Resmi kurulum rehberi Ubuntu 24.04 veya Debian 13 üzerinde kaynaktan kurulumu belgeler ve bir Docker kurulumunu anlatmaz; bu yüzden bu rehber kaynaktan kurulumu izler. systemd servisleri, tootctl komutları ve sürüm notları da bu düzeni varsayar.

Hangi HyperDC sunucularında Mastodon çalışır?

Root erişimi olan ve Ubuntu 24.04 LTS veya Debian 13 çalıştıran bir HyperDC Linux VPS, VDS veya dedicated sunucuda. Diğer sunuculardan önbelleğe alınan dosyalar temizlenmedikçe büyümeye devam ettiği için medya için disk alanı planlayın.

Kaynaklar

Şifre Oluştur

Lütfen onaylayın