Aller au contenu principal

Configuration

Le proxy se configure par variables d'environnement, toutes facultatives. Un fichier .env est chargé s'il existe.

VariableValeurPar défaut
LOG_LEVELpanic, fatal, error, warn, info, debug, traceinfo
PORTnombre8080
METRICS_PORTnombre9000
ENABLE_METRICSbooléentrue
ENABLE_PPROFbooléenfalse
BUFFER_SIZEnombre50
OUTBOUND_IPadresse IPvide
BIND_IPadresse IP0.0.0.0
DISCORD_URLURL sans cheminhttps://discord.com
REQUEST_TIMEOUTnombre (millisecondes)5000
CLUSTER_PORTnombre7946
CLUSTER_MEMBERSliste séparée par des virgulesvide
CLUSTER_ADVERTISE_ADDRadresse, nom d'hôte ou autovide
CLUSTER_DNSnom de domainevide
MAX_BEARER_COUNTnombre1024
DISABLE_HTTP_2booléentrue
BOT_RATELIMIT_OVERRIDESliste séparée par des virgulesvide
DISABLE_GLOBAL_RATELIMIT_DETECTIONbooléentrue

Serveur​

LOG_LEVEL​

Niveau de journalisation, transmis tel quel à logrus.

PORT et METRICS_PORT​

Ports sur lesquels le proxy écoute les requêtes et expose ses métriques.

ENABLE_METRICS et ENABLE_PPROF​

Active les métriques (les désactiver réduit un peu la consommation) et le profilage.

BIND_IP​

Adresse sur laquelle écoute le serveur HTTP, pour les requêtes comme pour les métriques. 127.0.0.1 n'accepte que les connexions locales, 10.0.0.42 seulement celles du réseau local.

BUFFER_SIZE​

Taille des canaux Go qui ordonnent les requêtes. La réduire économise de la mémoire, mais une fois un canal plein, les requêtes se disputent la place suivante : en période de forte charge, une partie d'entre elles n'est plus envoyée dans l'ordre.

Discord​

DISCORD_URL​

Destination des requêtes, sous forme de schéma et d'hôte sans chemin. Sert à placer le proxy devant un simulateur de Discord ou un proxy d'enregistrement.

OUTBOUND_IP​

Adresse locale depuis laquelle partent les requêtes vers Discord, par exemple 120.121.122.123.

REQUEST_TIMEOUT​

Temps d'attente maximal d'une réponse de Discord, sans compter l'attente due aux limites. Au-delà, le proxy répond 408.

DISABLE_HTTP_2​

Désactive HTTP/2 pour les requêtes vers Discord, à cause de quelques soucis du support HTTP/2 de Go. N'affecte pas le serveur du proxy.

MAX_BEARER_COUNT​

Nombre maximal de files de jetons Bearer, gardées dans un cache LRU. Une requête n'est jamais interrompue quand sa file est évincée, mais une taille trop faible peut augmenter les 429 si un jeton a beaucoup de requêtes en attente.

Limite globale​

BOT_RATELIMIT_OVERRIDES​

Limite globale de requêtes par seconde, pour les bots dont Discord a relevé la limite. Sans cette variable, chaque bot est limité à 50, la valeur documentée par Discord.

Format : l'identifiant utilisateur du bot (pas celui de l'application) et sa limite, séparés par :, sans espace :

BOT_RATELIMIT_OVERRIDES=392827169497284619:100,227115752396685313:80

DISABLE_GLOBAL_RATELIMIT_DETECTION​

À false, le proxy déduit la limite globale de /gateway/bot (50 pour une concurrence de 1, 500 pour 16, et une formule au-delà). Discord ne documente pas cette relation, et /gateway/bot est limité à 2 requêtes toutes les 5 secondes, dont les shards du bot ont besoin au démarrage : la détection est donc désactivée par défaut dans notre fork. Préférez BOT_RATELIMIT_OVERRIDES.

Cluster​

Voir Haute disponibilité pour le fonctionnement.

CLUSTER_PORT​

Port de communication avec les autres membres du cluster.

CLUSTER_MEMBERS​

Membres connus du cluster, séparés par des virgules, avec un port facultatif (sinon CLUSTER_PORT). Inutile de tous les lister : les autres sont découverts par un protocole de gossip. Prend le pas sur CLUSTER_DNS.

CLUSTER_MEMBERS=10.0.0.2,10.0.0.3:7244

CLUSTER_DNS​

Nom de domaine qui résout vers plusieurs membres du cluster, la méthode recommandée sur Kubernetes (avec un service headless, par exemple nirn-headless.default.svc.cluster.local). Le DNS ne transmet pas de port : tous les nœuds doivent alors utiliser le même CLUSTER_PORT.

CLUSTER_ADVERTISE_ADDR​

Adresse que ce nœud annonce aux autres. Vide, memberlist la choisit seul, ce qui dans un conteneur peut donner une adresse injoignable. Indiquez une adresse IP, un nom d'hôte, ou auto pour prendre la première adresse IPv4 hors boucle locale.

Variables instables​

DISABLE_401_LOCK​

Le proxy bloque définitivement une file après une 401 en fonctionnement normal. Cette variable désactive ce blocage, mais pas sa journalisation. Elle peut disparaître à tout moment.