Att äga sitt sociala konto är en fin tanke, tills du inser att kontot bor på någon annans server, under deras regler och drifttid. En egen Mastodon-instans löser det: ditt användarnamn är @you@your-domain, och ingen annan än du kan stänga ner det. Haken är att Mastodon inte är en liten app. Det är bra att veta vad du ger dig in på.
Vem det här passar
- En instans för en enda användare, för dig själv eller ditt företags officiella konto.
- En liten gemenskap av vänner eller ett projektteam — dussintals personer, inte tusentals.
För något större driver du en tjänst med modereringsansvar, anmälningar om missbruk och riktig infrastruktur. Det är en annan diskussion.
Vad den faktiskt kräver
Mastodon kör flera processer samtidigt: Rails-webbappen, Sidekiq-bakgrundsworkers, en streamingserver, PostgreSQL och Redis. Federationen gör att din server fortsätter hämta inlägg och media från andra servrar även när du sover.
| Instans | Plan |
|---|---|
| En användare, få följda konton | Small-IP — 2 vCPU, 4 GB, $16/mån |
| Liten gemenskap, aktiv federation | Medium-IP — 4 vCPU, 6 GB, $20/mån |
4 GB fungerar men är trångt; Sidekiq-köerna växer när ett populärt inlägg du följer får tusentals svar. 6 GB ger andrum. Den andra begränsningen är disken — se avsnittet om media nedan.
Du behöver också en domän och en dedikerad IP: andra servrar levererar till din på port 443.
Installation med Docker
Det officiella repositoryt innehåller en docker-compose.yml. På en nyinstallerad Ubuntu 24.04-server med Docker installerat:
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
Installationsuppgiften frågar efter din domän, inställningar för databas och Redis (standardvärdena matchar compose-filen), e-postinställningar och det första administratörskontot. Allt skrivs till .env.production. Läs versionsinformationen för taggen du checkade ut — stegen ändras ibland mellan huvudversioner.
Mastodon har en nginx-mall i dist/nginx.conf. Kopiera den till /etc/nginx/sites-available/, byt ut domänen och skaffa ett certifikat med certbot. Våra guider om reverse proxy och domäner täcker båda.
E-post: använd ett relä
Mastodon skickar bekräftelse- och lösenordsåterställningsmejl. Portarna 25 och 465 är stängda på våra servrar, så peka Mastodon mot en extern leverantör av transaktionell e-post 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
Ärligt talat vill du ha ett relä ändå. Mejl från en helt ny server-IP hamnar ofta i skräpposten; ett relä har det rykte du ännu inte har.
Media: diskslukaren
Varje bild och video från konton som din server ser cachas lokalt. På en aktiv instans blir det gigabyte i veckan. Rensa gammal fjärrmedia enligt ett schema:
docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30
Lägg dem i ett dagligt cronjobb. Växer instansen, flytta media till S3-kompatibel objektlagring med S3_*-inställningarna i .env.production — då rymmer VPS-disken bara databasen.
Underhåll
- Uppdateringar: hämta den nya taggen,
docker compose pull, kör migreringar enligt versionsinformationen, starta om. Hoppa inte över huvudversioner. - Backuper: dumpa PostgreSQL och förvara
.env.productionsäkert — utan hemligheterna i den fungerar ingen återställning. Vår restic-guide täcker externa kopior, och Managed Backups lägger till dagliga återställningspunkter för hela servern. - Domänen är permanent. Den är inbakad i varje kontos adress i hela fediversum. Välj den innan du skapar det första kontot.
Vill du hellre ha något lättare för en teamchatt? En Matrix-server kanske passar bättre.
Kommentarer
Inga kommentarer än. Bli först.