Spaces:
Running
Running
| # Déploiement Emo Online — GitHub Pages + Hugging Face Spaces | |
| ## Architecture | |
| | Composant | Hébergement | URL | | |
| |-----------|-------------|-----| | |
| | **Frontend** (React) | GitHub Pages + domaine IONOS | **https://xeroxytb.com** | | |
| | **API** (FastAPI, LLM, Stripe, agent) | Hugging Face Spaces (Docker) | https://xroxx-emo-online-api.hf.space | | |
| | **MongoDB** | MongoDB Atlas | cluster EmoCluster | | |
| **Gratuit, sans carte bancaire** (Fly.io et Koyeb demandent une carte). | |
| --- | |
| ## 1. Domaine custom IONOS → GitHub Pages | |
| ### DNS chez IONOS (domaine `xeroxytb.com`) | |
| | Type | Nom / Host | Valeur | | |
| |------|------------|--------| | |
| | **A** | `@` | `185.199.108.153` | | |
| | **A** | `@` | `185.199.109.153` | | |
| | **A** | `@` | `185.199.110.153` | | |
| | **A** | `@` | `185.199.111.153` | | |
| | **CNAME** | `www` | `xeroxytb.github.io` | | |
| *(Les 4 enregistrements A sont requis pour la racine `@` avec GitHub Pages.)* | |
| ### GitHub | |
| 1. Repo **emo-online** → **Settings** → **Pages** | |
| 2. **Custom domain** : `xeroxytb.com` | |
| 3. Coche **Enforce HTTPS** (après validation DNS, ~10 min à 24 h) | |
| 4. Le fichier `emo/frontend/public/CNAME` contient déjà `xeroxytb.com` | |
| ### Google OAuth (obligatoire après changement de domaine) | |
| [Google Cloud Console](https://console.cloud.google.com/apis/credentials) → client OAuth : | |
| - **Origines JS** : `https://xeroxytb.com`, `https://www.xeroxytb.com` | |
| - **Redirect URI** (inchangé, côté API) : `https://xroxx-emo-online-api.hf.space/api/auth/google/callback` | |
| --- | |
| ## 2. GitHub Pages | |
| Settings → **Pages** → Source = **GitHub Actions** | |
| --- | |
| ## 3. Créer le Space Hugging Face (1 fois) | |
| 1. Compte gratuit : [huggingface.co/join](https://huggingface.co/join) (GitHub OK) | |
| 2. Crée un Space : [new-space?sdk=docker](https://huggingface.co/new-space?sdk=docker) | |
| - Owner : `XeroxYTB` | |
| - Name : `emo-online-api` | |
| - SDK : **Docker** | |
| - Visibility : **Public** | |
| 3. Token HF : [Settings → Access Tokens](https://huggingface.co/settings/tokens) (Write) | |
| - Secret GitHub : `HF_TOKEN` | |
| --- | |
| ## 3. Secrets du Space HF (Settings → Variables and secrets) | |
| Dans le Space `emo-online-api` → **Settings** → **Variables and secrets** : | |
| | Variable | Valeur | | |
| |----------|--------| | |
| | `MONGO_URL` | URI MongoDB Atlas | | |
| | `DB_NAME` | `emo` | | |
| | `EMO_PUBLIC_BACKEND_URL` | `https://xroxx-emo-online-api.hf.space` | | |
| | `EMO_FRONTEND_URL` | `https://xeroxytb.com` | | |
| | `CORS_ORIGINS` | `https://xeroxytb.com,https://www.xeroxytb.com,https://xeroxytb.github.io` | | |
| | `GOOGLE_CLIENT_ID` | Google Console | | |
| | `GOOGLE_CLIENT_SECRET` | idem | | |
| | `GROQ_API_KEY` | Groq gratuit (Llama, Gemma) | | |
| | `HF_TOKEN` | Hugging Face — router + sync Space | | |
| | `OPENROUTER_API_KEY` | **Manquant** — [openrouter.ai/keys](https://openrouter.ai/keys) | | |
| | `DEEPSEEK_API_KEY` | **Manquant** — [platform.deepseek.com](https://platform.deepseek.com/api_keys) | | |
| | `OPENAI_API_KEY` | ChatGPT (crédits requis) | | |
| | `ANTHROPIC_API_KEY` | Claude (crédits requis) | | |
| | `GEMINI_API_KEY` | Gemini (quota free) | | |
| | `EMO_ADMIN_EMAILS` | ton email | | |
| ### Ajouter les clés (automatisé) | |
| ```powershell | |
| # 1. Assistant interactif (ouvre les liens, remplit .env) | |
| powershell -ExecutionPolicy Bypass -File scripts\setup-llm-keys.ps1 | |
| # 2. Vérifier local + prod | |
| python scripts\check-llm-keys.py | |
| # 3. Pousser vers HF Space | |
| scripts\sync-hf-secrets.bat | |
| ``` | |
| Puis **Restart** le Space : [Settings → Restart](https://huggingface.co/spaces/Xroxx/emo-online-api/settings). | |
| Atlas **Network Access** : autorise `0.0.0.0/0`. | |
| --- | |
| ## 5. Google OAuth | |
| [Google Cloud Console](https://console.cloud.google.com/apis/credentials) : | |
| - **Origines JS** : `https://xeroxytb.com`, `https://www.xeroxytb.com` | |
| - **Redirect URI** : `https://xroxx-emo-online-api.hf.space/api/auth/google/callback` | |
| --- | |
| ## 6. Déployer | |
| Push sur `main` → workflow **Deploy** : | |
| 1. Push le code vers le Space HF (si `HF_TOKEN` configuré) | |
| 2. HF rebuild le Docker automatiquement | |
| 3. Publie le frontend sur GitHub Pages | |
| Test API : https://xroxx-emo-online-api.hf.space/api/health | |
| **Important** : utilise l’URL `*.hf.space`, pas la page Hub (`huggingface.co/spaces/...`). | |
| --- | |
| ## Dev local | |
| ```cmd | |
| cd emo\backend && start.bat | |
| cd emo\frontend && npm start | |
| ``` | |