Radicle
Installation
# Via binaires pré-compilés (recommandé)
curl -sSf https://radicle.xyz/install | sh
# Via Cargo (Rust)
cargo install radicle-node radicle-cli
# Vérifier
rad --version
rad --help Prérequis : Git installé, connexion réseau pour sync.
Identité
# Créer une identité (clé Ed25519, une seule fois)
rad auth
# Tu choisis un alias et une passphrase
# Afficher ton identité
rad self
# Montre : DID (did:key:z6Mk...), alias, node ID
# L'identité est stockée localement
# Pas de serveur central, pas de compte à créer DID = Decentralized Identifier. C'est ta clé publique, ton identité sur le réseau.
Projet
# Initialiser un projet Radicle (dans un dépôt git existant)
cd mon-projet
git init && git add . && git commit -m "init"
rad init
# Choisir : nom, description, branche par défaut, visibilité
# Inspecter le projet
rad inspect # RID, nom, description, delegates
rad id # ton identité dans ce projet
# Structure créée
# .git/refs/namespaces/ - refs Radicle
# Aucun fichier ajouté dans le working tree Réseau - Push / Sync
# Publier les changements sur le réseau
rad push # push vers les seed nodes connectés
# Synchroniser (envoie et récupère les mises à jour)
rad sync # synchroniser avec les pairs
# Cloner un projet distant
rad clone rad:z3gqcJ... # cloner via RID (Radicle ID) Patches (équivalent des Pull Requests)
# Créer un patch (depuis une branche)
git switch -c ma-feature
# ... faire des modifs, commiter ...
rad patch create # crée un patch à partir de la branche
# Lister les patches
rad patch list # tous les patches
rad patch list --state open # seulement les ouverts
# Consulter un patch
rad patch show PATCH_ID
# Commenter / reviewer
rad patch comment PATCH_ID --message "LGTM !"
rad patch review PATCH_ID --accept
rad patch review PATCH_ID --reject
# Fusionner un patch
rad patch merge PATCH_ID
# Fermer sans fusionner
rad patch close PATCH_ID Issues (tickets décentralisés)
# Créer une issue
rad issue create
# Ouvre un éditeur pour titre + description
# Lister
rad issue list
rad issue list --state open
# Consulter
rad issue show ISSUE_ID
# Commenter
rad issue comment ISSUE_ID "Bonne idée !"
# Fermer
rad issue close ISSUE_ID Node - Gestion du nœud
# Démarrer le noeud local
rad node start # démarre en arrière-plan
rad node status # état du noeud
rad node stop # arrêter
# Logs et debug
rad node logs # voir les logs en temps réel
rad node config # afficher la configuration
# Le noeud écoute sur le port 8776 (TCP)
# Nécessaire pour sync P2P Tracking - Suivre des projets
# Suivre un projet (le répliquer localement)
rad track rad:z3gqcJ... # par RID
rad untrack rad:z3gqcJ... # arrêter de répliquer
# Inspecter le projet courant (RID, delegates, etc.)
rad inspect Comparaison GitHub vs Radicle
| Concept | GitHub | Radicle |
|---|---|---|
| Dépôt | Repository | Project (RID) |
| Identité | Compte GitHub | DID (clé crypto) |
| Contribution | Pull Request | Patch |
| Tickets | Issue | Issue |
| Copie | Fork | Clone (fork implicite) |
| Favori | Star | Track |
| CI/CD | GitHub Actions | radicle-ci |
| Hébergement | github.com | Seed nodes P2P |
| Modèle | Centralisé | Décentralisé (P2P) |
| Disponibilité | Dépend de GitHub | Réseau distribué |
| Censure | Possible (DMCA, etc.) | Résistant |
Seed Node - Hébergement
# Un seed node est un noeud Radicle permanent
# Il réplique les projets et les rend accessibles
# Prérequis serveur
# - Linux, port 8776 ouvert (TCP)
# - radicle-node installé
# Configuration
rad node config
# Fichier : ~/.radicle/config.json
# Policies : block (liste noire) ou allow (liste blanche)
# Systemd (démarrage automatique)
# /etc/systemd/system/radicle-node.service
# [Service]
# ExecStart=/usr/local/bin/radicle-node
# User=radicle
# Restart=always
sudo systemctl enable radicle-node
sudo systemctl start radicle-node
# Firewall
sudo ufw allow 8776/tcp # Ubuntu
sudo firewall-cmd --add-port=8776/tcp --permanent # Fedora