This will configure an Asustor NAS to use letsencrypt certificate without exposing it to the internet.
To achieve this we use certbot with DNS-01 challenge to Cloudflare.
- Setup cloudflare secret.
mkdir /volume1/system/letsencrypt
touch /volume1/system/letsencrypt/cloudflare.ini
chown root:root /volume1/system/letsencrypt
chmod 700 /volume1/system/letsencrypt
chmod 600 /volume1/system/letsencrypt/cloudflare.ini
Add the Cloudflare API key in this file: https://certbot-dns-cloudflare.readthedocs.io/en/stable/#credentials
-
Place install.sh and adm.deploy.sh in
/volume1/system/letsencrypt
-
Run install.sh to setup pip and certbot-dns-cloudflare.
-
Link script to letsencrypt deploy hook.
ln -s /volume1/system/letsencrypt/adm-deploy.sh /volume0/usr/builtin/etc/letsencrypt/renewal-hooks/deploy/
- Generate certificate.
certbot certonly --config-dir=/volume0/usr/builtin/etc/letsencrypt \
--dns-cloudflare --dns-cloudflare-credentials /volume1/system/letsencrypt/cloudflare.ini \
--preferred-challenges dns-01 \
-d nas.mydomain.com
- Add renew to crontab
/var/spool/cron/crontabs/root
@reboot /volume1/system/letsencrypt/install.sh && /usr/bin/certbot --config-dir=/volume0/usr/builtin/etc/letsencrypt renew
0 6 * * * /usr/bin/certbot --config-dir=/volume0/usr/builtin/etc/letsencrypt renew
Working as expected thanks ! :)
To note; the path
/volume1/system
is not existing on my asustor.Dropped files to
/volume0/usr/builtin/etc/letsencrypt
for the moment.