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
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_TOKENconfiguré 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é.
- Dans Replit → Secrets (cadenas dans le panneau latéral)
- Ajouter un secret :
- Clé :
GITEA_TOKEN - Valeur : votre token Gitea
- Clé :
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_TOKENdepuis l'environnement - Encode les identifiants en Base64 (compatibilité Git 2.50+)
- Pousse la branche
mainversorigin(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