anchorage_layer_simple/docs/DOMAINS_AND_PORTS.md
ncantu 6bf37be44e Cron restart services (bitcoind, mempool), service-login-verify, website-skeleton, docs
**Motivations:**
- Consigner l'état actuel du dépôt (cron, service-login-verify, website-skeleton, userwallet, docs).
- Centraliser les modifications en attente.

**Root causes:**
- N/A (commit groupé).

**Correctifs:**
- N/A.

**Evolutions:**
- Cron quotidien restart services : script local sans SSH, systemd (bitcoin-signet, bitcoin, APIs, dashboard, userwallet, website-skeleton) + Docker (mempool, bitcoin-signet-instance).
- Feature cron-restart-services-local : documentation et règle scripts locaux / pas d'SSH.
- service-login-verify : module vérification login (buildAllowedPubkeys, verifyLoginProof, nonceCache).
- website-skeleton : app iframe UserWallet, config, systemd unit.
- userwallet : collectSignatures, relay.
- docs : DOMAINS_AND_PORTS, README, WEBSITE_SKELETON ; features userwallet-contrat-login, timeouts-backoff, service-login-verify.

**Pages affectées:**
- data/restart-services-cron.sh, data/restart-services.log, data/sync-utxos.log
- features/cron-restart-services-local.md, features/service-login-verify.md, features/userwallet-contrat-login-reste-a-faire.md, features/userwallet-timeouts-backoff.md
- docs/DOMAINS_AND_PORTS.md, docs/README.md, docs/WEBSITE_SKELETON.md
- configure-nginx-proxy.sh
- service-login-verify/ (src, dist, node_modules)
- userwallet/src/utils/collectSignatures.ts, userwallet/src/utils/relay.ts
- website-skeleton/
2026-01-28 00:48:37 +01:00

200 lines
6.8 KiB
Markdown

# Domaines et Ports - Infrastructure Certificator
**Auteur** : Équipe 4NK
**Date** : 2026-01-24
**Version** : 1.0
## Vue d'Ensemble
Ce document liste tous les domaines, ports et services de l'infrastructure Certificator Bitcoin Signet.
## Domaines et Services
### Domaines Principaux
| Domaine | Service | Port Local | Description |
|---------|---------|------------|-------------|
| `certificator.4nkweb.com` | API d'Ancrage | 3010 | API REST pour ancrer des documents |
| `watermark.certificator.4nkweb.com` | API Filigrane | 3022 | API REST pour ajouter des filigranes et ancrer |
| `antivir.certificator.4nkweb.com` | API ClamAV | 3023 | API REST pour scanner les fichiers (antivirus) |
| `dashboard.certificator.4nkweb.com` | Dashboard | 3020 | Interface web de supervision |
| `faucet.certificator.4nkweb.com` | API Faucet | 3021 | API REST pour distribuer des sats |
| `mempool.4nkweb.com` | Mempool | 3015 | Explorateur de blockchain Bitcoin |
| `skeleton.certificator.4nkweb.com` | Website skeleton | 3024 | Site squelette iframe UserWallet |
### Configuration Nginx
Tous les domaines sont routés via le proxy Nginx sur le serveur `192.168.1.100` (proxy).
**Configuration du proxy :**
- Point d'entrée unique : `4nk.myftp.biz` (DynDNS)
- Routage HTTPS vers les services backend appropriés
- Certificats SSL/TLS : Let's Encrypt (renouvellement automatique)
## Ports Fixes
### Ports des APIs (Fixés dans les services systemd)
| Port | Service | API | Fichier de Service |
|------|---------|-----|-------------------|
| 3010 | API d'Ancrage | `api-anchorage` | `api-anchorage/anchorage-api.service` |
| 3020 | Dashboard | `signet-dashboard` | `signet-dashboard/signet-dashboard.service` |
| 3021 | API Faucet | `api-faucet` | `api-faucet/faucet-api.service` |
| 3022 | API Filigrane | `api-filigrane` | `api-filigrane/filigrane-api.service` |
| 3023 | API ClamAV | `api-clamav` | `api-clamav/clamav-api.service` |
| 3024 | Website skeleton | `website-skeleton` | `website-skeleton/website-skeleton.service` |
**Important :** Les ports 3010, 3020, 3021, 3022, 3023, 3024 sont fixes et définis dans les fichiers de service systemd. Ils ne peuvent pas être modifiés sans modifier les services.
### Ports Bitcoin Core
| Port | Protocole | Service | Description |
|------|-----------|---------|-------------|
| 38332 | TCP | RPC | Interface JSON-RPC pour contrôler le nœud |
| 38333 | TCP/UDP | P2P | Réseau peer-to-peer Bitcoin Signet |
| 28332 | TCP | ZMQ | Publication des blocs bruts |
| 28333 | TCP | ZMQ | Publication des transactions brutes |
| 28334 | TCP | ZMQ | Publication des hash de blocs |
### Ports Mempool
| Port | Protocole | Service | Description |
|------|-----------|---------|-------------|
| 3015 | HTTP/HTTPS | Web | Interface web Mempool (exposé via nginx) |
| 8999 | HTTP | API | Mempool Backend API (interne) |
## Services Systemd
Tous les services sont configurés avec systemd pour un redémarrage automatique.
### Liste des Services
```bash
# Vérifier le statut de tous les services
sudo systemctl status anchorage-api
sudo systemctl status signet-dashboard
sudo systemctl status faucet-api
sudo systemctl status filigrane-api
sudo systemctl status clamav-api
sudo systemctl status website-skeleton
```
### Commandes de Gestion
```bash
# Démarrer un service
sudo systemctl start <service-name>
# Arrêter un service
sudo systemctl stop <service-name>
# Redémarrer un service
sudo systemctl restart <service-name>
# Voir les logs
sudo journalctl -u <service-name> -f
# Activer au démarrage
sudo systemctl enable <service-name>
# Désactiver au démarrage
sudo systemctl disable <service-name>
```
## Architecture Réseau
```
Internet
├─→ 4nk.myftp.biz (DynDNS)
│ └─→ 192.168.1.100 (proxy) - Point d'entrée unique
│ │
│ ├─→ certificator.4nkweb.com → 192.168.1.103:3010 (API Anchorage)
│ ├─→ watermark.certificator.4nkweb.com → 192.168.1.103:3022 (API Filigrane)
│ ├─→ antivir.certificator.4nkweb.com → 192.168.1.103:3023 (API ClamAV)
│ ├─→ dashboard.certificator.4nkweb.com → 192.168.1.103:3020 (Dashboard)
│ ├─→ skeleton.certificator.4nkweb.com → 192.168.1.105:3024 (Website skeleton)
│ ├─→ faucet.certificator.4nkweb.com → 192.168.1.103:3021 (API Faucet)
│ └─→ mempool.4nkweb.com → 192.168.1.104:3015 (Mempool)
```
## Vérification des Ports
### Vérifier qu'un port est en écoute
```bash
# Vérifier un port spécifique
sudo ss -tlnp | grep :3010
# Vérifier tous les ports des APIs
sudo ss -tlnp | grep -E ':(3010|3020|3021|3022|3023|3024)'
```
### Tester la connectivité
```bash
# Tester depuis le serveur
curl http://localhost:3010/health
curl http://localhost:3020/health
curl http://localhost:3021/health
curl http://localhost:3022/health
curl http://localhost:3023/health
# Tester depuis l'extérieur (via domaine)
curl https://certificator.4nkweb.com/health
curl https://dashboard.certificator.4nkweb.com/health
```
## Certificats SSL/TLS
Tous les domaines utilisent des certificats Let's Encrypt gérés automatiquement par Certbot.
### Vérifier les certificats
```bash
# Sur le serveur proxy (192.168.1.100)
sudo certbot certificates
# Vérifier un certificat spécifique
openssl s_client -connect certificator.4nkweb.com:443 -servername certificator.4nkweb.com
```
### Renouvellement
Le renouvellement est automatique via Certbot. Pour forcer un renouvellement :
```bash
sudo certbot renew
```
## DNS
Tous les domaines utilisent des enregistrements CNAME pointant vers `4nk.myftp.biz` (DynDNS).
**Exemple de configuration DNS (Gandi) :**
```
certificator.4nkweb.com. 3600 IN CNAME 4nk.myftp.biz.
watermark.certificator.4nkweb.com. 3600 IN CNAME 4nk.myftp.biz.
antivir.certificator.4nkweb.com. 3600 IN CNAME 4nk.myftp.biz.
dashboard.certificator.4nkweb.com. 3600 IN CNAME 4nk.myftp.biz.
faucet.certificator.4nkweb.com. 3600 IN CNAME 4nk.myftp.biz.
```
## Notes Importantes
1. **Ports fixes** : Tous les ports des APIs sont fixes et définis dans les services systemd. Ne pas modifier sans mettre à jour les services.
2. **Redémarrage automatique** : Tous les services sont configurés avec `Restart=always` pour un redémarrage automatique en cas d'échec.
3. **Sécurité** : Les services utilisent `NoNewPrivileges=true` et `PrivateTmp=true` pour une meilleure sécurité.
4. **Logs** : Tous les logs sont envoyés vers `journald` et peuvent être consultés avec `journalctl`.
5. **Environnement** : Les variables d'environnement (ports, hosts) sont définies dans les fichiers de service systemd.
## Références
- [Documentation Infrastructure Cloud 4NK](../Infrastructure_Cloud_4NK.md) (si disponible)
- [Documentation Maintenance](./MAINTENANCE.md)
- [Documentation Environnement](./ENVIRONMENT.md)