At eje sin sociale konto lyder godt, lige indtil du indser, at kontoen bor på en andens server, under deres regler og oppetid. En egen Mastodon-instans løser det: dit brugernavn er @you@your-domain, og ingen andre end dig kan lukke det ned. Hagen er, at Mastodon ikke er en lille app. Det er godt at vide, hvad du går ind til.
Hvem det er til
- En instans til én bruger, til dig selv eller din virksomheds officielle konto.
- Et lille fællesskab af venner eller et projektteam — dusinvis af mennesker, ikke tusindvis.
Til noget større driver du en tjeneste med modereringsopgaver, misbrugsanmeldelser og rigtig infrastruktur. Det er en anden snak.
Hvad den reelt kræver
Mastodon kører flere processer på én gang: Rails-webappen, Sidekiq-baggrundsworkers, en streamingserver, PostgreSQL og Redis. Føderationen betyder, at din server bliver ved med at hente opslag og medier fra andre servere, også mens du sover.
| Instans | Plan |
|---|---|
| Én bruger, få fulgte konti | Small-IP — 2 vCPU, 4 GB, $16/md. |
| Lille fællesskab, aktiv føderation | Medium-IP — 4 vCPU, 6 GB, $20/md. |
4 GB virker, men det er stramt; Sidekiq-køerne hober sig op, når et populært opslag, du følger, får tusindvis af svar. 6 GB giver luft. Den anden begrænsning er disken — se afsnittet om medier nedenfor.
Du skal også bruge et domæne og en dedikeret IP: andre servere leverer til din på port 443.
Installation med Docker
Det officielle repository har en docker-compose.yml med. På en frisk Ubuntu 24.04-server med Docker installeret:
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
Opsætningsopgaven spørger efter dit domæne, indstillinger for database og Redis (standardværdierne passer til compose-filen), mailindstillinger og den første administratorkonto. Alt skrives til .env.production. Læs udgivelsesnoterne for det tag, du har tjekket ud — trinnene ændrer sig indimellem mellem hovedversioner.
Mastodon har en nginx-skabelon i dist/nginx.conf. Kopiér den til /etc/nginx/sites-available/, erstat domænet, og hent et certifikat med certbot. Vores guides til reverse proxy og domæner dækker begge dele.
Mail: brug et relæ
Mastodon sender bekræftelses- og nulstillingsmails. Portene 25 og 465 er lukket på vores servere, så peg Mastodon mod en ekstern udbyder af transaktionsmails via port 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
Helt ærligt ville du have et relæ alligevel. Mail fra en splinterny server-IP ender ofte i spam; et relæ har det omdømme, du ikke har endnu.
Medier: disksluger nummer ét
Hvert billede og hver video fra konti, din server ser, bliver cachet lokalt. På en travl instans er det gigabytes om ugen. Ryd op i gamle fjernmedier efter en tidsplan:
docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30
Læg dem i et dagligt cronjob. Vokser din instans, så flyt medierne til S3-kompatibel objektlagring med S3_*-indstillingerne i .env.production — så rummer VPS-disken kun databasen.
Vedligeholdelse
- Opdateringer: hent det nye tag,
docker compose pull, kør migreringer som udgivelsesnoterne siger, genstart. Spring ikke hovedversioner over. - Backup: dump PostgreSQL og opbevar
.env.productionsikkert — uden hemmelighederne i den virker en gendannelse ikke. Vores restic-guide dækker eksterne kopier, og Managed Backups tilføjer daglige gendannelsespunkter for hele serveren. - Domænet er permanent. Det er bagt ind i hver kontos adresse i hele fediverset. Vælg det, før du opretter den første konto.
Vil du hellere have noget lettere til en teamchat? En Matrix-server passer måske bedre.
Kommentarer
Ingen kommentarer endnu. Vær den første.