Cette documentation détaille l'architecture distribuée de Forgejo pour l'écosystème Rustlets.
L'infrastructure repose sur un modèle **Hub & Spoke** (Cerveau & Antennes) pour garantir la disponibilité même en cas de crash du processeur i9 local ou de perte de connexion résidentielle.
### Instances Actives
| :-------------------- | :----------------------------------------------------------- | :---------------- | :-------------- |
| **MASTER (Central)** | [https://git.rustlets.com](https://git.rustlets.com) | online1 (Cloud) | **PostgreSQL** |
| **STATION 2 (Local)** | [https://git2.rustlets.com](https://git2.rustlets.com) | Server2 (i9) | SQLite |
| **STATION 3 (Home)** | [https://git3.rustlets.com](https://git3.rustlets.com) | Server3 (Linstor) | SQLite |
| **MACBOOK (Mobile)** | [https://git-mac.rustlets.com](https://git-mac.rustlets.com) | MacBook-DL | SQLite |
L'écosystème utilise **Forgejo Actions** pour automatiser la génération des releases et l'application des patchs.
### Runner de Build
- **Station** : Server 3 (S3).
- **Service** : `act_runner` (Forgejo Runner).
- **Rôle** : Déporte la charge de compilation et de build hors du Server 2 (i9) pour préserver sa stabilité thermique.
### Pipeline de Release (`opencode-pipeline`)
Le dépôt centralise la logique de construction :
1. **Extraction** : Récupère le code depuis le dépôt officiel.
2. **Mutation** : Applique les "rustlets-editions" (Logo, Prompts, Path Patches).
3. **Build** : Compilation via Bun/Rust.
4. **Déploiement** : Mise à jour automatique du dossier `RELEASE/opencode`.
### Ajout d'un nouveau projet (Workflow recommandé)
1. **Créer le dépôt sur le Master** : Allez sur [https://git.rustlets.com](https://git.rustlets.com) et créez un nouveau dépôt.
2. **Clonage local** : Clonez-le sur votre station de travail (Server2 ou MacBook).
3. **Miroir de secours (Optionnel)** :
- Allez dans les paramètres du dépôt sur le Master.
- Activez le **Miroir Push** vers `git2.rustlets.com` ou `git3.rustlets.com`.
- Cela garantit que votre code est physiquement présent sur vos machines locales en temps réel.
### Synchronisation des gros fichiers (Git LFS)
Git LFS est installé sur toutes les stations pour gérer les artéfacts et les binaires volumineux sans saturer la base de données.
| :---------------- | :--------------- | :-------------- | :--------- |
| **HTTP (Nginx)** | 23000 | 33000 | 43000 |
| **SSH (Forgejo)** | 22222 | 32222 | 42222 |
### Réinitialiser l'accès Admin
ssh rc "echo $SUDO_PASSWORD | sudo -S -u leblondx /opt/RUSTLETS/FORGEJO/bin/forgejo admin user upsert --admin --username leblondx --email leblondx@proton.me --password VOTRE_PASS"
_Dernière mise à jour : 11 Mars 2026_