4.1 KiB
title: Betula created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, activitypub-fediverse, microblogging, rust, hobbyiste, fediverse] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=activitypub-fediverse, https://github.com/betula-app/betula]
🌳 Betula
Le microblogueur fediverse en Rust, projet hobbyiste : une implémentation minimaliste de serveur Mastodon-compatible, pour comprendre ActivityPub en codant.
| Métadonnée | Valeur |
|---|---|
| Site web | https://github.com/betula-app/betula |
| GitHub | https://github.com/betula-app/betula |
| License | AGPL-3.0 |
| Langage principal | Rust |
| Étoiles GitHub | 5 ⭐ |
| Dernière MAJ | 2026-04 |
| Catégorie | cat-activitypub-fediverse |
Description
Betula (le bouleau, en latin) est un serveur de microblogage fediverse écrit en Rust, conçu comme un projet pédagogique et hobbyiste. L'objectif affiché n'est pas de concurrencer Mastodon mais de proposer un serveur minimal (idéal pour un usage personnel) avec un code simple à lire et à auditer.
Le projet supporte l'essentiel du protocole ActivityPub : envoi/réception de posts, follows, likes, boosts, réponses. Pas de listes, pas de filtres, pas de sondages, pas de recherche federated — juste la boucle de base. C'est exactement le bon créneau pour quelqu'un qui veut un compte fediverse persistant sur une instance à lui, sans complexité opérationnelle.
L'implémentation est volontairement didactique : le code est commenté, structuré clairement, sans trop de dépendances externes. C'est un excellent point d'entrée pour qui veut comprendre ActivityPub en lisant du Rust.
Points forts : Rust (sûr, rapide), code lisible, parfait pour usage single-user, base de code légère.
Points faibles : projet hobbyiste, bus factor = 1, peu de features, pas de support Subsonic/Mastodon API complet, pas d'admin UI riche.
Installation
Via Docker (recommandé)
Pas d'image officielle : on build depuis le source.
# docker-compose.yml
services:
betula:
build: https://github.com/betula-app/betula.git
container_name: betula
restart: unless-stopped
ports:
- "3000:3000"
environment:
BETULA_DATABASE_URL: "sqlite:///data/betula.db"
BETULA_LISTEN: "0.0.0.0:3000"
BETULA_BASE_URL: "https://betula.example.com"
volumes:
- betula_data:/data
volumes:
betula_data:
Installation manuelle
- Installer Rust :
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - Cloner :
git clone https://github.com/betula-app/betula.git && cd betula - Compiler :
cargo build --release - Lancer :
./target/release/betula
Configuration
- Éditer
config.toml(ou variables d'envBETULA_*) :BETULA_BASE_URL: URL publique HTTPSBETULA_LISTEN: adresse d'écoute (0.0.0.0:3000 par défaut)
- Créer le premier compte :
betula create-user --name alice --password *** - Activer la fédération (par défaut activée)
- Servir derrière Nginx + HTTPS
Alternatives
Open source
- app-hollo — autre microblogging Rust single-binary (plus mature)
- app-ktistec — Crystal, single binary
- app-mastodon — référence mais lourd
- app-snac — C, ultra-minimaliste
Propriétaires
- Twitter / X
- Threads
- Bluesky (ATProto)
Sécurité
- HTTPS obligatoire (fédération)
- Code Rust : surface d'attaque faible par construction (memory safety)
- SQLite local : sécuriser le dossier de données (chmod 700)
- Mises à jour : suivre le repo (bus factor = 1, ne pas hésiter à forker si l'auteur disparaît)
- Sauvegardes : le fichier
betula.dbsuffit
Ressources
- Code source : github.com/betula-app/betula
- Documentation : README du dépôt
- Communauté : issues GitHub uniquement