# Récupérer le projet sur Gitea Ce tutoriel explique comment pousser le code de **La Voix du Peuple** depuis Replit vers votre instance Gitea, et comment vous synchroniser ensuite à votre rythme. > **État du dépôt** : branche `main`, synchronisée. Remote actif : `origin` (Gitea). --- ## Prérequis - Une instance Gitea accessible (`https://homegit.gyozamancave.fr`) - Un token d'accès Gitea avec droits `repository:write` - Le secret `GITEA_TOKEN` configuré dans Replit (voir Étape 1) --- ## Étape 1 — Stocker le token dans Replit Secrets Votre token Gitea doit être stocké comme secret Replit, jamais dans un fichier versionné. 1. Dans Replit → **Secrets** (cadenas dans le panneau latéral) 2. Ajouter un secret : - **Clé** : `GITEA_TOKEN` - **Valeur** : votre token Gitea Pour générer ou renouveler un token sur Gitea : **Paramètres du compte → Applications → Générer un token** Permissions requises : `repository` (lecture + écriture) --- ## Étape 2 — Pousser vers Gitea Le script `scripts/push-gitea.sh` gère l'authentification automatiquement. Dans le shell Replit : ```bash bash scripts/push-gitea.sh ``` Ce script : - Lit `GITEA_TOKEN` depuis l'environnement - Encode les identifiants en Base64 (compatibilité Git 2.50+) - Pousse la branche `main` vers `origin` (Gitea) --- ## Pourquoi ce script ? (contexte technique) Git 2.50+ ignore les tokens embarqués dans les URLs (`https://user:token@host/...`) pour des raisons de sécurité. La solution est de passer l'en-tête `Authorization: Basic` explicitement via `-c http.extraHeader`. ```bash # Ce que fait le script, en détail : B64=$(printf '%s' "billisdead:${GITEA_TOKEN}" | base64 -w0) git -c "http.extraHeader=Authorization: Basic ${B64}" push origin main ``` --- ## Étape 3 — Récupérer les mises à jour depuis Replit Chaque fois que vous voulez synchroniser votre Gitea avec l'état actuel du projet : ```bash bash scripts/push-gitea.sh ``` Si vous avez modifié des fichiers directement sur Gitea (peu recommandé) : ```bash # Récupérer les changements Gitea d'abord B64=$(printf '%s' "billisdead:${GITEA_TOKEN}" | base64 -w0) git -c "http.extraHeader=Authorization: Basic ${B64}" pull origin main --rebase bash scripts/push-gitea.sh ``` --- ## Étape 4 — Cloner depuis Gitea sur votre serveur de production Sur votre serveur RockyLinux / Debian : ```bash git clone https://homegit.gyozamancave.fr/billisdead/la-voix-du-peuple.git cd la-voix-du-peuple # Copier et adapter les variables d'environnement cp .env.example .env nano .env # Renseignez DATABASE_URL, MISTRAL_API_KEY, SESSION_SECRET # Installer les dépendances Python pip install -r artifacts/flask-api/requirements.txt # Installer les dépendances Node pnpm install # Construire le frontend pnpm --filter @workspace/voix-du-peuple run build --config vite.config.selfhost.ts ``` --- ## Résumé des commandes utiles ```bash # Pousser vers Gitea (commande principale) bash scripts/push-gitea.sh # Voir l'état du dépôt git status git log --oneline -10 # Voir les remotes configurés git remote -v ``` --- ## Structure des branches | Branche | Usage | |---------|-------| | `main` | Code de production, stable — **seule branche à pousser vers Gitea** | | `replit-agent` | Branche de travail interne de l'agent Replit — ne pas pousser | --- ## Remotes configurés | Nom | URL | Usage | |-----|-----|-------| | `origin` | `https://homegit.gyozamancave.fr/billisdead/la-voix-du-peuple.git` | Gitea principal | | `gitsafe-backup` | `git://gitsafe:5418/backup.git` | Sauvegarde interne Replit | > **Important** : ne jamais inclure de token dans une URL de remote. Le token doit rester dans `GITEA_TOKEN` (Replit Secrets) et être transmis via le script. --- ## Contenu du dépôt (structure principale) ``` artifacts/ flask-api/ ← Backend Python Flask app.py ← Routes API ai_agent.py ← Intégration Mistral / OpenAI database.py ← Accès PostgreSQL requirements.txt ← Dépendances Python voix-du-peuple/ ← Frontend React + Vite src/ pages/ home.tsx ← Page principale (synthèse, partage, PDF) about.tsx ← À propos transparence.tsx ← Fonctionnement & données flyer.tsx ← Flyer QR code imprimable components/ accessibility-panel.tsx ← Panneau d'accessibilité hooks/ use-accessibility.tsx ← Contexte et persistance App.tsx ← Routing et navbar index.css ← Styles globaux, dark mode, accessibilité scripts/ push-gitea.sh ← Script de push sécurisé vers Gitea deploy/ nginx.conf ← Config Nginx production voix-du-peuple-api.service ← Unité systemd Gunicorn docs/ DAT.md ← Architecture technique DEX.md ← Exploitation WIKI.md ← Page wiki GITEA_TUTO.md ← Ce fichier ```