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

4.9 KiB

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 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.

# 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 scripts/push-gitea.sh

Si vous avez modifié des fichiers directement sur Gitea (peu recommandé) :

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

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

# 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