Appel à lancer des nœuds wotwizard

J’ai l’impression de l’avoir déjà fait plusieurs fois auparavant, mais voici un nouvel appel à lancer des noeuds wotwizard. Pour rappel :

  • wotwizard-ui (:fox_face: extension ou wotwizard.axiom-team.fr) est juste une “coquille vide” qui se connecte à un des serveurs wotwizard listés dans le menu à gauche
  • le serveur “trentesaux” est hébergé par moi-même dans mon salon à côté d’un nœud Duniter qui crashe régulièrement et que je ne souhaite pas redémarrer automatiquement, donc il est régulièrement désynchronisé
  • le serveur “axiom-team” est hébergé par poka et moi sur l’infra Axiom-Team (cf Infrastructure de l'écosytème Duniter) et devrait mieux fonctionner

Comme vous le savez, je travaille sur :desert_island: Duniter et poka travaille sur :lizard: Ğecko, l’administration de serveurs wotwizard n’est donc pas notre priorité. Si vous voulez augmenter la résilience du service wotwizard, il faut donc installer plus d’instances.

Pour cela, il faut :

  1. un nœud Duniter avec l’option wotwizard dans son fichier de configuration conf.json :
"storage": {
    "wotwizard": true
},
  1. le binaire wwServer disponible sur https://git.duniter.org/gerard94/wotwizard/-/releases
  2. ajouter votre endpoint dans la liste graphql/endpoints · master · clients / wotwizard-ui · GitLab

@gerard94 semble avoir supprimé tout le code et la documentation de wotwizard il y a trois semaines :thinking:
Donc demandez de l’aide ci-dessous. Je ne vais pas écrire une doc détaillée pour wotwizard si personne n’a envie de l’installer, je préfère concentrer mes efforts sur Duniter v2.

5 Likes

Voici quelques fichiers qui peuvent être utiles même si c’est très standard :

mon service wwServer pour systemd
[Unit]
Description=wotwizard server
ConditionPathExists=/home/hugo/.config/duniter/duniter_default/wotwizard-export.db
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/hugo/wotwizard
ExecStart=/home/hugo/wotwizard/wwServer -du /home/hugo/.config/duniter/duniter_default/wotwizard-export.db
Restart=no

[Install]
WantedBy=default.target
ma configuration nginx pour l'endpoint graphql de wotwizard
# proxypass pour wwServer
server {
	listen 443 ssl http2;
	listen [::]:443 ssl http2;
	server_name gql.wotwizard.trentesaux.fr;
	
	ssl_certificate		/etc/letsencrypt/live/gql.wotwizard.trentesaux.fr/fullchain.pem;
	ssl_certificate_key	/etc/letsencrypt/live/gql.wotwizard.trentesaux.fr/privkey.pem;

	location / {
		add_header Access-Control-Allow-Methods 'POST';
		add_header Access-Control-Allow-Headers *;
		add_header Access-Control-Allow-Origin * always;

		proxy_pass http://localhost:8080;
		proxy_redirect http://localhost:8080 https://gql.wotwizard.trentesaux.fr;
	}
}
1 Like

2 posts were merged into an existing topic: Duniter “saute” régulièrement

Je suis partant pour installer un noeud wotwizard :slight_smile:

5 Likes

Ben non, ils sont complets.

Je n’en doute pas, mais où sont-ils ? Sur https://git.duniter.org/gerard94/wotwizard/ je ne vois plus qu’un fichier README et un commit “initial commit” datant d’il y a trois semaines.

Sur la branche master.

Ooooh ! Merci :slight_smile:
Mais pourquoi avoir créé une branche “main” il y a trois semaines ? Peut-on la supprimer ? Oui puis-je définir la branche “master” comme branche principale ?

Il faut mettre à jour la documentation (INSTALL.md · master · gerard94 / WotWizard · GitLab) qui mentionne Duniter 1.7. Et notamment l’ajout de l’argument obligatoire en ligne de commande -du.

master branch set as default.

2 Likes

Merci. La documentation vient d’être mise à jour, ainsi qu’une nouvelle version de l’exécutable (corrections mineures).

1 Like

J’ai un serveur toujours allumé, y a t’il un docker pour que je puisse mettre wotwizard dessus?

1 Like

Il n’y a pas de docker pour wotwizard pour l’instant. Je n’avais pas les compétences à l’époque pour écrire un Dockerfile, et je commence à apprendre mais n’ai pas beaucoup de temps. Si quelqu’un a envie d’essayer, ça serait une super contribution d’écrire le Dockerfile et de combiner duniter et wotwizard dans un docker-compose pour que ce soit hyper facile à installer. Chatgpt peut aider à commencer parce qu’il répond en général mieux que la documentation docker que je trouve abominable. On pourrait également écrire un bounty pour la dockerisation de wotwizard et récompenser en Ǧ1 la personne qui s’y colle. Et ça c’est plutôt facile à faire ^^

1 Like

Tiens, il n’y a pas wotwizard.duniter.org dans cette liste ? Pourtant je m’attèle à le maintenir en état de fonctionnement de façon permanente.

3 Likes

Il me semble que tu avais choisi de ne pas exposer l’API GraphQL car certaines requêtes pouvaient être très gourmandes, notamment le calcul de la betweeness centrality. Si tu exposes un endpoint graphql, on pourra l’ajouter à la liste.

1 Like

Je l’ai fais ce soir (oui certains s’occupent avec Netflix, moi je fais des Dockerfile et alors ??): MR!1

Voici un docker-compose prêt à l’emploi: https://git.duniter.org/gerard94/wotwizard/-/raw/dockeriser/docker-compose.yml?ref_type=heads

services:
  wotwizard:
    image: poka/wotwizard:latest
    restart: on-failure
    ports:
      - "8080:8080"
    volumes:
      - ~/.config/duniter:/app/data
      - data:/app/rsrc/duniter/System/

volumes:
  data:

Quelques points:

  • Assurez vous que Duniter tourne et que votre conf se trouve dans ~/.config/duniter, sinon éditez le volume du compose en conséquence

est toujours valide

  • Je n’ai pas fait de conf avec Duniter en docker car la seul version dockerisé que je connaisse est 1.9.0-dev, et il n’y a pas la possibilité d’éditer la conf.json facilement pour passer le storage wotwizard à true, que je sache
  • Je n’ai pas dockerisé Duniter 1.8.7 car je me demande si ça n’a pas déjà été fait par @Pini quelque part et que je n’ai juste pas vue.
  • J’ai fais en sorte que le container affiche les bon logs, c’est à dire venant du fichier rsrc/duniter/log.txt, car la sortie du build wwServer n’affiche rien après le numéro de version, ce qui est très trompeur, et très chiant…
  • J’ai passé le noeud wotwizard axiom-team en mode docker, là ça sync les blocs, je vais me coucher, en attendant c’est down, on verra bien demain si ça up (oui je test mes trucs en prod…)

Sinon juste docker compose up -d et votre noeud wotwizard server tourne sur le port 8080 ou celui que vous aurez définit dans le compose :slight_smile:

4 Likes

Duniter v1 est dockerisé oui, sur Docker hub il y a un repository Duniter avec plein d’images (v1, v2, outils divers) :

https://hub.docker.com/r/duniter/duniter

1 Like

D’accords je viens de trouver le Dockerfile: release/docker/Dockerfile · dev · nodes / typescript / duniter · GitLab

Reste que je ne sais pas comment faire pour :

  • Passer "wotwizard" à true dans le conf.json sans avoir à le monter (j’imagine que dans l’image il se trouve dans ~/config/duniter par defaut vue que non spécifier dans le Dockerfile
  • Partager les mêmes data duniter entre docker correctement (on peut monter ~/config/duniter mais encore une fois pas sûr que ce soit la meilleur approche)

Si @Pini à le temps/l’envie de se pencher là dessus, ou d’expliquer quoi faire, c’est cool.

Non par défaut c’est dans /var/lib/duniter

2 Likes

J’ai créé un noeud wotwizard en modifiant l’emplacement de la config:

services:
  wotwizard:
    image: poka/wotwizard:latest
    restart: on-failure
    ports:
      - "8080:8080"
    volumes:
      - ~/var/lib/duniter:/app/data
      - data:/app/rsrc/duniter/System/

volumes:
  data:

Portainer me marque qu’il est running, comment vérifier si le noeud fonctionne bien?

Non ça ne peut pas marcher comme ça. Il faut que tu utilises des volumes docker.

En supposant que tu ai quelque chose comme pour ton compose Duniter:

volumes:
  - duniter-data:/var/lib/duniter

Tu dois faire quelque chose comme ça pour wotwizard:

volumes:
  - duniter-data:/app/data/duniter

avec les deux config dans le même docker-compose.

Mais il faut tester ça, car il y a une écriture de fichier de conf dans le dockerfile qui ne doit pas être écrasé par la monté du volume.

Pour voir si ça marche regarde les logs de wotwizard, et regarde si au bout de 5 minutes il commence à déclacher la sync des bloc, ou si ça ne bouge pas.