---
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
