Configuration nginx pour avec duniter et docker

Bonjour,

J’ai installé un serveur en ligne avec Duniter via docker.
Ca fonctionne bien mais je n’arrive pas à configurer le nginx, toutes les redirections des ports vers des sous dossier https ne fonctionne pas.
Et j’ai juste la page nginx par defaut qui s’affiche à la racine du https.
J’ai utilisé une des config que j’ai trouvé sur le forum en l’adaptant mais ca ne fonctionne pas :


server {
    listen                    443 ssl http2;
    listen                    [::]:443 ssl http2;
    server_name               duniter.mondomaine.fr;

    ssl_certificate           /etc/letsencrypt/live/duniter.mondomaine.fr/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/duniter.mondomaine.fr/privkey.pem;
    ssl_trusted_certificate   /etc/letsencrypt/live/duniter.mondomaine.fr/chain.pem;
    include snippets/ssltuning.conf;
    include snippets/headers.conf;

    location / {
        proxy_pass http://127.0.0.1:10901;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    location /admin {
        proxy_pass http://127.0.0.1:9220;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

   location /ws2p {
                proxy_pass http://127.0.0.1:20901;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
    }
}

Une idée ? @Pini ?
Merci !

Perso j’utilise un fork de nginx-proxy + acme-companion pour automatiser cette configuration et ne pas me prendre la tête.

À la lecture de ta conf je vois que tu n’écoutes que sur le port 443. Dans tes tests as-tu bien saisi ton URL avec https:// ?

Que donne un test en direct sans passer par nginx ? Genre :

$ ssh -L10901:localhost:10901 <ton_serveur>

puis sur ton PC test de l’URL http://localhost:10901.

Merci pour ta réponse rapide. Désolé de répondre que maintenant.
Oui; je fais bien un test avec https://
il donne juste la page nginx

Je n’ai pas fait le test en ouvrant un tunnel ssh mais j’ai lancé un docker test en mettant l’ip publique au lieu de 127.0.0.1 et on a bien la page admin de duniter sur le port 9220 mais rien sur 10901 ni sur 20901 d’ailleurs… du coup, effectivement, si le serveur duniter ne démarre pas sur le port…
Note : en faisant un curl, j’ai aussi une erreur sur le http://127.0.0.1:10901

Dans ce cas, où serait le pb du docker sur le port 10901 et 20901 ?
j’ai pourtant bien lancé :
docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --name duniter duniter/duniter

Note : j’avais vu que sur le forum, on parlait de nginx-proxy + acme-companion
mais je n’ai pas trop cherché pour le mettre en place… mais si plus simple, je veux bien de l’aide pour le mettre en place.

Je te remercie par avance

Voici une petite archive à décompresser sur ton serveur. Il y a deux sous-répertoires :

  • reverse-proxy
    1. Se placer dedans
    2. Adapter la variable DEFAULT_EMAIL du fichier docker-compose.yml avec ton adresse mail
    3. Lancer les services avec la commande docker-compose up -d
  • duniter
    1. Se placer dedans
    2. Adapter la variable DNS_NAME du fichier .env avec le nom DNS associé à ton neoud
    3. Lancer le service avec docker-compose up -d

Une fois les services lancés vérifier dans les logs du conteneur letsencrypt qu’un certificat a bien été généré. Ça doit ressembler à ça :

$ docker logs -f letsencrypt`
[Wed Dec 20 19:32:55 UTC 2023] Cert success.
-----BEGIN CERTIFICATE-----
G9Hesvo6sBUtUh7SGzY2s8k8hyby8n4hsxmpLzQlCN4ENyNQfpfNiDCGnmkm7TgO
...
/jpdW6oTeoifyEOMrcDknWJ84cgv==
-----END CERTIFICATE-----

Si c’est OK, modifier à nouveau le fichier .env pour désactiver le mode test :

LETSENCRYPT_TEST=false

Puis relancer à nouveau le service duniter avec docker-compose up -d.

Enfin vérifier dans les logs du conteneur letsencrypt qu’un nouveau certificat est généré.

Et vérifier dans les logs du conteneur duniter_v1 que la synchro se déroule comme il faut.

Note importante :
Cette configuration prend tout en charge : le reverse-proxy et le noeud duniter. Pour que ça fonctionne correctement il faut désactiver ta conf nginx locale.

EDIT: nouvelle archive après correction de quelques erreurs.
duniter-v1-compose.tar.gz (1,1 Ko)

2 Likes

Merci encore @Pini
Ca ne fonctionne toujours pas…

J’en suis désolé. Si tu veux on peut se caler une audio un de ces soir pour que je puisse jeter un oeil.

Oui, ca serait l’idéal !

Je t’écris dans le chat pour se caler l’audio ou en message privé…