Files
la-voix-du-peuple/docs/GITEA_TUTO.md
T
pironantoine 03bb27c279 Update documentation to explain how to securely push code to Gitea
Update the GITEA_TUTO.md file to reflect changes in authentication methods and repository setup, including instructions for storing GITEA_TOKEN as a Replit secret and using a push script for secure uploads.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 923ae0e3-a363-4db8-b04a-e8baca2a1330
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: ffa8f38b-d6c8-48cc-9ccf-963475e8344c
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/8af7d2ec-2cc3-4ece-8af3-9f071488d072/923ae0e3-a363-4db8-b04a-e8baca2a1330/vOeFCU4
Replit-Helium-Checkpoint-Created: true
2026-04-04 14:05:03 +00:00

173 lines
4.9 KiB
Markdown

# 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
```