# Configuration Gitea Actions — Memento Ce document explique comment configurer le déploiement automatique via Gitea Actions. ## Architecture ``` Push sur main │ ▼ Gitea (gitea.parsanet.org) │ notifie ▼ Runner Proxmox (ubuntu-24.04) │ SSH ▼ Serveur Docker (192.168.1.190) ├── Met à jour .env.docker ├── git pull origin main ├── docker compose build memento-note └── docker compose up -d ``` --- ## Variables (non-sensibles) Aller sur : **`Momento → Settings → Actions → Variables`** | Nom | Exemple | Description | |-----|---------|-------------| | `APP_URL` | `http://192.168.1.190:3000` | URL publique de l'app (NEXTAUTH_URL) | | `ADMIN_EMAIL` | `admin@example.com` | Email promu ADMIN à l'inscription | | `ALLOW_REGISTRATION` | `true` | Autoriser les inscriptions publiques | | `POSTGRES_USER` | `memento` | Utilisateur PostgreSQL | | `POSTGRES_DB` | `memento` | Nom de la base de données | | `POSTGRES_PORT` | `5432` | Port PostgreSQL exposé sur l'hôte | | `AI_PROVIDER_TAGS` | `custom` | Fournisseur IA pour les étiquettes (`ollama`, `openai`, `custom`) | | `AI_MODEL_TAGS` | `google/gemma-3-27b-it` | Modèle pour les étiquettes | | `AI_PROVIDER_EMBEDDING` | `custom` | Fournisseur IA pour les embeddings | | `AI_MODEL_EMBEDDING` | `text-embedding-3-small` | Modèle pour les embeddings | | `AI_PROVIDER_CHAT` | `custom` | Fournisseur IA pour le chat | | `AI_MODEL_CHAT` | `google/gemma-3-27b-it` | Modèle pour le chat | | `CUSTOM_OPENAI_BASE_URL` | `https://openrouter.ai/api/v1` | URL de base du fournisseur custom | | `OLLAMA_BASE_URL` | `http://ollama:11434` | URL du serveur Ollama | | `EMAIL_PROVIDER` | `resend` | Fournisseur email (`resend` ou `smtp`) | | `SMTP_FROM` | `noreply@example.com` | Adresse expéditeur (obligatoire pour Resend en prod) | | `SMTP_HOST` | `smtp.gmail.com` | Serveur SMTP | | `SMTP_PORT` | `587` | Port SMTP | | `SMTP_USER` | `user@gmail.com` | Identifiant SMTP | | `SMTP_SECURE` | `false` | Forcer TLS/SSL | | `SMTP_IGNORE_CERT` | `false` | Ignorer les erreurs de certificat | | `MCP_MODE` | `sse` | Mode du serveur MCP | | `MCP_PORT` | `3001` | Port du serveur MCP | | `WEB_SEARCH_PROVIDER` | `searxng` | Fournisseur de recherche web | | `SEARXNG_URL` | `http://localhost:8080` | URL du serveur SearXNG | --- ## Secrets (sensibles) Aller sur : **`Momento → Settings → Actions → Secrets`** | Nom | Description | |-----|-------------| | `SSH_PRIVATE_KEY` | Clé SSH privée pour accéder à 192.168.1.190 | | `NEXTAUTH_SECRET` | Clé secrète NextAuth (générer avec `openssl rand -base64 32`) | | `POSTGRES_PASSWORD` | Mot de passe PostgreSQL | | `CUSTOM_OPENAI_API_KEY` | Clé API du fournisseur custom (OpenRouter, etc.) | | `OPENAI_API_KEY` | Clé API OpenAI (si fournisseur = openai) | | `RESEND_API_KEY` | Clé API Resend pour l'envoi d'emails | | `SMTP_PASS` | Mot de passe SMTP | | `BRAVE_SEARCH_API_KEY` | Clé API Brave Search (optionnel) | | `JINA_API_KEY` | Clé API Jina (optionnel) | --- ## Comportement - Si une variable/secret est **vide** dans Gitea → la valeur dans `.env.docker` sur le serveur est **conservée**. - Si une variable/secret est **renseignée** dans Gitea → elle **écrase** la valeur dans `.env.docker`. - Le fichier `.env.docker` n'est jamais supprimé, seulement mis à jour ligne par ligne. --- ## Email avec Resend ### Comment ça fonctionne Resend est un service d'envoi d'emails transactionnels (reset de mot de passe, notifications...). ### Étape 1 — Créer un compte Resend 1. Aller sur [resend.com](https://resend.com) → **Sign up** 2. Copier la clé API : `re_xxxxxxxxxxxx` 3. Ajouter comme secret Gitea : `RESEND_API_KEY = re_xxxxxxxxxxxx` ### Étape 2 — Vérifier votre domaine (obligatoire pour envoyer à tout le monde) > **Sans domaine vérifié** : Resend ne peut envoyer qu'**à l'adresse email du compte Resend**. > Cela bloque les emails de reset de mot de passe pour les autres utilisateurs. 1. Aller sur [resend.com/domains](https://resend.com/domains) → **Add Domain** 2. Entrer votre domaine, ex: `mondomaine.com` 3. Resend affiche des enregistrements DNS à ajouter chez votre registrar/Cloudflare : ``` Type Nom Valeur TXT _dmarc.mondomaine.com v=DMARC1; p=none; TXT mondomaine.com v=spf1 include:amazonses.com ~all CNAME resend._domainkey resend._domainkey.mondomaine.com → (valeur fournie par Resend) MX bounce.mondomaine.com feedback-smtp.us-east-1.amazonses.com ``` 4. Attendre 1-5 minutes → le statut passe à **"Verified"** ✅ ### Étape 3 — Configurer l'adresse expéditeur Dans les variables Gitea : ``` SMTP_FROM = noreply@mondomaine.com ``` Ou dans l'interface admin : **Admin → Settings → Configuration Email → Resend** ### Résumé | Situation | Comportement | |-----------|-------------| | Pas de domaine vérifié | Envoi uniquement vers l'email du compte Resend | | Domaine vérifié + `SMTP_FROM` configuré | Envoi vers n'importe qui ✅ | | `SMTP_FROM` vide | Utilise `noreply@mondomaine.com` si domaine vérifié, sinon `onboarding@resend.dev` | --- ## Déclencher un déploiement ### Automatique Chaque `git push` sur la branche `main` déclenche automatiquement le déploiement. ### Manuel (depuis Gitea) `Momento → Actions → "Deploy to Production" → Run workflow → Run workflow` ### Manuel (depuis le terminal) ```bash cd D:/dev1405/Momento git commit --allow-empty -m "ci: trigger deploy" git push origin main ``` --- ## Vérifier le déploiement 1. **Gitea → Actions** : suivre les logs en temps réel 2. **Sur le serveur** : ```bash docker compose -f /opt/memento/docker-compose.yml ps docker logs memento-web --tail=50 ``` 3. **Dans le navigateur** : `http://192.168.1.190:3000` --- ## Premier déploiement sur un nouveau serveur ```bash # Sur 192.168.1.190 : mkdir -p /opt/memento cd /opt/memento git clone https://gitea.parsanet.org/sepehr/Momento.git . # Générer les secrets si pas encore configurés dans Gitea : # openssl rand -base64 32 → NEXTAUTH_SECRET # openssl rand -hex 16 → POSTGRES_PASSWORD # Lancer le premier déploiement manuellement depuis Gitea Actions ``` Après le premier déploiement, promouvoir l'admin : ```bash docker exec memento-postgres psql -U memento -d memento \ -c "UPDATE \"User\" SET role='ADMIN' WHERE email='VOTRE_EMAIL';" ```