Je eigen sociale account bezitten klinkt mooi, tot je beseft dat het account op iemand anders zijn server woont, onder diens regels en uptime. Een eigen Mastodon-instance lost dat op: je handle is @you@your-domain, en niemand anders dan jij kan hem uitzetten. Het addertje: Mastodon is geen kleine app. Het is goed om te weten waar je aan begint.
Voor wie dit is
- Een instance voor één gebruiker, voor jezelf of het officiële account van je bedrijf.
- Een kleine community van vrienden of een projectteam — tientallen mensen, geen duizenden.
Bij alles wat groter is, run je een dienst met moderatieplichten, misbruikmeldingen en echte infrastructuur. Dat is een ander gesprek.
Wat het echt nodig heeft
Mastodon draait meerdere processen tegelijk: de Rails-webapp, Sidekiq-achtergrondworkers, een streamingserver, PostgreSQL en Redis. Door federatie blijft je server posts en media van andere servers ophalen, ook terwijl jij slaapt.
| Instance | Plan |
|---|---|
| Eén gebruiker, weinig gevolgde accounts | Small-IP — 2 vCPU, 4 GB, $16/mnd |
| Kleine community, actieve federatie | Medium-IP — 4 vCPU, 6 GB, $20/mnd |
4 GB werkt, maar het is krap; Sidekiq-wachtrijen lopen op als een populaire post die je volgt duizenden reacties krijgt. 6 GB geeft ademruimte. De andere beperking is de schijf — zie het stuk over media hieronder.
Je hebt ook een domein en een dedicated IP nodig: andere servers leveren aan de jouwe op poort 443.
Installatie met Docker
De officiële repository bevat een docker-compose.yml. Op een verse Ubuntu 24.04-server met Docker geïnstalleerd:
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
De setuptaak vraagt om je domein, database- en Redis-instellingen (de standaardwaarden passen bij het compose-bestand), e-mailinstellingen en het eerste beheerdersaccount. Alles wordt weggeschreven naar .env.production. Lees de release notes van de tag die je hebt uitgecheckt — de stappen veranderen soms tussen hoofdversies.
Mastodon levert een nginx-sjabloon mee in dist/nginx.conf. Kopieer het naar /etc/nginx/sites-available/, vervang het domein en haal een certificaat op met certbot. Onze handleidingen voor reverse proxy en domein behandelen beide.
E-mail: gebruik een relay
Mastodon verstuurt bevestigings- en wachtwoordherstelmails. Poort 25 en 465 zijn dicht op onze servers, dus laat Mastodon via poort 587 naar een externe aanbieder van transactionele e-mail sturen:
SMTP_SERVER=smtp.your-provider.example
SMTP_PORT=587
SMTP_LOGIN=apikey
SMTP_PASSWORD=your-smtp-password
SMTP_FROM_ADDRESS=notifications@your-domain.example
Eerlijk gezegd wil je sowieso een relay. Mail van een gloednieuw server-IP belandt vaak in de spam; een relay heeft de reputatie die jij nog niet hebt.
Media: de schijfvreter
Elke afbeelding en video van accounts die je server ziet, wordt lokaal gecachet. Op een drukke instance zijn dat gigabytes per week. Ruim oude externe media volgens een schema op:
docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30
Zet die in een dagelijkse cronjob. Groeit je instance, verplaats media dan naar S3-compatibele objectopslag met de S3_*-instellingen in .env.production — dan houdt de VPS-schijf alleen de database vast.
Onderhoud
- Updates: haal de nieuwe tag op,
docker compose pull, draai migraties zoals de release notes aangeven, herstart. Sla geen hoofdversies over. - Back-ups: dump PostgreSQL en bewaar
.env.productiongoed — zonder de geheimen daarin werkt een herstel niet. Onze restic-handleiding behandelt externe kopieën, en Managed Backups voegen dagelijkse herstelpunten van de hele server toe. - Het domein is permanent. Het zit ingebakken in het adres van elk account in het hele fediverse. Kies het voordat je het eerste account aanmaakt.
Liever iets lichters voor teamchat? Een Matrix-server past misschien beter.
Reacties
Nog geen reacties. Wees de eerste.