Files
2026-06-09 18:40:21 +02:00

152 lines
6.2 KiB
Markdown

---
title: Mastodon
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, activitypub-fediverse, microblogging, reseau-social, ruby, fediverse]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=activitypub-fediverse, https://github.com/mastodon/mastodon, https://joinmastodon.org/]
---
# 🐘 Mastodon
> **Le microblogueur fédéré de référence** : 500 caractères par message, chronologies inversées, instances souveraines qui se parlent via ActivityPub.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | [https://joinmastodon.org](https://joinmastodon.org) |
| **GitHub** | [https://github.com/mastodon/mastodon](https://github.com/mastodon/mastodon) |
| **License** | AGPL-3.0 |
| **Langage principal** | Ruby, JavaScript (React) |
| **Étoiles GitHub** | 47 500 ⭐ |
| **Dernière MAJ** | 2026-05 |
| **Catégorie** | [[cat-activitypub-fediverse]] |
## Description
Mastodon est le logiciel qui a popularisé le **Fediverse** grand public après l'arrivée massive des déçus de Twitter fin 2022. C'est un serveur de **microblogage** (pouets / toots) fonctionnant sur le protocole **ActivityPub** du W3C, ce qui permet à n'importe quelle instance Mastodon de discuter avec un compte PeerTube, Pixelfed, Pleroma, Misskey, etc.
Chaque serveur (« instance ») est administré indépendamment avec ses propres règles de modération, mais le réseau global est unifié : `@moi@mastodon.social` peut être suivi depuis n'importe quelle autre instance, et la conversation traverse les frontières logicielles. La timeline est **algorithmiquement neutre** : pas de tri opaque, pas de publicités, pas de profilage publicitaire.
L'application couvre les usages classiques du microblogage : messages courts (500 caractères), images (jusqu'à 4), sondages, **CW** (Content Warning) pour les sujets sensibles, listes, marque-pages (« favoris »), boosts (repartages) et **chronologies** locale / federée / personnelle. Le projet est soutenu par une association à but non lucratif (Mastodon gGmbH).
**Points forts** : maturité (depuis 2016), outillage admin riche, sécurité solide, federation robuste, applications mobiles tierces (Mastodon, Tusky, Tootle, Ivory…).
**Points faibles** : consommation mémoire importante (≥ 4 Go RAM recommandé), Ruby on Rails demande un peu d'attention opérationnelle, recherche federated lente, pas de DM E2E (seuls les messages directs à 1 destinataire sont chiffrés en option).
## Installation
### Via Docker (recommandé)
L'image officielle est `mastodon/mastodon` sur Docker Hub. Mastodon a besoin d'un reverse-proxy HTTPS (Traefik, Caddy ou Nginx) en amont, ainsi que de PostgreSQL et Redis.
```yaml
# docker-compose.yml
services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: mastodon
POSTGRES_PASSWORD: change-me
POSTGRES_DB: postgres
volumes:
- mastodon_db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U mastodon"]
interval: 5s
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
- mastodon_redis:/data
web:
image: mastodon/mastodon:v4.4
restart: unless-stopped
env_file: .env.production
command: bash -c "bundle exec rails server -b 0.0.0.0"
ports:
- "3000:3000"
depends_on:
- db
- redis
streaming:
image: mastodon/mastodon:v4.4
restart: unless-stopped
env_file: .env.production
command: node ./streaming
ports:
- "4000:4000"
depends_on:
- db
- redis
sidekiq:
image: mastodon/mastodon:v4.4
restart: unless-stopped
env_file: .env.production
command: bundle exec sidekiq
depends_on:
- db
- redis
volumes:
mastodon_db:
mastodon_redis:
```
### Installation manuelle
Pour une installation native Ruby, suivre la documentation officielle : `https://docs.joinmastodon.org/admin/install/`. Prévoir Ruby 3.2+, Node.js 18+, PostgreSQL 14+, Redis 7+, et les outils système `ffmpeg`, `libpq-dev`, `libxml2-dev`, `libprotobuf-dev`, `libidn-dev`.
## Configuration
1. Générer les secrets avec `docker compose run --rm web bundle exec rake secret`.
2. Compléter `.env.production` (`LOCAL_DOMAIN`, `REDIS_HOST`, `DB_HOST`, `SMTP_*`, etc.).
3. Préparer la base : `docker compose run --rm web bundle exec rails db:setup`.
4. Pré-compiler les assets : `docker compose run --rm web bundle exec rails assets:precompile`.
5. Lancer la stack et créer le compte admin via `tootctl accounts create`.
6. **Configurer le reverse-proxy** : obligatoire pour HTTPS (Let's Encrypt via Traefik/Caddy).
## Alternatives
### Open source
- [[app-misskey]] — Fork de Mastodon avec UI plus riche, réactions, citations
- **Pleroma / Akkoma** — Microblogage fédéré léger, en Elixir
- **GoToSocial** — Implémentation Go, très peu gourmande
- **Iceshrimp / Sharkey** — Forks Misskey en activité
### Propriétaires
- **X (Twitter)** — Le modèle d'origine, centralisé
- **Threads (Meta)** — Partiellement fédéré, contrôlé par Meta
- **Bluesky** — Protocole AT (pas ActivityPub), pas self-hostable
## Sécurité
-**Authentification** : email + mot de passe (bcrypt), 2FA TOTP/WebAuthn
-**OAuth2** pour applications tierces
-**Modération** : blocages, masquages, listes de filtres, signalements inter-instances
-**HTTPS** obligatoire (HSTS préchargé)
- ⚠️ **DMs** : pas de chiffrement de bout en bout nativement (utiliser Signal pour le sensible)
- ⚠️ **Fuite d'IP** : bien configurer `SMTP_RELAY_ENABLED` ou le header `X-Forwarded-For`
- ⚠️ **Sécurité opérationnelle** : garder Mastodon à jour, surveiller les CVE Ruby/Rails
## Ressources
- [Site officiel](https://joinmastodon.org)
- [Documentation admin](https://docs.joinmastodon.org/admin/)
- [GitHub mastodon/mastodon](https://github.com/mastodon/mastodon)
- [Serveurs Mastodon publics](https://joinmastodon.org/communities/)
## Pages Liées
- [[cat-activitypub-fediverse]] — Catégorie parente
- [[app-misskey]] — Concurrent direct, UI plus riche
- [[app-pixelfed]] — Réseau photos du même écosystème
- [[app-traefik]] — Reverse-proxy HTTPS recommandé
- [[recettes-docker-compose]] — Templates Docker