Skip to content
Projets

corvus-gateway/corvus has 9 GitHub stars and 2 forks. Star changes are not measured yet. Last checked 2026-11-11 07:08 UTC. Last push 2026-11-08.

Comment ces chiffres sont mesurés

Corvus AWPG — self-hosted Active Web Protection Gateway: reverse proxy, free SSL, attack blocking, live monitoring and an access queue

What you can do

  • Proxy hosts with wildcards, WebSocket, HTTP/2, forced HTTPS and custom Nginx snippets
  • Notes on hosts and streams, to remember what each one is for (searchable)
  • Custom locations: route paths (e.g. /api) to their own upstream, with the host's protections
  • Redirection hosts: send domains to another domain (301/302/303/307/308, optionally keeping the path), with the same TLS and protection

Progression mesurée des étoiles

in 24h
Mise à jour retardée
in 7 days
Historique en cours
in 15 days
Historique en cours
in 1 month
Historique en cours

Variations nettes sur des périodes qui se chevauchent, pas des totaux quotidiens. Les mesures absentes restent vides. Les étoiles indiquent l’intérêt, pas la qualité.

docs/readme/README_fr.md

Original

English · 한국어 · 简体中文 · 日本語 · Русский · Français · Deutsch · Español


Corvus

Active Web Protection Gateway

Corvus est une passerelle auto-hébergée placée devant vos services web. Elle est aussi simple à exploiter que Nginx Proxy Manager — domaines, redirection et SSL gratuit en quelques clics — et elle surveille, protège et contrôle en plus le trafic qui la traverse : supervision en direct, blocage des attaques, limitation de débit et file d'accès pour absorber les pics de trafic. Tout s'exécute sur votre propre serveur ; aucun trafic n'est envoyé vers un cloud tiers.

Corvus demo

Objectif du projet

Les petites équipes finissent généralement avec un reverse proxy pour le TLS, un WAF distinct qu'elles ne règlent jamais, et aucune idée de ce qui se passe quand un lancement ou une attaque survient. Corvus réunit tout cela dans un seul composant avec des valeurs par défaut sûres : la détection des attaques de base fonctionne dès qu'un hôte est ajouté, sans écrire la moindre règle, et chaque option avancée reste facultative. L'objectif est une passerelle que l'on installe en cinq minutes et à laquelle on peut encore faire confiance le jour où le trafic est multiplié par dix.

Corvus n'est pas un fork de Nginx Proxy Manager. C'est une nouvelle implémentation (plan de données OpenResty, plan de contrôle en Go, console React) capable d'importer une configuration NPM existante.

Fonctionnalités

Proxy et TLS

  • Hôtes proxy avec jokers (wildcards), WebSocket, HTTP/2, HTTPS forcé et extraits Nginx personnalisés
  • Notes sur les hôtes et les streams, pour se souvenir à quoi sert chacun (avec recherche)
  • Emplacements personnalisés : des chemins (ex. /api) vers leur propre upstream, avec les protections de l'hôte
  • Hôtes de redirection : renvoyer des domaines vers un autre domaine (301/302/303/307/308, en conservant éventuellement le chemin), avec le même TLS et la même protection
  • Certificats Let's Encrypt gratuits (HTTP-01, ou DNS-01 via Cloudflare, DigitalOcean, DuckDNS, Gandi, GoDaddy, Hetzner, Namecheap, avec des identifiants de fournisseur enregistrés et réutilisables) avec renouvellement automatique, ou import des vôtres (remplaçables sur place lors du renouvellement)
  • Flux (streams) : rediriger des ports TCP/UDP (bases de données, SSH, MQTT, serveurs de jeu) vers un autre hôte, avec terminaison TLS optionnelle pour TCP
  • Les noms d’hôte inconnus reçoivent au choix une page 404, une connexion fermée ou une redirection
  • Véritable IP client derrière Cloudflare ou des proxys de confiance ; protection par mot de passe optionnelle par hôte
  • Préréglages d'en-têtes de sécurité par hôte (Basique / Strict : nosniff, politiques de frame et de referrer, CSP en mode rapport seul, attributs de cookie HttpOnly/SameSite/Secure), sans jamais écraser ce que l'application envoie déjà
  • Compression gzip des réponses texte (activée par défaut), limite de taille d'envoi et délai d'attente de l'amont par hôte
  • Chaque modification est validée avec openresty -t, appliquée de façon atomique et peut être annulée
  • La console signale une nouvelle version de Corvus, avec un lien vers ses notes de version (désactivable)

Corvus Sentinel — moteur de sécurité

  • Règles de sécurité : correspondance sur IP, liste d'IP, pays, chemin, requête, méthode, en-tête ou liste de User-Agent → bloquer, autoriser, journaliser ou soumettre à un défi, globalement ou par hôte
  • Listes d'IP et de User-Agent tenues à jour depuis une URL (p. ex. nœuds de sortie Tor, listes de bots malveillants ; préréglages inclus), actualisées en arrière-plan et redéployées uniquement lorsqu'elles changent
  • Défi navigateur sans service tiers : une preuve de travail JavaScript (difficulté réglable) ou une simple vérification par cookie, avec un cookie de passage signé et lié à l'IP
  • Mode « sous attaque » par hôte : chaque visiteur doit relever le défi — activé à la main, ou automatiquement tant que le nombre de requêtes par seconde ou la part de requêtes bloquées dépasse un seuil (avec des alertes à l'activation et à la désactivation)
  • Inspection du corps des requêtes JSON, formulaire et multipart (journalisation ou blocage)
  • Correctifs virtuels en un clic pour les CVE récentes (React2Shell, wp2shell, PHP-CGI, Vite, n8n …)
  • Mises à jour de signatures gérées, acceptées uniquement si elles sont signées et plus récentes (pas de falsification, pas de rétrogradation)
  • Bannissement automatique des IP récidivistes, avec escalade et exemptions ; bannissement immédiat optionnel en cas de mauvais comportement (trop de réponses 4xx par IP et par site)
  • Limites de débit avec mode simulation (dry-run) ; blocage des chemins d'exploitation prêt à l'emploi

File d'accès

  • Admettre les visiteurs jusqu'à une capacité donnée et mettre les autres en file d'attente équitablement lors des pics
  • Débit d'admission, politique fail-open / fail-closed, compteurs actifs/en attente en direct, libération d'urgence
  • Page d'attente localisée en 8 langues

Supervision et alertes

  • Requêtes/s en direct, codes d'état, latence p50/p95/p99, détail par hôte et par chemin
  • Recherche dans le journal des requêtes et export CSV/JSON, événements de sécurité, historique persistant avec rétention et rotation des journaux
  • Alertes vers Slack, Mattermost, Discord, Teams, Telegram ou webhooks signés
  • /metrics Prometheus

Administration

  • Rôles, MFA (TOTP + codes de récupération), authentification unique OIDC, jetons d'API
  • Liste d'autorisation d'IP pour la console d'administration, journal d'audit, historique des déploiements
  • SQLite par défaut ou PostgreSQL ; console d'administration en 8 langues avec thèmes clair et sombre

Durci par défaut

  • Conteneurs non root avec système de fichiers racine en lecture seule et sans capacités Linux
  • Redis protégé par un mot de passe généré et une ACL minimale
  • OpenResty compilé à partir de sources dont la signature est vérifiée

Captures d'écran

Tableau de bord

Supervision du trafic Règles de sécurité
Supervision du trafic Règles de sécurité
Hôte proxy Files d'accès
Hôte proxy Files d'accès

Installation rapide

  1. Installez Docker avec le plugin Compose.
  2. Créez un fichier docker-compose.yml comme celui-ci :
services:
  corvus:
    image: 'ghcr.io/corvus-gateway/gateway:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '9443:9443'
    volumes:
      - ./data:/data

C'est toute l'installation : la passerelle, la console d'administration et le stockage de la file d'attente d'accès fonctionnent dans ce seul conteneur. Consultez la documentation pour les options.

  1. Démarrez votre stack avec
docker compose up -d
  1. Lisez le jeton de configuration à usage unique
docker compose logs corvus | grep setup_token
  1. Connectez-vous à la console d'administration sur https://<your-server>:9443, saisissez le jeton et créez le premier administrateur. La console utilise un certificat auto-signé tant que vous n'avez pas configuré le vôtre.

[!TIP] Faites pointer le DNS de votre domaine vers le serveur, ajoutez un hôte proxy et demandez un certificat Let's Encrypt dans le même formulaire.

Mise à jour

docker compose pull
docker compose up -d

Les paramètres, certificats et l'historique dans ./data sont conservés ; les modifications de la base de données sont appliquées automatiquement au démarrage.

Documentation

La configuration, l'installation renforcée, les hôtes de destination, les flux, les sauvegardes, la migration depuis Nginx Proxy Manager, les règles de sécurité, la file d'attente d'accès et le dépannage sont décrits dans la documentation (en anglais et en coréen).

Performances

Mesuré avec le workflow de benchmark sur un runner ubuntu-24.04 hébergé par GitHub (4 vCPU AMD EPYC 9V45) : Corvus limité à 2 vCPU, wrk et le backend sur les deux autres, 64 connexions keep-alive, GET / avec une réponse de 3 octets.

Scénario req/s p50 p99 Mémoire
nginx 1.28 en reverse proxy (référence) 97,227 0.63 ms 1.16 ms 17 MB
Corvus, hôte par défaut 75,473 0.79 ms 1.83 ms 72 MB
Corvus, 30 règles + liste de 1,000 CIDR + blocage des exploits + en-têtes + limite de débit 54,585 1.12 ms 2.29 ms 77 MB
Corvus, HTTPS (ECDSA P-256), keep-alive 59,697 1.00 ms 2.18 ms 80 MB
Corvus, HTTPS, nouvelle poignée de main TLS à chaque requête 4,348 handshakes/s 5.88 ms 11.62 ms 88 MB
Corvus, file d'accès (visiteurs admis) 57,954 1.05 ms 2.22 ms 84 MB
Corvus, règle de défi (visiteurs munis d'un passe) 62,901 0.96 ms 1.94 ms 88 MB

Sur le traitement de base des requêtes, Corvus atteint environ les trois quarts du débit de nginx seul (pools de connexions keep-alive vers l'upstream, journal d'accès regroupé par worker) ; l'ensemble complet de protections — 30 règles avec une liste de 1,000 CIDR, blocage des exploits, en-têtes de sécurité et limite de débit — coûte environ 28 % de plus. Mise en garde : il s'agit d'un runner CI partagé, avec le générateur de charge sur la même machine et des réponses minuscules — les chiffres sont prudents et servent à comparer des scénarios et des versions, pas à garantir une capacité. La mémoire inclut le plan de contrôle et le Valkey intégré.

Développement

npm --prefix web ci && npm --prefix web run build      # admin UI → embedded into the Go binary
go test ./control/...                                   # unit tests
go build -o bin/corvus-control ./control/cmd/corvus-control
CORVUS_GATEWAY=0 CORVUS_ADMIN_TLS=0 CORVUS_DATA_DIR=./tmp bin/corvus-control   # console only, no OpenResty
Chemin Contenu
gateway/ Plan de données : OpenResty + Lua (règles, inspection du corps, file d'accès)
control/ Plan de contrôle (Go) : base de paramètres, génération de configuration, déploiement/rollback, API
web/ Console d'administration (React + Vite + TypeScript)
deploy/ Dockerfile, build OpenResty vérifié, fichiers Compose, tests d'intégration
tools/ Outils de test de charge et de signature des lots de règles

Sécurité

Merci de signaler les vulnérabilités de manière privée — voir SECURITY.md.

Licence

Apache License 2.0 © 2026 Jikwang Moon. Données IP-pays fournies par DB-IP (CC BY 4.0). Voir NOTICE.

Explorer des projets similaires