--- title: Ktistec created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, activitypub-fediverse, microblogging, crystal, single-user, fediverse, lightweight] confidence: high contested: false sources: [https://selfh.st/apps/?tag=activitypub-fediverse, https://github.com/toddsundsted/ktistec] --- # 💎 Ktistec > **Le serveur ActivityPub minimaliste en Crystal** — auto-hĂ©bergez votre propre nƓud Fediverse dans un binaire lĂ©ger, sans Rails ni JavaScript Ă  exĂ©cuter cĂŽtĂ© client. ## 📋 Informations GĂ©nĂ©rales | Champ | Valeur | | :--- | :--- | | **Site web** | [ktistec.com](https://ktistec.com/) | | **GitHub** | [toddsundsted/ktistec](https://github.com/toddsundsted/ktistec) | | **Licence** | AGPL-3.0 | | **Langage** | Crystal | | **Étoiles GitHub** | 23 ⭐ | | **DerniĂšre MAJ** | 2026-05 | | **CatĂ©gorie** | [[cat-activitypub-fediverse\|ActivityPub / Fediverse]] | ## 📝 Description **Ktistec** est un **serveur microblogging ActivityPub Ă©crit en Crystal** par Todd Sundsted. Crystal est un langage compilĂ©, statiquement typĂ©, avec une syntaxe proche de Ruby mais des performances proches de C — ce qui donne Ă  Ktistec un profil **lĂ©ger, rapide et monobinaire**. Le projet se positionne explicitement comme une alternative minimale Ă  Mastodon, Pleroma et autres, avec un code source compact et lisible. L'ambition est de fournir **un serveur Fediverse personnel complet** : messages, boosts, favoris, follows, listes, notifications, recherche fĂ©dĂ©rĂ©e, threads. Ktistec est mono-utilisateur par dĂ©faut (l'auteur dĂ©crit l'usage comme un **nƓud personnel**, pas un rĂ©seau), mais peut techniquement servir plusieurs comptes. L'**API ActivityPub** est complĂšte et le projet **fĂ©dĂšre avec Mastodon, Pleroma, Misskey, Akkoma, Pixelfed et la plupart des implĂ©mentations matures**. Le code met l'accent sur la **concision** : un seul dĂ©pĂŽt, pas de surcouche framework lourde, base SQLite par dĂ©faut, **binaire statique** facile Ă  dĂ©ployer. Les **rĂŽles** supportent une certaine modularitĂ© : vous pouvez choisir d'exposer votre Ktistec en lecture seule, en local seulement, ou en serveur public classique. L'interface web est intentionnellement sobre — pas de SPA JavaScript, les pages se gĂ©nĂšrent cĂŽtĂ© serveur. Forces : **consommation mĂ©moire trĂšs faible** (souvent < 50 Mo de RSS), binaire unique, code lisible, parfait pour un VPS modeste, image Docker officielle. Faiblesses : documentation moins fournie que Pleroma/Mastodon, instance mono-utilisateur assumĂ©e, pas de stockage mĂ©dia avancĂ©, communautĂ© restreinte (1 dĂ©veloppeur principal). ## 🚀 Installation ### Option recommandĂ©e : Docker ```yaml # docker-compose.yml services: ktistec: image: ghcr.io/toddsundsted/ktistec:latest container_name: ktistec restart: unless-stopped environment: - KEMAL_ENV=production - KTISTEC_HOST=ktistec.example.org - KTISTEC_PORT=3000 - DATABASE_URL=sqlite3:///data/ktistec.db volumes: - ./data:/data ports: - "3000:3000" ``` ### Option 2 : Binaire natif Crystal ```bash git clone https://github.com/toddsundsted/ktistec.git cd ktistec shards install crystal build src/ktistec.cr --release KTISTEC_HOST=localhost ./ktistec ``` ## ⚙ Configuration Initiale 1. **DĂ©finir le domaine** : Ktistec utilise `KTISTEC_HOST` pour gĂ©nĂ©rer l'URL de l'acteur ActivityPub. 2. **CrĂ©er le premier compte** : ouvrir l'interface web, s'inscrire (le premier compte devient admin). 3. **Configurer le profil public** : avatar, bio, lien d'en-tĂȘte. Les followers fĂ©dĂ©rĂ©s verront ces mĂ©tadonnĂ©es. 4. **Tester la fĂ©dĂ©ration** : depuis un compte Mastodon distant, faire `@vous@ktistec.example.org` pour vĂ©rifier Webfinger. 5. **Sauvegardes** : un simple `cp` du fichier `ktistec.db` suffit, plus le volume des mĂ©dias uploadĂ©s. ## 🔄 Alternatives ### Open Source - [[app-pleroma]] — Plus mature, plus d'instances, en Elixir. - [[app-mastodon]] — Le standard, en Ruby on Rails. - [[app-akkoma]] — Fork lĂ©ger de Pleroma. - [[app-mitra]] — Microblogging Fediverse en Rust (mĂȘme philosophie minimaliste). - [[app-snac]] — Encore plus minimaliste, Ă©crit en C. ### PropriĂ©taires (ce que cette app remplace) - **Twitter / X** — centralisĂ©, traque publicitaire. - **Threads** (Meta) — non fĂ©dĂ©rĂ©, liĂ© Ă  Instagram. - **Bluesky** (semi-dĂ©centralisĂ©) — modĂšle AT Protocol diffĂ©rent. ## 🔐 SĂ©curitĂ© - **Authentification** : Ktistec gĂšre nativement les comptes locaux avec mots de passe hashĂ©s (bcrypt). Le **premier compte créé est administrateur** — ne pas laisser l'inscription ouverte ou la verrouiller aprĂšs crĂ©ation. - **HTTPS obligatoire** : la fĂ©dĂ©ration ActivityPub exige TLS. Let's Encrypt via Caddy/Nginx. - **Webfinger** : Ktistec expose `/.well-known/webfinger`, `/.well-known/nodeinfo`, `/actor` et les endpoints standards. - **Limites d'API** : Ktistec implĂ©mente un rate-limiting basique. Pour un usage public, il est recommandĂ© d'ajouter un reverse proxy durci (CrowdSec, fail2ban). - **Sauvegarde** : le projet Ă©tant mono-utilisateur, **sauvegardez rĂ©guliĂšrement le fichier SQLite** (c'est toute votre base de donnĂ©es). ## 📚 Ressources - [GitHub toddsundsted/ktistec](https://github.com/toddsundsted/ktistec) - [Reddit r/crystal_programming — PrĂ©sentation](https://www.reddit.com/r/crystal_programming/comments/108hxu6/ktistec_a_lightweight_activitypub_server_in/) - [Crystal Forum — Discussion Ktistec](https://forum.crystal-lang.org/t/ktistec-an-activitypub-server/3010) ## Pages LiĂ©es - [[cat-activitypub-fediverse]] — CatĂ©gorie parente - [[app-mitra]] — Approche minimaliste similaire en Rust - [[app-snac]] — Encore plus minimaliste, en C - [[recettes-docker-compose]] — Templates Docker