Files
wiki/Catalogue-Self-Hosted/apps/app-betula.md
T
2026-06-09 18:40:21 +02:00

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

  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

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

Pages Liées