5.7 KiB
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 |
| GitHub | toddsundsted/ktistec |
| Licence | AGPL-3.0 |
| Langage | Crystal |
| Étoiles GitHub | 23 ⭐ |
| Dernière MAJ | 2026-05 |
| Catégorie | cat-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
# 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
git clone https://github.com/toddsundsted/ktistec.git
cd ktistec
shards install
crystal build src/ktistec.cr --release
KTISTEC_HOST=localhost ./ktistec
⚙️ Configuration Initiale
- Définir le domaine : Ktistec utilise
KTISTEC_HOSTpour générer l'URL de l'acteur ActivityPub. - Créer le premier compte : ouvrir l'interface web, s'inscrire (le premier compte devient admin).
- Configurer le profil public : avatar, bio, lien d'en-tête. Les followers fédérés verront ces métadonnées.
- Tester la fédération : depuis un compte Mastodon distant, faire
@vous@ktistec.example.orgpour vérifier Webfinger. - Sauvegardes : un simple
cpdu fichierktistec.dbsuffit, 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,/actoret 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
- Reddit r/crystal_programming — Présentation
- Crystal Forum — Discussion Ktistec
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