docs: add GITEA-ACTIONS.md, fix Resend test mode error message
Some checks failed
Deploy to Production / Build and Deploy (push) Failing after 2s
Some checks failed
Deploy to Production / Build and Deploy (push) Failing after 2s
Made-with: Cursor
This commit is contained in:
150
GITEA-ACTIONS.md
Normal file
150
GITEA-ACTIONS.md
Normal file
@@ -0,0 +1,150 @@
|
||||
# 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
|
||||
|
||||
### Mode test (sans domaine vérifié)
|
||||
- Resend ne permet d'envoyer qu'**à l'adresse du compte Resend** (`devparsa75@gmail.com`).
|
||||
- L'adresse `from` utilisée automatiquement : `Memento <onboarding@resend.dev>`.
|
||||
|
||||
### Mode production (domaine vérifié)
|
||||
1. Vérifier un domaine sur [resend.com/domains](https://resend.com/domains)
|
||||
2. Configurer `SMTP_FROM` (variable Gitea) avec une adresse de ce domaine :
|
||||
```
|
||||
SMTP_FROM = noreply@parsanet.org
|
||||
```
|
||||
3. Resend utilisera cette adresse et pourra envoyer à n'importe qui.
|
||||
|
||||
---
|
||||
|
||||
## 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';"
|
||||
```
|
||||
@@ -96,6 +96,13 @@ async function sendViaResend(apiKey: string, { to, subject, html, attachments }:
|
||||
});
|
||||
|
||||
if (error) {
|
||||
// Resend test mode: can only send to the Resend account owner's email
|
||||
if (error.message?.includes('own email address') || error.name === 'validation_error') {
|
||||
return {
|
||||
success: false,
|
||||
error: `Mode test Resend : vous ne pouvez envoyer qu'à l'adresse du compte Resend. Pour envoyer à n'importe qui, vérifiez un domaine sur resend.com/domains et configurez SMTP_FROM avec une adresse de ce domaine.`,
|
||||
};
|
||||
}
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user