Add complete French (fr) and Chinese (zh) translations for all documentation: - Root files: README, CHANGELOG, SECURITY, BETA-RELEASE - docs/: All 16 core documentation files - DOCS/: All 19 deep-dive documents including embedded/ and archive/ - package/secubox/: All 123+ package READMEs - Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/ Total: 346 translation files created Each file includes language switcher links for easy navigation between English, French, and Chinese versions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
298 lines
8.8 KiB
Markdown
298 lines
8.8 KiB
Markdown
[English](README.md) | Francais | [中文](README.zh.md)
|
|
|
|
# Registre de Services SecuBox
|
|
|
|
Tableau de bord d'agregation de services unifie avec publication automatique vers HAProxy (clearnet) et Tor (services caches), incluant la surveillance de sante et la generation de codes QR.
|
|
|
|
## Fonctionnalites
|
|
|
|
- **Decouverte de Services** - Detecte automatiquement les services en cours d'execution depuis :
|
|
- Vhosts HAProxy
|
|
- Services caches Tor
|
|
- Ports en ecoute directe (netstat)
|
|
- Conteneurs LXC
|
|
- **Publication en Un Clic** - Publier des services vers clearnet et/ou Tor
|
|
- **Surveillance de Sante** - Statut DNS, certificat et pare-feu en temps reel
|
|
- **Verificateur de Disponibilite URL** - Verifier la configuration du domaine avant la mise en ligne
|
|
- **Codes QR** - Generer des codes QR pour un acces mobile facile
|
|
- **Page d'Accueil** - HTML statique auto-genere avec tous les services publies
|
|
|
|
## Tableau de Bord
|
|
|
|
### Panneau de Connectivite Reseau
|
|
|
|
Statut reseau en temps reel affichant :
|
|
- **IPv4 Publique** - Votre adresse IP externe avec nom d'hote DNS inverse
|
|
- **IPv6 Publique** - Adresse IPv6 si disponible
|
|
- **Port Externe 80/443** - Si les ports sont accessibles depuis Internet (teste le transfert du routeur amont/FAI)
|
|
- **Pare-feu Local** - Statut des regles de pare-feu OpenWrt
|
|
- **HAProxy** - Statut du conteneur proxy inverse
|
|
|
|
### Barre de Resume de Sante
|
|
|
|
Affiche le statut global du systeme en un coup d'oeil :
|
|
- Statut des ports pare-feu 80/443
|
|
- Statut du conteneur HAProxy
|
|
- Statut du daemon Tor
|
|
- Nombre de resolutions DNS
|
|
- Nombre de certificats sains
|
|
|
|
### Verificateur de Disponibilite URL
|
|
|
|
Avant de publier un service, verifiez que le domaine est correctement configure :
|
|
|
|
1. Entrez un domaine dans le verificateur (ex: `example.com`)
|
|
2. Cliquez sur "Verifier" pour valider :
|
|
- **Votre IP Publique** - Affiche vos adresses IPv4/IPv6 et DNS inverse
|
|
- **Resolution DNS** - Verifie que le domaine pointe vers votre IP publique (detecte les erreurs d'IP privee)
|
|
- **Accessibilite Internet** - Teste si les ports 80/443 sont accessibles depuis Internet (verification du routeur amont)
|
|
- **Pare-feu Local** - Statut des regles de pare-feu OpenWrt
|
|
- **Certificat SSL** - Certificat valide avec statut d'expiration
|
|
- **HAProxy** - Conteneur proxy inverse en cours d'execution
|
|
|
|
Le verificateur fournit des recommandations actionnables specifiques :
|
|
- Si le DNS pointe vers une IP privee (ex: 192.168.x.x), affiche l'IP publique correcte a utiliser
|
|
- Si les ports sont bloques exterieurement, conseille de verifier le transfert de port du routeur amont
|
|
- Affiche l'enregistrement DNS A exact a creer : `domaine.com → votre.ip.publique`
|
|
|
|
### Indicateurs de Sante des Services
|
|
|
|
Chaque service publie affiche des badges de sante en ligne :
|
|
|
|
| Badge | Signification |
|
|
|-------|---------------|
|
|
| Globe | DNS resout correctement |
|
|
| X | Resolution DNS echouee |
|
|
| Cadenas | Certificat valide (30+ jours) |
|
|
| Attention | Certificat expire bientot (7-30 jours) |
|
|
| Rouge | Certificat critique (<7 jours) |
|
|
| Mort | Certificat expire |
|
|
| Blanc | Aucun certificat configure |
|
|
| Oignon | Service cache Tor active |
|
|
|
|
## Publication d'un Service
|
|
|
|
### Publication Rapide (LuCI)
|
|
|
|
1. Allez dans **Services > Registre de Services**
|
|
2. Trouvez votre service dans "Services Decouverts"
|
|
3. Cliquez sur Publier pour une publication rapide
|
|
4. Ajoutez optionnellement :
|
|
- Domaine (cree un vhost HAProxy + demande un certificat ACME)
|
|
- Service cache Tor
|
|
|
|
### Publication CLI
|
|
|
|
```bash
|
|
# Lister les services decouverts
|
|
secubox-registry list
|
|
|
|
# Publier avec domaine (clearnet)
|
|
secubox-registry publish myapp 8080 --domain app.example.com
|
|
|
|
# Publier avec service cache Tor
|
|
secubox-registry publish myapp 8080 --tor
|
|
|
|
# Publier avec les deux
|
|
secubox-registry publish myapp 8080 --domain app.example.com --tor
|
|
|
|
# Depublier
|
|
secubox-registry unpublish myapp
|
|
```
|
|
|
|
### Ce qui se Passe a la Publication
|
|
|
|
Quand vous publiez un service avec un domaine :
|
|
|
|
1. **Backend Cree** - Backend HAProxy pointant vers le port local
|
|
2. **Vhost Cree** - Vhost HAProxy pour le domaine
|
|
3. **Pare-feu Ouvert** - Ports 80/443 ouverts depuis WAN (auto)
|
|
4. **Certificat Demande** - Certificat ACME via Let's Encrypt
|
|
5. **Page d'Accueil Mise a Jour** - HTML statique regenere
|
|
|
|
## API de Verification de Sante
|
|
|
|
### Obtenir les Infos Reseau
|
|
|
|
```bash
|
|
ubus call luci.service-registry get_network_info
|
|
```
|
|
|
|
Reponse :
|
|
```json
|
|
{
|
|
"success": true,
|
|
"lan_ip": "192.168.255.1",
|
|
"ipv4": {
|
|
"address": "185.220.101.12",
|
|
"status": "ok",
|
|
"hostname": "server.example.com"
|
|
},
|
|
"ipv6": {
|
|
"address": "2001:db8::1",
|
|
"status": "ok"
|
|
},
|
|
"external_ports": {
|
|
"http": { "accessible": true, "status": "open" },
|
|
"https": { "accessible": true, "status": "open" }
|
|
},
|
|
"firewall": {
|
|
"status": "ok",
|
|
"http_open": true,
|
|
"https_open": true
|
|
},
|
|
"haproxy": { "status": "running" }
|
|
}
|
|
```
|
|
|
|
### Verifier un Domaine Unique
|
|
|
|
```bash
|
|
ubus call luci.service-registry check_service_health '{"domain":"example.com"}'
|
|
```
|
|
|
|
Reponse :
|
|
```json
|
|
{
|
|
"success": true,
|
|
"domain": "example.com",
|
|
"public_ip": {
|
|
"ipv4": "185.220.101.12",
|
|
"ipv6": "2001:db8::1",
|
|
"hostname": "server.example.com"
|
|
},
|
|
"dns": {
|
|
"status": "ok",
|
|
"resolved_ip": "185.220.101.12"
|
|
},
|
|
"external_access": {
|
|
"status": "ok",
|
|
"http_accessible": true,
|
|
"https_accessible": true
|
|
},
|
|
"firewall": {
|
|
"status": "ok",
|
|
"http_open": true,
|
|
"https_open": true
|
|
},
|
|
"certificate": {
|
|
"status": "ok",
|
|
"days_left": 45
|
|
},
|
|
"haproxy": {
|
|
"status": "running"
|
|
}
|
|
}
|
|
```
|
|
|
|
Valeurs de statut DNS :
|
|
- `ok` - Le domaine pointe vers votre IP publique
|
|
- `private` - Le domaine pointe vers une IP privee (192.168.x.x, 10.x.x.x, etc.)
|
|
- `mismatch` - Le domaine pointe vers une IP publique differente
|
|
- `failed` - Resolution DNS echouee
|
|
|
|
### Verifier Tous les Services
|
|
|
|
```bash
|
|
ubus call luci.service-registry check_all_health
|
|
```
|
|
|
|
La reponse inclut la sante agregee pour tous les domaines publies.
|
|
|
|
## Depannage
|
|
|
|
### DNS ne Resout pas
|
|
|
|
1. Verifiez que l'enregistrement DNS A pointe vers votre IP publique
|
|
2. Verifiez avec : `nslookup example.com`
|
|
3. La propagation DNS peut prendre jusqu'a 48 heures
|
|
|
|
### Ports Pare-feu Fermes
|
|
|
|
1. Verifiez les regles de pare-feu : `uci show firewall | grep HAProxy`
|
|
2. Les ports devraient s'ouvrir automatiquement a la publication
|
|
3. Correction manuelle :
|
|
```bash
|
|
uci add firewall rule
|
|
uci set firewall.@rule[-1].name='HAProxy-HTTP'
|
|
uci set firewall.@rule[-1].src='wan'
|
|
uci set firewall.@rule[-1].dest_port='80'
|
|
uci set firewall.@rule[-1].proto='tcp'
|
|
uci set firewall.@rule[-1].target='ACCEPT'
|
|
uci commit firewall
|
|
/etc/init.d/firewall reload
|
|
```
|
|
|
|
### Certificat Manquant
|
|
|
|
1. Assurez-vous que le DNS du domaine est correctement configure
|
|
2. Assurez-vous que le port 80 est accessible depuis Internet
|
|
3. Demandez le certificat via HAProxy :
|
|
```bash
|
|
haproxyctl cert add example.com
|
|
```
|
|
|
|
### 503 Service Non Disponible
|
|
|
|
Causes courantes :
|
|
1. **Backend non en cours d'execution** - Verifiez si le service ecoute reellement
|
|
2. **Mauvais port backend** - Verifiez la configuration du backend HAProxy
|
|
3. **HAProxy non en cours d'execution** - Verifiez le statut du conteneur
|
|
|
|
```bash
|
|
# Verifier que le service ecoute
|
|
netstat -tln | grep :8080
|
|
|
|
# Verifier le statut HAProxy
|
|
haproxyctl status
|
|
|
|
# Verifier la config HAProxy
|
|
haproxyctl validate
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Parametres UCI
|
|
|
|
```bash
|
|
# Parametres principaux
|
|
uci set service-registry.main.enabled='1'
|
|
uci set service-registry.main.auto_tor='0' # Auto-creer Tor a la publication
|
|
uci set service-registry.main.auto_haproxy='0' # Auto-creer HAProxy a la publication
|
|
uci set service-registry.main.landing_auto_regen='1'
|
|
|
|
# Toggles des fournisseurs
|
|
uci set service-registry.haproxy.enabled='1'
|
|
uci set service-registry.tor.enabled='1'
|
|
uci set service-registry.direct.enabled='1'
|
|
uci set service-registry.lxc.enabled='1'
|
|
|
|
uci commit service-registry
|
|
```
|
|
|
|
## Emplacements des Fichiers
|
|
|
|
| Chemin | Description |
|
|
|--------|-------------|
|
|
| `/etc/config/service-registry` | Configuration UCI |
|
|
| `/www/secubox-services.html` | Page d'accueil generee |
|
|
| `/usr/sbin/secubox-registry` | Outil CLI |
|
|
| `/usr/sbin/secubox-landing-gen` | Generateur de page d'accueil |
|
|
| `/usr/libexec/rpcd/luci.service-registry` | Backend RPCD |
|
|
|
|
## Methodes RPCD
|
|
|
|
| Methode | Description |
|
|
|---------|-------------|
|
|
| `list_services` | Lister tous les services de tous les fournisseurs |
|
|
| `publish_service` | Publier un service vers HAProxy/Tor |
|
|
| `unpublish_service` | Supprimer un service de HAProxy/Tor |
|
|
| `check_service_health` | Verifier DNS/cert/pare-feu/acces externe pour le domaine |
|
|
| `check_all_health` | Verification de sante en lot pour tous les services |
|
|
| `get_network_info` | Obtenir les IPs publiques, accessibilite des ports externes, statut du pare-feu |
|
|
| `generate_landing_page` | Regenerer la page d'accueil statique |
|
|
|
|
## Licence
|
|
|
|
Licence MIT - Copyright (C) 2025 CyberMind.fr
|