152 lines
6.2 KiB
Markdown
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
|