Repository navigation
Home FR
English · 🌐 Français
Bienvenue. Ce wiki est le compagnon how-to du README — guides task-oriented pour chaque fonctionnalité, écrits pour l'opérateur qui fait tourner Arenet sur son homelab.
Si tu débutes : commence par Installation, puis suis Routes pour mettre live ton premier host proxifié. Tout le reste est une référence feature-by-feature.
- Installation — Docker, systemd natif, wizard de premier boot
- Routes — ta première route de reverse proxy, TLS, upstreams, alias, filtrage IP source, règles par chemin, import d'un Caddyfile
- Services TCP / UDP — relayer du TCP ou de l'UDP brut (messagerie, bases de données, SSH, WireGuard) en préservant l'IP réelle du client
- DNS Providers — 9 fournisseurs DNS (OVHcloud, Cloudflare, Hetzner, Route 53…) pour les certificats wildcard (DNS-01), avec test de connexion
- Topology — dashboard live avec visualisation de trafic en temps réel
- WAF — Coraza + OWASP CRS, opt-out par route, exclusions ciblées depuis un événement, règles guidées, éditeur SecLang avec testeur
- CrowdSec — réputation IP communautaire, setup bouncer LAPI
- Country Block — listes allow/deny basées GeoIP par route
- Rate Limit — throttling événements/fenêtre par route
- SSO OIDC — intégration authentik / Keycloak / Authelia + RBAC, pour se connecter à Arenet lui-même
- Forward auth — placer votre IdP devant une application qui n'a pas de connexion propre
- Mettre à jour Arenet — workflow de mise à niveau manuelle (Docker + binaire), rollback, notes de sécurité
- Backup & Restore — export config complète, import avec résolution sentinel, disaster recovery
- Alerting — channels, règles threshold + state, Discord/email/webhook
- Custom Error Pages — templates HTML par route avec placeholders Caddy
- API (OpenAPI) — l'API d'administration, les jetons de compte de service, la page de doc intégrée
- Troubleshooting — diagnostic des symptômes, pièges communs, décodage des logs
Arenet est un reverse proxy single-binary qui combine Caddy v2 (le moteur HTTP, auto-HTTPS + HTTP/3 + ACME) avec :
- Une UI d'admin pour configurer routes, certificats, paramètres de sécurité
- Une stack sécurité intégrée : WAF (Coraza + OWASP CRS), réputation IP (CrowdSec), blocage par pays, rate limiting
- Une surface d'observabilité live : dashboard topologie avec particules en temps réel, métriques par route, log d'activité unifié, audit trail
- Un sous-système d'alerting natif avec routing multi-canal (Discord, email, webhook)
- Backup/restore de toute la config via l'UI
Le tout en un seul binaire Go (~100 Mo) backé par BoltDB + SQLite — pas de sidecars, pas de dépendances externes au-delà de l'infra propre de l'opérateur (DNS, instance CrowdSec optionnelle, serveur SMTP optionnel, IdP optionnel).
Conçu pour l'opérateur qui fait tourner 5 à 50 routes sur un seul host (homelab, petite entreprise, freelance). Pas conçu pour des déploiements cloud multi-tenant, pas conçu pour des scénarios d'ingress controller k8s. Si tu veux une posture production sans la complexité production, Arenet est l'audience cible.
- Les pages get-started sont des tutoriels avec des commandes copy-paste que tu peux suivre top-to-bottom.
- Les pages feature expliquent une seule capacité en profondeur : ce qu'elle fait, quand l'utiliser, comment la configurer, pièges communs.
- Les pages opérations couvrent les tâches de cycle de vie (backup, recovery, câblage d'alerting).
- Chaque page se termine par une section "See also" liant les sujets connexes et les fichiers pertinents dans le dossier
docs/du repo principal (pour les opérateurs qui veulent creuser l'architecture).
Si tu trouves un trou ou veux contribuer à une page, ouvre une issue.
Ce wiki suit Arenet v2.40.x (la ligne de release stable courante). Les versions plus anciennes peuvent différer en surface de feature ; consulte les release notes en cas de doute.
| Concept | Chemin UI | Chemin API | Stockage |
|---|---|---|---|
| Routes | /routes |
/api/v1/routes |
BoltDB bucket routes
|
| Services TCP / UDP | /tcp-services |
/api/v1/tcp-services |
BoltDB bucket tcp_services
|
| Certificats | /certs |
/api/v1/certificates |
Caddy storage + cert tracker |
| DNS providers |
/settings (DNS Providers) |
/api/v1/settings/dns-providers |
BoltDB dns_providers bucket |
| Événements WAF | /security |
/api/v1/security/events |
SQLite table waf_event
|
| Événements cert |
/logs (badge CERT) |
/api/v1/observability/cert-events |
SQLite table cert_event
|
| Audit log | /audit |
/api/v1/audit/events |
BoltDB bucket audit
|
| Règles d'alerting |
/alerting (onglet Rules) |
/api/v1/alerting/rules |
BoltDB bucket alert_rules
|
| Config OIDC | /settings |
/api/v1/settings/oidc |
BoltDB key oidc_config
|
| Users | /users |
/api/v1/users |
BoltDB bucket users
|
| Snapshot backup |
/settings (section Backup) |
/api/v1/admin/backup + /admin/restore
|
Tous les buckets sérialisés en JSON |
Port admin par défaut : :8001, loopback uniquement. Pour un accès LAN : ARENET_ADMIN_BIND=0.0.0.0:8001 sur systemd, ou publier 8001:8001 sur Docker (la variable n'y a aucun effet — l'image passe --admin-port, et un flag gagne).
Toutes optionnelles — chaque variable a un défaut safe. Définis-les de la même façon dans les deux modes de déploiement :
-
Docker — un bloc
environment:dansdocker-compose.yml(ou-e VAR=valuesurdocker run). -
systemd / binaire — des lignes dans
/etc/arenet/arenet.env(sourcé par l'unit viaEnvironmentFile=), ouEnvironment="VAR=value"dans l'unit.
| Variable | Défaut | Rôle |
|---|---|---|
ARENET_ADMIN_BIND |
127.0.0.1:8001 |
Adresse de bind de l'UI/API d'admin (0.0.0.0:8001 pour le LAN ; sans effet sous Docker). |
ARENET_DATA_DIR |
/var/lib/arenet |
Dossier d'état (BoltDB + SQLite). |
ARENET_HTTP_PORT / ARENET_HTTPS_PORT
|
:80 / :443
|
Ports d'écoute du data-plane public. |
ARENET_ACME_EMAIL |
(aucun) | Email de contact pour l'émetteur ACME (notices Let's Encrypt). |
ARENET_UPDATE_CHECK_INTERVAL |
24h |
Cadence du vérificateur de mises à jour (durée Go, min 1h ; le check s'active dans Réglages → Mises à jour, pas par env). |
ARENET_TRUSTED_PROXIES |
(aucun) | CIDRs dont le X-Forwarded-For est de confiance (derrière un proxy/LB frontal). |
ARENET_UI_ORIGIN |
(aucun) | Origin du SPA pour les redirects de callback OIDC quand l'UI est servie séparément. |
ARENET_CROWDSEC_API_URL / ARENET_CROWDSEC_API_KEY
|
(aucun) | Câblage LAPI CrowdSec — voir CrowdSec. |
ARENET_GEOIP_MMDB |
/var/lib/arenet/GeoLite2-City.mmdb |
Chemin vers la base GeoLite2-City fournie par l'opérateur (ou téléchargée automatiquement via Réglages → GeoIP). |
ARENET_GEOIP_ASN_MMDB |
GeoLite2-ASN.mmdb à côté de la base City |
Chemin vers la base GeoLite2-ASN utilisée par les règles ASN (téléchargée automatiquement avec la base City). |
ARENET_PUBLIC_IP |
(auto) | Force l'IP publique détectée du serveur (topology / carte geo). |
ARENET_TOPOLOGY_TICK_MS |
2000 |
Intervalle de push WebSocket de la topology, en ms (arrondi à un multiple de 1000). |
Lors d'une mise à niveau : les variables d'environnement sont fournies par toi — Arenet n'écrit jamais dans ton
.envni ton compose (un service exposé au réseau ne doit pas éditer sa propre config système ; même raisonnement que pourquoi il n'y a pas d'auto-update). Les nouvelles variables d'une release sont listées dans les notes de cette release ; ajoute celles que tu veux à ton.env/ compose. Chaque variable a un défaut safe, donc une mise à niveau ne nécessite jamais d'éditer ta config — non définie = « utilise le défaut ».
- Home · Accueil
- Installation · Installation 🇫🇷
- Routes · Routes 🇫🇷
- TCP / UDP services · Services TCP / UDP 🇫🇷
- DNS Providers · DNS Providers 🇫🇷
- Topology · Topology 🇫🇷
- WAF · WAF 🇫🇷
- CrowdSec · CrowdSec 🇫🇷
- Country Block · Country Block 🇫🇷
- Rate Limit · Rate Limit 🇫🇷
- OIDC SSO · OIDC SSO 🇫🇷
- Forward auth · Forward auth 🇫🇷
- Certificates · Certificats 🇫🇷
- Updating Arenet · Mettre à jour 🇫🇷
- Backup & Restore · Backup & Restore 🇫🇷
- Alerting · Alerting 🇫🇷
- Custom Error Pages · Custom Error Pages 🇫🇷
- API (OpenAPI) · API (OpenAPI) 🇫🇷
- Troubleshooting · Troubleshooting 🇫🇷