Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
@@ -0,0 +1,141 @@
---
title: Hyvor Relay
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, development, email, smtp, transactional]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Development, https://github.com/hyvor/relay]
---
# 💻 Hyvor Relay
> **Service de mailing transactionnel open source** — envoyez vos emails applicatifs (magic links, receipts, notifications) via SMTP ou API HTTP, en self-hosted, comme alternative à Postmark, SendGrid et Amazon SES.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [relay.hyvor.com](https://relay.hyvor.com/) |
| **GitHub** | [hyvor/relay](https://github.com/hyvor/relay) |
| **License** | AGPL-3.0 |
| **Langage** | PHP (Laravel) |
| **Étoiles GitHub** | 623 ⭐ |
| **Catégorie** | Development, Email Transactionnel |
| **Référence** | [selfh.st Development](https://selfh.st/apps/?tag=Development) |
## 📝 Description
**Hyvor Relay** est un **service de mailing transactionnel self-hosted** qui permet d'envoyer des emails applicatifs (confirmations, magic links, notifications, receipts, OTP) via **SMTP** (port 1025) ou **API HTTP REST**. C'est la **réponse open source à Postmark, SendGrid et Amazon SES** : contrôle total des données, de la délivrabilité et des métriques, sans SaaS tiers.
Développé par **Hyvor** (éditeur de Hyvor Talk, Hyvor Blogs), Relay mise sur la **simplicité radicale** : un binaire PHP, une interface web claire, le strict nécessaire (pas de marketing automation ni de templates drag&drop). Il fait **une seule chose, bien** : router vos emails vers un provider sortant (SES, Postmark, Mailgun, SMTP générique) avec **fallback automatique**.
Pour les **indie hackers et SaaS self-hosted**, Relay résout le casse-tête « j'ai une app Laravel, je veux envoyer 10 000 emails/mois, je ne veux pas de Postmark à 15 $/mois et je ne veux pas que Google voie mes emails ». Il suffit de pointer `MAIL_HOST` vers Relay (port 1025) ou d'utiliser l'API REST avec une clé.
Fonctionnalités : **multi-providers avec fallback**, **DKIM/SPF/DMARC assistés**, **webhooks** de bounce/spam, **templates** avec variables, **statistiques** (delivered, opened, clicked), **suppression list** auto, **multi-tenants** par clé API scopée, **queue Laravel** interne (Redis ou DB).
## 🚀 Installation
### Via Docker (recommandé)
```yaml
# docker-compose.yml
version: '3.8'
services:
relay:
image: hyvor/relay:latest
container_name: hyvor-relay
restart: unless-stopped
ports:
- "1025:1025" # SMTP
- "8080:8080" # Console web
environment:
APP_URL: "https://relay.example.com"
DB_HOST: db
DB_DATABASE: relay
DB_USERNAME: relay
DB_PASSWORD: ***changeme***
REDIS_HOST: redis
MAIL_FROM_ADDRESS: "noreply@example.com"
PROVIDER_TYPE: "ses" # ses | postmark | mailgun | smtp
SES_KEY: "***"
SES_SECRET: "***"
SES_REGION: "eu-west-1"
volumes:
- relay_data:/var/www/html/storage
depends_on: [db, redis]
labels:
- "traefik.enable=true"
- "traefik.http.routers.relay.rule=Host(`relay.example.com`)"
- "traefik.http.routers.relay.tls.certresolver=letsencrypt"
db:
image: mysql:8
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ***rootpass***
MYSQL_DATABASE: relay
MYSQL_USER: relay
MYSQL_PASSWORD: ***changeme***
volumes:
- relay_db:/var/lib/mysql
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
relay_data:
relay_db:
```
### Installation manuelle
```bash
git clone https://github.com/hyvor/relay.git
cd relay
composer install --no-dev
cp .env.example .env
php artisan key:generate
php artisan migrate --seed
php artisan serve
```
## ⚙️ Configuration
1. **Provider sortant** (SES, Postmark, Mailgun, SMTP) — Relay relaie vers un provider avec IP dédiée, il n'envoie pas directement.
2. **Domaine** : console > Domains > copier les enregistrements DNS (DKIM, SPF, DMARC, MX retour).
3. **API key scopée** par domaine via `console > API Keys`.
4. **Laravel** : `MAIL_MAILER=smtp`, `MAIL_HOST=relay.example.com`, `MAIL_PORT=1025`, `MAIL_USERNAME=<api_key>`.
5. **Webhooks** : URL de bounce/spam à configurer sur le provider pour que Relay reçoive les notifications.
## 🔗 Alternatives
- **Postmark** — Référence du marché, excellent tracking, cloud uniquement et payant.
- **SendGrid** — Géant du transactionnel, plan gratuit 100/jour, politique de contenu stricte.
- **Amazon SES** — Le moins cher, mais vendor lock-in AWS.
- **Postal** — Serveur mail open source, plus complet (newsletters) mais plus complexe.
## 🔒 Sécurité
- 🔐 **HTTPS obligatoire** via [[app-traefik]] : les credentials SMTP et l'API key transitent en clair sinon.
- 🔒 **API keys scopées** : une clé par app/domaine, jamais une clé « admin » côté applicatif.
- 🛡️ **DKIM/SPF/DMARC corrects** : sans DNS bien configuré, vos emails tombent en spam (vérifier sur mail-tester.com).
- 🛡️ **Rate limiting** par clé API activé pour éviter qu'un bug n'envoie 100 000 mails.
- 🛡️ **Rétention des logs** d'email (30/90 j) pour la conformité RGPD.
## 📚 Ressources
- [Site officiel Hyvor Relay](https://relay.hyvor.com/)
- [Documentation](https://relay.hyvor.com/docs)
- [GitHub hyvor/relay](https://github.com/hyvor/relay)
- [Selfh.st — Development](https://selfh.st/apps/?tag=Development)
## 🔗 Pages Liées
- [[cat-development]] — Catégorie Development
- [[app-supabase]] — BaaS qui peut s'appuyer sur Relay pour SMTP sortant
- [[app-traefik]] — Reverse proxy HTTPS
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
- [[recettes-docker-compose]] — Templates Docker Compose