$ docker compose -f acmesh.yaml up -dACME_HOME_DIR=./acme.sh
# CloudFlare
#CF_API_EMAIL
#CF_API_KEY
# DNSPod
#DP_ID
#DP_KEY
# CloudFlare
#CX_KEY
#CX_SECRET| #!/bin/sh | |
| # https://hub.docker.com/r/neilpang/acme.sh/dockerfile | |
| if [ ! -f /acme.sh/account.conf ]; then | |
| echo 'First startup' | |
| acme.sh --update-account --accountemail ${ACME_SH_EMAIL} | |
| echo 'Asking for certificates' | |
| acme.sh --issue \ | |
| -d "${DOMAIN_NAME}" -d "*.${DOMAIN_NAME}" \ | |
| --dns "${DNS_API}" | |
| fi | |
| echo 'Listing certs' | |
| acme.sh --list | |
| # Keep the container running | |
| # /entry.sh daemon | |
| # New method | |
| crond -n -s -m off |
| version: '2' | |
| services: | |
| acme: | |
| image: neilpang/acme.sh:latest | |
| volumes: | |
| - ./acme.sh-docker.sh:/acme.sh-docker.sh:ro | |
| - ${ACME_HOME_DIR:-./acme.sh}:/acme.sh | |
| environment: | |
| # CloudFlare | |
| CF_Key: ${CF_API_KEY} | |
| CF_Email: ${CF_API_EMAIL} | |
| # From: https://github.com/acmesh-official/acme.sh/wiki/dnsapi | |
| DNS_API: "dns_cf" | |
| DOMAIN_NAME: "example.com" | |
| ACME_SH_EMAIL: "[email protected]" | |
| command: sh ./acme.sh-docker.sh | |
| container_name: acme |
Thanks for sharing your code, it has been really useful to me. Just a note - in [acme.sh-docker.sh] line 10 - I think you can use your environment variable for DNS_API so it would become:
--dns ${DNS_API}Thanks again :)
Indeed, thank you
Fixed now 🎉
Thanks for sharing, works quite well with gandi.
Any way to run it as non-root?
I tried setting the 'user' attribute in docker compose but I get 'Permission denied' when running acme.sh in acme.sh-docker.sh ...
Hi @psychowood
Any way to run it as non-root?
You should check that the base image supports running as non root
I tried setting the 'user' attribute in docker compose but I get 'Permission denied' when running acme.sh in acme.sh-docker.sh ...
Probably that the scripts to not have the right permissions. Try a chmod +x on them
heya thanks for the gist!
When I try and deploy the cert with acme.sh --deploy -d example.com --deploy-hook docker I get this error:
[Sun Apr 16 21:36:21 UTC 2023] The domain 'example.com' seems to have a ECC cert already, lets use ecc cert.
[Sun Apr 16 21:36:21 UTC 2023] /var/run/docker.sock is not available
[Sun Apr 16 21:36:21 UTC 2023] Error deploy for domain:example.com
[Sun Apr 16 21:36:21 UTC 2023] Deploy error.
Solved, I was missing the additional values, as per instructions. Many thanks again!
So this is what I'm using now:
if [ ! -f /acme.sh/account.conf ]; then
echo 'First startup'
echo 'Registering account with email address'
acme.sh --register-account -m ${ACME_SH_EMAIL} --server zerossl
echo 'Issuing certificates'
acme.sh --server zerossl --issue -d "${DOMAIN_NAME}" -d *."${DOMAIN_NAME}" --dns "${DNS_API}"
echo 'Deploying certificates'
acme.sh --deploy -d ${ACME_SH_EMAIL} --deploy-hook docker
fiwouldn't the correct export variable be CF_Token instead of CF_Key ? At least that did it for me after changing to Let's Encrypt.
wouldn't the correct export variable be CF_Token instead of CF_Key ? At least that did it for me after changing to Let's Encrypt.
I am using zerossl but do not have this issue, how did you configure CloudFlare ?
A scoped token ?
I pushed some updates to the gist today.
See my working source: https://github.com/wdes/mails.wdes.eu/tree/fc4c71397977cf1958a3eef1783828363732c4a7/scripts
And the docker compose part: https://github.com/wdes/mails.wdes.eu/blob/fc4c71397977cf1958a3eef1783828363732c4a7/docker-compose.yml#L283-L321
Thanks for sharing your code, it has been really useful to me. Just a note - in [acme.sh-docker.sh] line 10 - I think you can use your environment variable for DNS_API so it would become:
--dns ${DNS_API}Thanks again :)