Aller au contenu

[TUTO] Certificat Let's Encrypt avec acme.sh & api Ovh en Docker (DSM6/7) (Update 07/09/22)

Featured Replies

Posté(e)

Petit retour sur mon problème avec le certificat, il s'avère que j'avais un souci de serveur DNS au niveau de la box.
Pour faire simple j'ai bloqué la box ce week-end j'ai du appeler l'assistance pour qu'il me reset toute la partie Dns et DHCP de celle-ci
Depuis cela refonctionne.
Par contre sur mes nas j'ai mis les DNS issue du tutos DNS serveur
https://www.fdn.fr/actions/dns/

  • Réponses 856
  • Vues 352.6 k
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Most Popular Posts

  • Karnak.Tharn
    Karnak.Tharn

    Haaa j'avais pas pensé aux caractères spéciaux avec mon générateur de password, je vais aller check ça.   Edit : J'ai changé mon password par un plus court et avec moins de caractères s

  • Quelques explications ici : https://github.com/acmesh-official/acme.sh/wiki/Change-default-CA-to-ZeroSSL Où il est notamment précisé : Starting from August-1st 2021, acme.sh will release

  • pour info, j'ai bien galéré, mais j'ai fini par trouver et ai proposé un patch pour fix le bug d'ajout/suppression des TXT https://github.com/acmesh-official/acme.sh/issues/3616

Images postées

Posté(e)

Si tu souhaites utiliser des serveurs DNS en clair, il n'est plus possible d'utiliser ceux de FDN qui sont réservés à leurs adhérents.

N'importe quel autre service DNS accessible en clair (udp/53) fonctionnera.

Posté(e)

Merci @PiwiLAbruti pour cette information. J'utilisais les serveurs FDN et je ne savais pas qu'ils n'étaient plus accessibles en clair. Ca explique les lenteurs que j'observais parfois dans la résolution des URL.

J'ai ajouté une note dans le tuto de @Fenrir sur le serveur DNS.

  • 3 mois après...
Posté(e)

Bonjour à tous

Je remercie @Einsteinium pour ce super travail sur le renouvellement des certificats.

J ai réussi à mettre en place les certificats manuellement, sur mon nas ds218+, pas de pb, jusque quelques galères "normales".

Mais je bloque sur le renouvellement automatique: J' ai le conteur qui plante toutes les nuits .. je reçois un p'tit mail : "Le conteneur Acme qui se trouve dans Container Manager s'est arrêté de manière inattendue. Sélectionnez Acme sur la page Conteneur, cliquez sur le bouton Détails et accédez à l'onglet Journal pour plus de détails."

Dans le journal, j' ai:

time="2026-06-25T03:00:04Z" level=info msg="read crontab: /acme.sh/crontab"

2026/06/25 05:00:04

stderr

time="2026-06-25T03:00:04Z" level=info msg="reaping dead processes"

2026/06/25 05:00:04

stdout

Running Supercronic using crontab at /acme.sh/crontab

Avez vous rencontré ce pb ?

Merci pour votre support.

  • 3 semaines après...
Posté(e)
Le 11/10/2020 à 12:58 PM, Einsteinium a dit :

Bonjour à tous,

Nous allons voir dans ce tutoriel comment mettre en place rapidement un certificat Let's Encrypt avec la méthode acme.sh en utilisant l'api Ovh en Docker, si vous êtes rapide, en 10 minutes c'est en place.

Pourquoi en docker ? Car je suis contre la pollution du DSM, des corruptions par update, mais aussi par simplicité et rapidité.

 

1) On commence par la création de clé d'api chez ovh :

https://api.ovh.com/createToken/?GET=/domain/zone/mydomain.com/*&POST=/domain/zone/mydomain.com/*&PUT=/domain/zone/mydomain.com/*&GET=/domain/zone/mydomain.com&DELETE=/domain/zone/mydomain.com/record/*

On remplit donc le formulaire, pour "Validity" (1) on choisit "Unlimited", pour "Rights" (2) on remplace dans les champs "mydomain.com" par le vôtre et dans "Restricted IPs" (3), on rajoute son IP afin qu'en cas de vol des clés, elles ne puissent être exploitées et votre domaine détourné. (NB : Si vous n'avez pas une IP fixe, on passe ce dernier point)

N4Su6pp.png

On garde les clés retournées en résultat sous la main pour la suite.

 

 

2) Passons maintenant au docker :

 

A) On commence par la création d'un dossier "Acme" dans le dossier docker.

 

B) La création du fichier de config :

On crée avec l'éditeur de texte du DSM (Codage UTF-8) le fichier "account.conf" à la racine de notre dossier "Acme" contenant :

LOG_FILE="/acme.sh/acme.sh.log"
LOG_LEVEL=1

AUTO_UPGRADE='1'

#NO_TIMESTAMP=1
    
USER_PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
SAVED_OVH_AK='XXXXXXX'
SAVED_OVH_AS='XXXXXXX'
SAVED_OVH_CK='XXXXXXX'

DEFAULT_ACME_SERVER='https://acme-v02.api.letsencrypt.org/directory'

On remplace dedans le contenu des 3 variables "SAVED_OVH_**" par nos clés obtenues précédemment par OVH.

 

C) La création du docker :

On va mettre un petit peu de code pour la création du docker et son actualisation journalière via le gestionnaire de tâche...

Panneau de configuration / Planificateur de tâches / Créer / Tâche planifiée / Script défini par l'utilisateur

Utilisateur : Root

On programme pour une exécution par jour la nuit (5h c'est bien)

Exécuter la commande :

docker pull neilpang/acme.sh:latest
docker stop Acme
docker rm Acme
docker image prune -f
docker volume ls -qf dangling=true | xargs -r docker volume rm
docker run -d --cpu-shares=10 --memory=134217728 --name=Acme -v /volume1/docker/Acme:/acme.sh:rw --restart unless-stopped neilpang/acme.sh:latest daemon

On exécute manuellement la tâche une première fois pour la création du docker.

 

C Bis) Le docker-compose.yml :

version: "2.1"services:acme:
    cpu_shares: 10
    mem_limit: 128M
    container_name: Acme
    network_mode: bridge
    labels:
      - com.centurylinklabs.watchtower.enable=true
    volumes:
      - /volume1/docker/Acme:/acme.sh:rw
    restart: unless-stopped
    image: neilpang/acme.sh:latest
    command: daemon

 

D) Création du certificat :

Avec le planificateur de tâche en exécution unique (cf point 2C) ou en ssh (root) en remplaçant "mydomain.com" :

docker exec Acme sh -c "acme.sh --issue --keylength 4096 -d 'mydomain.com' -d '*.mydomain.com' --dns dns_ovh"

Il n'y a rien à détailler pour expliquer cette commande, le keylenght peut être, on double la valeur par défaut qui est aujourd'hui considérée comme faible à 2048.

/!\ Renouvellement automatique du certificat sans action de votre part

 

 

3) Installation des certificats :

 

A) Importation manuel :

Vos certificats seront disponibles directement dans filestation "docker/Acme/votredomaine" et ce qui nous intéresse dedans :

Certificat : mydomain.com.cer
Clé privée : mydomain.com.key
Certificat intermédiaire : ca.cer

On va maintenant faire leur import manuellement, dans "Panneau de configuration/Sécurité/Certificat".

En cas d'import manuel, vous pouvez activer la notification mail, mais cette action se réalise toujours 1 mois avant expiration : https://github.com/acmesh-official/acme.sh/wiki/notify

 

B) Déploiement automatique :

NB : Faire un premier déploiement manuel avant le déploiement automatique, afin de bien le mettre par défaut et supprimer celui de synology par défaut.

1) Création d'un compte que l'on rajoutera dans le groupe admin, on lui mettra aucun acces à tous les dossiers et refuser à toutes les applications, on active pas la double authentification qui sera inutile.

2) On ré édite notre fichier "account.conf" créé au point 2B, on y rajoute :

SAVED_SYNO_Scheme='http'
SAVED_SYNO_Hostname='172.17.0.1'
SAVED_SYNO_Port='5000'
SAVED_SYNO_Username='nom utilisateur'
SAVED_SYNO_Password='le password'
SAVED_SYNO_DID=''
SAVED_SYNO_Certificate='description du certificat mise dans le DSM'

3) Ensuite une fois les modifications faites, avec le planificateur de tâche en exécution unique (Cf point 2C) ou en ssh (root) :

docker exec Acme sh -c "acme.sh --deploy -d 'mydomain.com' --deploy-hook synology_dsm"

 

Guide officiel : https://github.com/acmesh-official/acme.sh/wiki/Synology-NAS-Guide

Pour d'autres API que ovh : https://github.com/acmesh-official/acme.sh/wiki/dnsapi

😉

Merci à Einsteinium pour ce tutoriel très clair !

Les variables de sauvegarde ont été remplacées par des variables en majuscule : SAVED_SYNO_Certificate -> SAVED_SYNO_CERTIFICATE.

````

SAVED_SYNO_SCHEME='http'

SAVED_SYNO_HOSTNAME='172.17.0.1'

SAVED_SYNO_PORT='5000'

SAVED_SYNO_USERNAME='nom utilisateur'

SAVED_SYNO_PASSWORD='le password'

SAVED_SYNO_DID=''

SAVED_SYNO_CERTIFICATE='description du certificat mise dans le DSM'

````

N'éditez plus la clé SAVED_SYNO_Certificate à la main. Passez plutôt la variable SANS le préfixe SAVED_ directement dans la commande de déploiement, ce qui l'écrase et se re-sauvegarde ensuite avec la bonne casse :

docker exec Acme sh -c "SYNO_CERTIFICATE='Certificat_by_Acme' acme.sh --deploy -d 'mydomain.com' --deploy-hook synology_dsm"
Le 25/06/2026 à 7:42 PM, spinoutbo189 a dit :

Bonjour à tous

Je remercie @Einsteinium pour ce super travail sur le renouvellement des certificats.

J ai réussi à mettre en place les certificats manuellement, sur mon nas ds218+, pas de pb, jusque quelques galères "normales".

Mais je bloque sur le renouvellement automatique: J' ai le conteur qui plante toutes les nuits .. je reçois un p'tit mail : "Le conteneur Acme qui se trouve dans Container Manager s'est arrêté de manière inattendue. Sélectionnez Acme sur la page Conteneur, cliquez sur le bouton Détails et accédez à l'onglet Journal pour plus de détails."

Dans le journal, j' ai:

time="2026-06-25T03:00:04Z" level=info msg="read crontab: /acme.sh/crontab"

2026/06/25 05:00:04

stderr

time="2026-06-25T03:00:04Z" level=info msg="reaping dead processes"

2026/06/25 05:00:04

stdout

Running Supercronic using crontab at /acme.sh/crontab

Avez vous rencontré ce pb ?

Merci pour votre support.

J'ai le même retour. Mon fichier log docker/Acme/acme.sh.log dit : Running cmd: cron ... "Renewing: 'domainname.tld' "... Skipping. Next renewal time is: 2026-09-05 ... ===End cron=== Donc, pas de bug à corriger.

Explications :

La  fonction renewAll() appelée par le cron :

for di in "${CERT_HOME}"/*.* "${CERT_HOME}"/*:*; do

_debug di "$di"

if ! [ -d "$di" ]; then

_debug "Not a directory, skipping: $di"

continue

fi

...

Elle parcourt tout acme.sh (le CERT_HOME) et ignore silencieusement toute entrée correspondant au motif *.* qui n'est pas un vrai dossier. C'est normal et sans danger si l'entrée ignorée est un fichier annexe comme account.conf (il contient un point, donc matche le glob, mais c'est un fichier, pas un domaine).

Mais si di correspond exactement à votre nom de domaine, c'est plus problématique : ça veut dire que acme.sh/domainname.tld n'est pas un dossier valide (fichier au lieu d'un dossier, lien symbolique cassé, point de montage Docker mal formé...) — et dans ce cas, le renouvellement automatique de ce domaine est silencieusement sauté à chaque cron.

En résumé : Il suffit de

  1. vérifier que acme.sh/domainname.tld est un dossier valide et

  2. mettre --notify-level 2 (send notification when a cert is successfully renewed, or there is an error)

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

Qui est en ligne (Afficher la liste complète)

  • Il n’y a aucun utilisateur enregistré actuellement en ligne

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.

Account

Navigation

Rechercher

Rechercher

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.