À propos du projet

# Présentation de RelayAB RelayAB est une passerelle API IA auto-hébergée (station de relais) conçue pour partager de manière sécurisée et contrôlée les clés API des services IA en amont avec un petit nombre d'utilisateurs, tout en offrant une gestion fine des autorisations et de l'utilisation. Elle prend en charge le déploiement en un clic sur Vercel et est compatible avec les protocoles API d'OpenAI et d'Anthropic. ## Fonctionnalités principales - **Multi-utilisateurs et rôles** : prend en charge deux rôles, administrateur (admin) et utilisateur normal (user). Les mots de passe des utilisateurs sont stockés sous forme de hachage unidirectionnel bcrypt. - **Gestion des quotas de crédits** : l'administrateur peut attribuer à chaque compte un montant total de crédits et les modèles accessibles. Toutes les clés API d'un compte partagent ces crédits ; une fois épuisés, tout s'arrête. - **Services en libre-service pour les utilisateurs** : les utilisateurs normaux peuvent créer, renommer, activer/désactiver ou supprimer leurs clés API depuis la console, et modifier eux-mêmes leur mot de passe. - **Contrôle fin des clés** : chaque utilisateur peut créer plusieurs clés API, chacune pouvant être configurée indépendamment avec une date d'expiration, un état d'activation et une liste blanche de modèles (ne pouvant que restreindre la liste blanche du compte). - **Protocoles compatibles** : prend en charge les protocoles OpenAI Chat Completions et Anthropic Messages, ainsi que le mappage des modèles côté client vers les modèles réels en amont. - **Stockage sécurisé** : les clés des fournisseurs en amont sont chiffrées avec AES-256-GCM et stockées dans Redis. La perte de la clé maîtresse rendra les données définitivement inaccessibles. - **Interface multilingue** : le chinois est la langue par défaut, l'anglais est pris en charge, avec bascule en un clic dans le pied de page. - **Page de documentation conviviale** : fournit des adresses d'interface copiables et des exemples de code compatibles OpenAI/Anthropic. ## Stack technique - **Framework** : Next.js 15 App Router + React 19 + TypeScript 5 - **Stockage de données** : Upstash pour Redis (installation en un clic via Vercel Marketplace) - **Authentification** : iron-session 8 + bcryptjs (facteur de travail 12) - **Chiffrement** : AES-256-GCM + bcryptjs - **Intégration IA en amont** : Vercel AI SDK - **Tests** : Vitest + Playwright ## Démarrage rapide 1. **Installer les dépendances** : `pnpm install` 2. **Configurer les variables d'environnement** : copiez `.env.example` vers `.env.local`, il suffit de définir `RELAY_AUTH` (mot de passe principal, également mot de passe de connexion administrateur). Les variables Upstash sont automatiquement injectées sur Vercel. 3. **Démarrer le serveur de développement** : `pnpm dev`, accédez à `http://localhost:3000`. 4. **Connexion** : au premier démarrage, un compte administrateur est automatiquement créé, avec le nom d'utilisateur par défaut `admin` et le mot de passe correspondant à la valeur de `RELAY_AUTH`. ## Déploiement sur Vercel Le projet fournit un bouton de déploiement en un clic. Lors du déploiement, il suffit de renseigner la variable d'environnement `RELAY_AUTH`. Une fois le déploiement réussi, installez la base de données Upstash via Vercel Marketplace, puis redéployez (Redeploy) pour que cela prenne effet. ## Points de sécurité - Les mots de passe des utilisateurs sont hachés de manière unidirectionnelle avec bcrypt, impossible à inverser. - Les clés API des clients ne sont stockées que sous forme de hachage SHA-256 ; le texte en clair n'est renvoyé qu'une seule fois lors de la création. - Les clés des fournisseurs en amont sont stockées chiffrées avec AES-256-GCM ; la perte de la clé maîtresse est irréversible. - Les cookies de session sont chiffrés avec iron-session et configurés avec les attributs HttpOnly, Secure et SameSite=Lax. ## Documentation et exploitation Le projet fournit une documentation détaillée sur l'architecture, le modèle de données, les routes API, les tests et le déploiement. Il comprend également des scripts d'exploitation tels que bootstrap-admin, reset-password, rotate-key et list-usage. ## Licence MIT