Dockerisation duniter 1.9

@aya quand tu aura le temps, ce serait génial si tu fait un peu synthèse de tous ça à ta sauce :slight_smile:

Bonsoir, pas un pro, loin s’en faut mais si je peux aider. Je tourne 2 noeuds duniter V1.8.5 108 mais pas de noeud miroir à ma connaissance.
Si je peux être d’une quelconque aide, n’hésitez pas.
Bon courage à vous,
Damery

J’ai mis à jour la conf sur mon noeud mirroir ǧ1 duniter.pini.fr.

Tu me diras si ça répond comme il faut.

1 Like

Merci @Pini !

Je viens de changer le noeud de g1-stats de g1.librelois.fr vers duniter.pini.fr: change for pini GVA endpoint · ff3e9486a8 - g1-stats - P2Git

edit:

et non ta un pbm: GraphQL Playground

{
  balance(script: "Do99s6wQR2JLfhirPdpAERSjNbmjjECzGxHNJMiNKT3P") {
    amount
  }
}
{
  "data": {
    "balance": null
  }
}

Ton noeud est peut être mal synchronisé sur la Ğ1, ou bien un pbm avec la db GVA ?

D’après Kazou mon noeud est correctement synchronisé.

Comment diagnostiquer un problème avec la base de données GVA ?

EDIT : en fait sur ce noeud je n’ai activé GVA qu’à postériori, et pas pendant la synchro initiale. Est-ce que ça pourrait expliquer le pb ?

1 Like

Systemd n’est pas utile pour gérer les containers duniter, car docker est un serveur, et si installé correctement, il est géré par systemd, et c’est docker qui gère la relance des containers.

Mon nœud est installé via docker-compose et se relance automatiquement en cas de plantage. La politique de relance se gère avec un paramètre du genre restart_policy dans le docker-compose.

Par contre si tu lance un container manuellement avec docker run, alors il ne sera pas relancé au reboot, et si rien n’est précisé en option de la commande, il s’arrête en cas de panne.

1 Like

Oui probablemenr, je crois qu’il te faut compiler Dex et utiliser la commande dex migrate de mémoire lol

edit: oui tout est là: Prototype de GVA - #14 by elois

1 Like

Bon, je ne comprends pas trop. J’ai voulu resynchroniser avec --gva mais duniter a refusé cette option. J’ai donc fait une synchro standard puis j’ai passé un coup de dex migrate.

Après cette opération le noeud redémarre bien, a l’air syncrhonisé, mais l’URL gva/playground retourne une erreur 503. Je n’ai rien vu de bizarre dans les logs. qui annoncent un démarrage correct du service GVA :

2022-12-04T14:41:12+00:00 - info: generated self endpoints: ["GVA S duniter.pini.fr 443 gva"]                                                                                                                      
2022-12-04T14:41:12+00:00 - info: GvaServer::start: conf=GvaConf { enabled: true, ip4: 0.0.0.0, ip6: None, path: "gva", playground: true, port: 30901, remote_host: Some("duniter.pini.fr"), remote_port: Some(443), remote_path: None, remote_tls: None, whitelist: [127.0.0.1, ::1] }
2022-12-04T14:41:12+00:00 - info: GVA server listen on http://0.0.0.0:30901/gva
2022-12-04T14:41:12+00:00 - info: Server::run; addr=0.0.0.0:30901
2022-12-04T14:41:12+00:00 - info: listening on http://0.0.0.0:30901

Comment diagnostiquer ça ?

EDIT : non c’est bon. C’était un souci de conf de mon reverse proxy. C’est bien reparti, mais je n’obtiens pas mieux sur le test gva/playground :

{
  "data": {
    "balance": null
  }
}

Ola !

Je vous ai préparé une petite branche pour tester la version docker : Files · release/1.9 · Yann Autissier / duniter · GitLab

@pini je viens d’intégrer un docker nginx pour exposer les routes gva avec des headers acces-control-allow personnalisés je suis parti sur nginxproxy/nginx-proxy c’est bien celui la que tu utilises ? Tu saurais m’expliquer comment tu fais le routage multi path/ports avec ?

Il restera ensuite à prévoir un script de migration docker pour l’upgrade et on peut sortir une release 1.9 :slight_smile:

2 Likes

C’est un fork perso de nginxproxy/nginx-proxy que j’utilise, justement pour permettre le multi-ports. Le nom de l’image docker est pinidh/nginx-proxy. Et j’y ajoute pinidh/acme-companion (fork de nginxproxy/acme-companion) pour la gestion automatique des certificats.

1 Like

Je viens de regarder tes commits, bravo !!

Merci infinement pour ça, dit nous quand tout est carré, je dois pouvoir faire docker-compose up -d et j’ai duniter 1.9 qui tourne en mirroir avec GVA accessible et fonctionnel :slight_smile:

1 Like

Bon je suis parti des images docker de @pini pour créer une configuration nginx par défaut qui devrait fonctionner le docker-compose up est proche :slight_smile:

Quelle commande que je peux utiliser dans le healthcheck du docker pour surveiller duniter ?
J’ai essayé un duniter status mais ca me renvoie une errno 2 :frowning: pas bon signe ?

@francoislibre tu parlais d’un paramètre --store-txs aussi mais je n’ai pas encore croisé cette option tu pourrais m’expliquer un peu en quoi ca consiste ?

je ne vois pas pk tu as besoin de nginx en container ?

Je veux pas de gestion SSL intra container hein, perso j’ai un reverse proxy derrière dans tous les cas sur une autre VM

Ah pour les routes GVA et compagnie c’est ça ? Ainsi dans mon reverse proxy j’aurais que 1 seul port à écouter c’est ça l’intéret ?

hâte de tester vos confs :slight_smile:

c’est vrai pas vraiment besoin de nginx au final j’ai un load balancer aussi de mon côté pour gérer le ssl, mais bon ca m’aura permis de rentrer un peu dans nginx-proxy ca me plait bien :slight_smile:
Au final j’ai toujours un problème avec GVA je n’arrive pas à l’activer.
Il ne prend pas en compte mes variables d’environnement DUNITER_GVA_* et la commande duniter dans mon docker ne supporte pas l’option start --gva :frowning:

1 Like

Il n’y a plus besoin de cette option depuis un momoent, je ne sais pas sur quoi tu te base mais ce n’est pas à jours, la doc ne doit pas être à jours là dessus et sur d’autres trucs…

Normalement ya rien besoin de faire hormis config le json conf.json
et faire écouter tout les ports sur 0.0.0.0 dedans

Ce paramètre permet de stocker les transactions en local sur le noeud : par exemple j’en ai besoin pour mes outils d’analyse de données (https://gviz.analysons.com/transactions)

Bon j’ai beau mettre ce que je veux dans le conf.json ou comme variable d’environnement j’arrive pas à lancer gva le port 30901 ne répond pas :frowning:

/var/lib/duniter/duniter_default $ ps axu
PID   USER     TIME  COMMAND
    1 duniter   0:00 bin/duniter --home /var/lib/duniter direct_webstart
   19 duniter   0:24 node --max-old-space-size=4096 bin/duniter_js --home /var/lib/duniter --loglevel info direct_webstart --webmhost 0.0.0.0
   76 duniter   0:00 /bin/sh
  286 duniter   0:00 ps axu
/var/lib/duniter/duniter_default $ nc -v localhost 30901
/var/lib/duniter/duniter_default $ ls
conf.json                data                     duniter.db               duniter.log              g1-test                  keyring.yml              modules-conf             peers.db                 rs_duniter_rCURRENT.log
/var/lib/duniter/duniter_default $ cat conf.json
{
 "currency": "g1-test",
 "endpoints": [],
 "rmEndpoints": [],
 "upInterval": 3600000,
 "c": 0.0488,
 "dt": 86400,
 "dtReeval": 631152,
 "ud0": 1000,
 "stepMax": 5,
 "sigPeriod": 86400,
 "sigReplay": 1051920,
 "sigValidity": 12623040,
 "msValidity": 6311520,
 "sigQty": 5,
 "xpercent": 0.8,
 "percentRot": 0.67,
 "powDelay": 0,
 "avgGenTime": 150,
 "dtDiffEval": 12,
 "medianTimeBlocks": 24,
 "httplogs": false,
 "udid2": false,
 "timeout": 3000,
 "isolate": false,
 "forksize": 100,
 "switchOnHeadAdvance": 3,
 "nonWoTPeersLimit": 100,
 "txsMempoolSize": 200,
 "sigStock": 100,
 "sigWindow": 1051920,
 "idtyWindow": 1051920,
 "msWindow": 1051920,
 "msPeriod": 1051920,
 "udTime0": 1496527200,
 "udReevalTime0": 1496570400,
 "cpu": 0.8,
 "nbCores": 1,
 "loglevel": "info",
 "prefix": 1,
 "nobma": false,
 "bmaWithCrawler": false,
 "upnp": true,
 "dos": {
  "whitelist": [
   "127.0.0.1"
  ],
 "maxcount": 50,
  "burst": 20,
  "limit": 40,
  "maxexpiry": 10,
  "checkinterval": 1,
  "trustProxy": true,
  "includeUserAgent": true,
  "errormessage": "Error",
  "testmode": false,
  "silent": false,
  "silentStart": false,
  "responseStatus": 429
 },
 "gva": {
  "enabled": true,
  "host": "0.0.0.0",
  "port": 30901,
  "path": "gva",
  "subscriptionsPath": "gva-sub",
  "remoteHost": "g1-test.autissier.net",
  "remotePort": 443
 },
 "ws2p": {
  "uuid": "b0e031cc",
  "privateAccess": true,
  "publicAccess": true,
  "preferedOnly": false,
  "privilegedOnly": false,
  "upnp": true
 },
 "proxiesConf": {
  "reachingClearEp": "clear",
  "forceTor": false
 },
 "rootoffset": 0,
 "storage": {
  "transactions": false,
  "wotwizard": false
 },
 "remoteport": 443,
 "ipv4": "127.0.0.1",
 "remotehost": "g1-test.autissier.net"
}
/var/lib/duniter/duniter_default $ env
DUNITER_GVA_PATH=gva
VIRTUAL_HOST=g1-test.autissier.net
DUNITER_SYNC_OPTS=
NODE_VERSION=10.24.1
HOSTNAME=cfc8c86fb3d3
YARN_VERSION=1.22.5
SHLVL=1
DUNITER_START_OPTS=direct_webstart
HOME=/duniter
OLDPWD=/var/lib/duniter
VIRTUAL_PORT=10901
DUNITER_BMA_IP4=0.0.0.0
DUNITER_WS2P_REMOTE_PATH=ws2p
DUNITER_GVA_REMOTE_PATH=gva
DUNITER_MANUAL_CONFIG=false
DUNITER_GVA_WHITELIST=["127.0.0.1", "::1"]
DUNITER_BMA_REMOTE_HOST=g1-test.autissier.net
DUNITER_POW_NBCORES=1
DUNITER_WS2P_HOST=0.0.0.0
TERM=xterm
DUNITER_GVA_SUBSCRIPTIONS_PATH=gva/subscription
DUNITER_BMA_REMOTE_PORT=443
DUNITER_BMA_ENABLED=true
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DUNITER_GVA_IP4=0.0.0.0
VIRTUAL_PATH=/
DUNITER_GVA_IP6=::
DUNITER_GVA_PORT=30901
DUNITER_WS2P_PORT=20901
DUNITER_GVA_REMOTE_HOST=g1-test.autissier.net
DUNITER_WS2P_REMOTE_HOST=g1-test.autissier.net
DUNITER_GVA_REMOTE_SUBSCRIPTIONS_PATH=gva/subscription
DUNITER_GVA_REMOTE_TLS=false
DUNITER_WS2P_PUBLIC=true
DUNITER_POW_PREFIX=
DUNITER_AUTO_SYNC=true
DUNITER_GVA_REMOTE_PORT=443
DUNITER_POW_CPU=0.8
DUNITER_WS2P_REMOTE_PORT=443
PWD=/var/lib/duniter/duniter_default
DUNITER_SYNC_HOST=g1-test.duniter.org
DUNITER_GVA_ENABLED=true
DEBUG_ENTRYPOINT=true
/var/lib/duniter/duniter_default $ cd
~ $ node bin/duniter_js --version
1.9.0-dev
~ $ node bin/duniter_js --help |grep tx
~ $ node bin/duniter_js --help |grep gva

Je n’ai pas l’option --store-txs dont tu parles @francoislibre je suis bien sur la bonne version ?
J’ai loupé un truc à la compil ?

avec duniter --help regarde comment conf GVA en mode interactif, je crois me souvenir de ce problème, Duniter ne parse pas le json alors qu’il devrait, mais attends les paramètres via le mode CLI interactif

edit:

Et passe ça à true surtout avant pour voir!

Et là tu n’est pas dans ton home, normalement faut éditer ta conf user dans ~/.config/duniter/duniter_default/conf.json

Si ta une conf user ici, je crois qu’elle surcharge celle que tu édites là

ok j’ai bien ce répertoire ~/.config/duniter/duniter_default mais pas de fichier de conf dedans.
Si j’active la variable DUNITER_MANUAL_CONFIG il boucle sur : Waiting for initial configuration file… Please copy your configuration file to ‘$profile_default/conf.json.orig’
Je vais le lancer duniter en debug pour voir si il prend bien le fichier en compte.