Installation d'un Pod Cesium+

Non, a mon avis c’est simplement que mon Pod Cs+ n’est plus joignable :confused: (encore un soucis avec Orange ! faut que j’aille à mon boulot pour vérifier). Du coup, le tien ne sais pas a qui envoyer sa fiche de pair. Tu vois ?
Tu peux donc remplacer dans la conf par celui de @bpresles par exemple.

OK
network.host: 127.0.0.1
duniter.host: localhost
duniter.p2p.includes.endpoints: [
« ES_CORE_API g1.data.presles.fr 443 »,
« ES_USER_API g1.data.presles.fr 443 »,
« ES_SUBSCRIPTION_API g1.data.presles.fr 443 »
]
je décommente ou pas ça: ?
duniter.p2p.includes.pubkeys: [
« ici c’est ma clé publique ou celle de presles ? »
]

Toujours « block »:"0- dans https://cesiumplus.guenoel.fr/network/peering
Je crois que je vais abandonner ce projet jusqu’à la prochaine assistance

tu peux laisser vide. Il s’agit d’un autre moyen de collecter les peers, par leur pubkey.
Tu peux laisser en commentaire (ou vide)

mais non, t’inquietes. Dis toi quand allant au bout tu nous aide, car cela nous oblige à formaliser d’avantage, corriger les coquilles, etc.

Voici le fichier config/elasticsearch.yml d’un Pod (celui du Sou) :

# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: g1-es-data

cluster.remote.host: g1.data.le-sou.org
cluster.remote.port: 443

# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: es-g1-01
#
# Add custom attributes to the node:
#
# node.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
# path.data: /path/to/data
#
# Path to log files:
#
# path.logs: /path/to/logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
# bootstrap.mlockall: true
#
# Make sure that the `ES_HEAP_SIZE` environment variable is set to about half the memory
# available on the system and that the owner of the process is allowed to use this limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 127.0.0.1
#
# Set a custom port for HTTP:
#
http.port: 9701

http.cors.allow-origin: "/.*/"
http.cors.enabled: true

# Internal transport layer
#
# transport.tcp.port: 9210-9220
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html>
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
# discovery.zen.ping.unicast.hosts: ["host1", "host2"]
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
#
# Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
#
# discovery.zen.minimum_master_nodes: 3
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery.html>
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
# gateway.recover_after_nodes: 3
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-gateway.html>
#
# ---------------------------------- Various -----------------------------------
#
# Disable starting multiple nodes on a single system:
#
# node.max_local_storage_nodes: 1
#
# Require explicit names when deleting indices:
#
# action.destructive_requires_name: true
#
# Security to isolate plugin classpath - /!\ WARNING: should be DISABLE for Duniter4j
#
security.manager.enabled: false
#
# ---------------------------------- Duniter4j ---------------------------------
#
# Enable duniter4j plugins
#
# duniter.enabled: false
#
# Delete then create all indices at startup - /!\ WARNING: DO NOT set to true in production
#
# duniter.indices.reload: true
#
# Default string analyzer
#
duniter.string.analyzer: french
#
# Enabling blockchain synchronization
#
duniter.blockchain.enable: true
#
# Force blockchain full synchronization - /!\ WARNING: all user events will be reset to 'unread'
#
#duniter.blockchain.reload: true
#duniter.blockchain.reload.from: 92500
#
# Duniter node address
#
duniter.host: 127.0.0.1
duniter.port: 10901
# duniter.useSsl: true
#
# Compute statistics on indices (each hour) ? (default: true)
#
# duniter.stats.enable: false
#
# ---------------------------------- Duniter4j security module -------------------
#
# Keyring, use to sign emitted documents (user events, subscription, etc.).
# If not set, random keys will be generated.
#
duniter.keyring.salt: '*****'
duniter.keyring.password: '*****'
#
# Enable security - will restrict HTTP access to only Duniter4j known indices - /!\ WARNING: should be enable for production use
#
duniter.security.enable: true
#
# ---------------------------------- Duniter4j P2P module -------------------------
#
# Enable P2P synchronize between ES peers ? (default: true)
#
duniter.p2p.enable: true
#
# Enable P2P websocket direct synchronisation ? (default: true)
#
#duniter.p2p.ws.enable: true
#
# Max peer time offset, in seconds (max peer's clock error) - use to request peer's data. (default: 3600 = 1hour)
#
duniter.p2p.peerTimeOffset: 7200
#
# Enable discovery on network peers, to automatically synchronize this peers (default: true)
#
duniter.p2p.discovery.enable: true
#
# Pass an initial list of hosts to perform synchronization when new node is started:
#
duniter.p2p.includes.endpoints: [
  "ES_CORE_API g1.data.duniter.fr 443",
  "ES_USER_API g1.data.duniter.fr 443",
  "ES_SUBSCRIPTION_API g1.data.duniter.fr 443"
]
#duniter.p2p.ping.endpoints: [
#   "g1:ES_USER_API server.e-is.pro 9222",
#   "g1:ES_SUBSCRIPTION_API server.e-is.pro 9222"
#]
#
# Pass a list of pubkeys to always synchronize (default: <empty>)
#
#duniter.p2p.includes.pubkeys: [
#  "38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE"
#]
#
# Enable a full synchro. This will compare each documents from other peers.
#
duniter.p2p.fullResyncAtStartup: true
#
# Enable publishing of pod endpoints to the network (see the peer document in Duniter protocol). (Default: '${duniter.p2p.enable}')
#
duniter.p2p.peering.enable: true
#
# Define targeted API (for peers selection) where to send the peer document (if peering is enable). (Default: ["ES_CORE_API"])
# This API should accept a POST request to '/network/peering' (will send a see the Duniter protocol)
#
duniter.p2p.peering.targetedApis: [
  "ES_CORE_API"
]
#
# Define cluster API to publish (if peering is enable). By default, all compatible API
#
# duniter.p2p.peering.publishedApis: [
#  "ES_CORE_API", "ES_USER_API", "ES_SUBSCRIPTION_API"
# ]
#
# Interval for publishing peer document to the network, in seconds. (Default: 7200 =2h)
#
#duniter.p2p.peering.interval: 7200
#
#
# ---------------------------------- Duniter4j document moderation ---------------
#
# Filter too old document, if time older that 'maxPastDelta' (in seconds). Default: 7200 (=2h)
#
#duniter.document.time.maxPastDelta: 7200
#duniter.document.time.maxPastDelta: 535680000
#
# Filter document in the futur, if time greater that 'maxFutureDelta' (in seconds). Default: 600 (10m)
#
# duniter.document.time.maxFutureDelta: 600
#
# Allow admin (define in duniter.keyring) to delete documents ? (default: true)
#
# duniter.document.moderators.admin: false
#
# Public keys of moderators. Moderators can delete any user documents (profile, page comment, etc.) (default: <empty>)
#
duniter.document.moderators.pubkeys: [
  '38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE', # Benoit Lavenier
  '47JpfrGkoHJWtumeu7f67fbAxkvaHYVQBNo5GszNs61Z', # Bertrand Presles
  'HmH5beJqKGMeotcQUrSW7Wo5tKvAksHmfYXfiSQ9EbWz'  # Le Sou Mayennais
]
# ---------------------------------- Duniter4j Mail module -----------------------
#
# Enable mail module ?
#
duniter.mail.enable: true
#
# Mail: SMTP server configuration (host and port)
#
duniter.mail.smtp.host: '127.0.0.1'
duniter.mail.smtp.port: 25
#
# Mail: SMTP server SSL security
#
# duniter.mail.smtp.ssl: true
# duniter.mail.smtp.starttls: true
#
# Mail: SMTP server authentication
#
# duniter.mail.smtp.username:
# duniter.mail.smtp.password:
#
# Mail: 'from' address
#
duniter.mail.from: 'cesium@le-sou.org'
#
# Mail: admin address
#
duniter.mail.admin: 'benoit.lavenier@e-is.pro'
#
# Mail: subject prefix
#
duniter.mail.subject.prefix: '[LeSou / Ğ1]'
#
# ---------------------------------- Duniter4j Subscription module -------------------
#
# Enable subscription module (Need to enable mail features)
#
duniter.subscription.enable: true
#
# Email subscription: Day of the week to trigger weekly (default: 2 = monday)
#
# duniter.subscription.email.dayOfWeek: 2
#
# Email subscription: Hour in day to trigger daily email subscription (default: 3 AM)
#
duniter.subscription.email.hourOfDay: 2
#
# Email subscription: URL to a Cesium site, for links in the email content (default: https://g1.duniter.fr)
#
duniter.subscription.email.link.url: 'https://g1.le-sou.org'
# ---------------------------------- Cesium+ Pod > Share module -------------------
#
#
# Share title: `og:site_name` (default: 'Cesium')
#
duniter.share.site.name: 'Cesium - Ğ1'
#
# URL to a page (default: https://g1.duniter.fr/#/app/page/view/{id}/{title} )
# Note: available variables are {id} and {title}
#
duniter.share.page.link.url: 'https://g1.le-sou.org/#/app/page/view/{id}/{title}'
#
# URL to a user profile (default: https://g1.duniter.fr/#/app/wot/{pubkey}/{title} )
# Note: available variables are {pubkey} and {title}
#
duniter.share.user.link.url: 'https://g1.le-sou.org/#/app/wot/{pubkey}/{title}'
#
# Default image to share (min size of 200x200px) for `og:image` (default: https://g1.duniter.fr/img/logo_200px.png)
#
duniter.share.image.default.url: 'https://g1.le-sou.org/img/logo_200px.png'

Et la conf nginx associée :

# Map pour gérer les upgrade de connection (version HTTP)
map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

# Format des logs
log_format upstreamlog '$remote_addr - $remote_user [$time_local] '
                       '"$request" $status $body_bytes_sent '
                       '"$http_referer" "$http_user_agent" "$upstream_addr - $upstream_response_time"';

# Permet de définir un pool de noeuds ES, pour que nginx répartisse la charge
# Ici, je n'en ai qu'un seul
upstream es-g1 {
        least_conn;
        #ip_hash;
        server 127.0.0.1:9701 weight=3;
}

server {
        listen 443;
        listen [::]:443;

        server_name g1.data.le-sou.org;

        # Inclusion de config par default pour le https
        include includes/ssl.conf;

        root /var/www/le-sou.org/cesium;
        index index.html;

        #allow large uploads of files
        client_max_body_size 20m;

        location /ws/ {
                proxy_pass http://es-g1;
                proxy_next_upstream error timeout http_500 http_502;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_http_version 1.1;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 86400s;
                proxy_send_timeout 86400s;

                access_log /var/log/nginx/es-g1.log upstreamlog;
        }

        location / {
                proxy_pass http://es-g1;
                proxy_next_upstream error timeout http_500 http_502;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                # CORS: Preflighted requests
                if ($request_method = OPTIONS ) {
                        add_header "Access-Control-Allow-Origin"  *;
                        add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS";
                        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
                        return 200;
                }

                access_log /var/log/nginx/es-g1.log upstreamlog;
        }

}

Salut !
Merci pour ton assistance aux amateurs !

J’ai récupéré tes conf (et adapté bien sur a mon cas !)

J’ai relancé tout ça et on verra demain.

[2020-04-24 00:09:49,063][INFO ][node ] [es-g1-01] initializing …
[2020-04-24 00:09:51,302][INFO ][plugins ] [es-g1-01] modules [reindex, lang-expression, lang-groovy], plugins [mapper-attachments, cesium-plus-pod-core, cesium-plus-pod-subscription, cesium-plus-pod-user], sites
[2020-04-24 00:09:51,624][INFO ][env ] [es-g1-01] using [1] data paths, mounts [[/ (/dev/sda1)]], net usable_space [20.9gb], net total_space [36.1gb], spins? [possibly], types [ext4]
[2020-04-24 00:09:51,624][INFO ][env ] [es-g1-01] heap size [1007.3mb], compressed ordinary object pointers [true]
[2020-04-24 00:09:52,852][INFO ][http ] [es-g1-01] Using [org.elasticsearch.http.netty.NettyHttpServerTransport] as http transport, overridden by [cesium-plus-core]
[2020-04-24 00:10:00,118][INFO ][duniter.network ] [es-g1-01] Adding {ES_CORE_API} as published endpoint, inside the peering document.
[2020-04-24 00:10:00,221][INFO ][duniter.security ] [es-g1-01] Enable security on all indices
[2020-04-24 00:10:00,575][INFO ][node ] [es-g1-01] initialized
[2020-04-24 00:10:00,575][INFO ][node ] [es-g1-01] starting …
[2020-04-24 00:10:00,578][INFO ][duniter.network ] [es-g1-01] Adding {ES_USER_API} as published endpoint, inside the peering document.
[2020-04-24 00:10:00,590][INFO ][duniter.network ] [es-g1-01] Adding {ES_SUBSCRIPTION_API} as published endpoint, inside the peering document.
[2020-04-24 00:10:00,834][INFO ][org.duniter.elasticsearch.PluginSettings] [es-g1-01] Starts i18n with locale [fr] at [/var/www/cesiumplus.guenoel.fr/cesiumplus/data/i18n]
[2020-04-24 00:10:01,072][INFO ][transport ] [es-g1-01] publish_address {127.0.0.1:9300}, bound_addresses {127.0.0.1:9300}
[2020-04-24 00:10:01,094][INFO ][discovery ] [es-g1-01] g1-es-data-guenoel/xyNOr16jTsqzltCcLlfDHA
[2020-04-24 00:10:04,130][INFO ][cluster.service ] [es-g1-01] new_master {es-g1-01}{xyNOr16jTsqzltCcLlfDHA}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
[2020-04-24 00:10:04,188][INFO ][http ] [es-g1-01] publish_address {127.0.0.1:9701}, bound_addresses {127.0.0.1:9701}
[2020-04-24 00:10:04,189][INFO ][node ] [es-g1-01] started
[2020-04-24 00:10:04,304][INFO ][gateway ] [es-g1-01] recovered [0] indices into cluster_state
[2020-04-24 00:10:14,143][INFO ][duniter.user ] [es-g1-01] Starting user jobs… {blockchain user events:true}, {blockchain admin events:true}
[2020-04-24 00:10:14,149][INFO ][duniter.history ] [es-g1-01] Creating index [history/delete]
[2020-04-24 00:10:14,933][INFO ][duniter.dao.user ] [es-g1-01] Creating index [user]
[2020-04-24 00:10:15,250][INFO ][duniter.message ] [es-g1-01] Creating index [message/inbox]
[2020-04-24 00:10:15,428][INFO ][duniter.dao.group ] [es-g1-01] Creating index [group]
[2020-04-24 00:10:15,562][INFO ][duniter.invitation ] [es-g1-01] Creating index [invitation/certification]
[2020-04-24 00:10:16,298][INFO ][duniter.dao.page ] [es-g1-01] Creating index [page]
[2020-04-24 00:10:18,656][INFO ][duniter.like ] [es-g1-01] Creating index [like/record]
[2020-04-24 00:10:19,075][INFO ][duniter.subscription ] [es-g1-01] Starting subscription jobs… {enable:true}
[2020-04-24 00:10:19,078][INFO ][duniter.dao.subscription ] [es-g1-01] Creating index [subscription]
[2020-04-24 00:10:21,145][INFO ][duniter.core ] [es-g1-01] Starting core jobs… {blockchain: block:true, peer:true, pending:true}, {p2p: synchro:true, websocket:true, emit_peering:true}, {doc_stats:true}
[2020-04-24 00:10:21,147][INFO ][duniter.dao.currency ] [es-g1-01] Creating index [currency]
[2020-04-24 00:10:21,153][WARN ][duniter.subscription ] [es-g1-01] Impossible de traiter les abonnements email: la fonction d’envoi d’email est désactivée dans la configuration
[2020-04-24 00:10:21,441][INFO ][duniter.dao.document ] [es-g1-01] Creating index [document]
[2020-04-24 00:10:25,892][INFO ][duniter.dao.g1 ] [es-g1-01] Creating index [g1]
[2020-04-24 00:10:26,421][INFO ][duniter.core ] [es-g1-01] [g1] Indexing blockchain…
[2020-04-24 00:10:26,423][INFO ][duniter.blockchain ] [es-g1-01] [g1] [BASIC_MERKLED_API 127.0.0.1 10901] Indexing last blocks…

Hello,

je souhaite « essayer » d’installer un pod Césium+, mais voici mon fichier config/elasticsearch.yml

                                      config/elasticsearch.yml *                                               
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: cesium-plus-pod-g1
#
# Host + port, to join your cluster, from external network
#
#cluster.remote.host: localhost
#
# Port for remote access to the cluster (Default: 80)
#
# cluster.remote.port: 9200
#
# Does remote access need SSL ? (default: 'true' if port=443, 'false' otherwise)
#
# cluster.remote.useSsl: true
#

Comme il ne ressemble pas à celui du dessus, est-ce que quelqu’un pourrait indiquer à chaque ligne quelles infos y mettre (avec des exemples) ? :pray:

Plus la doc sera compréhensible, plus y aura de nœud dans le réseau :wink:

1 Like

Si tu arrives à complémenter la documentation, il faudra le dire dans le post How to install Cesium+ Data Pod ça pourra aider les espagnols qui sont aussi en galère de nœuds Cesium+

Voilà ma conf qui tournait pour mon noeud de dev ya 1 an de celà:

https://paste.ofcode.org/Aw5LFY3UphiPUpPeU7yDc7

1 Like