--- 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](https://github.com/betula-app/betula) | | **GitHub** | [https://github.com/betula-app/betula](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. ```yaml # 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 1. Installer Rust : `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` 2. Cloner : `git clone https://github.com/betula-app/betula.git && cd betula` 3. Compiler : `cargo build --release` 4. Lancer : `./target/release/betula` ## Configuration 1. Éditer `config.toml` (ou variables d'env `BETULA_*`) : - `BETULA_BASE_URL` : URL publique HTTPS - `BETULA_LISTEN` : adresse d'Ă©coute (0.0.0.0:3000 par dĂ©faut) 2. CrĂ©er le premier compte : `betula create-user --name alice --password ***` 3. Activer la **fĂ©dĂ©ration** (par dĂ©faut activĂ©e) 4. 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.db` suffit ## Ressources - Code source : [github.com/betula-app/betula](https://github.com/betula-app/betula) - Documentation : README du dĂ©pĂŽt - CommunautĂ© : issues GitHub uniquement ## Pages LiĂ©es - [[cat-activitypub-fediverse]] - [[recettes-docker-compose]] - [[app-hollo]] - [[app-ktistec]]