Initial vault setup
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user