Я делаю так
/dir/letsencrypt/letsencrypt-auto certonly --renew-by-default --webroot -w /home/ubuntu/.lets -d domain.com
это можно в cron сразу засунуть. Только если у вас много доменов, имейте ввиду, что у них есть лимиты. И лимиты достаточно маленькие.
letsencrypt.conf
location /.well-known/acme-challenge {
root /home/ubuntu/.lets;
}
/etc/nginx/sites-enabled/domain.com
server {
listen 80;
server_name domain.com;
include letsencrypt.conf;
include redirect.conf;
}
Тут сразу редирект на 443
redirect.conf
if ($host ~* ^www\.(.*)$) {
return 301 https://$1$request_uri;
}
return 301 https://$host$request_uri;
Т.е. у меня глобальная папка /home/ubuntu/.lets для всех доменов, он там создаёт файл, проверяет его наличие и удаляет. Поэтому смысла создавать отдельную папку для каждого домена не вижу.
Node.js тут не участвует никак, вот конфиг с нодой, в который тоже подключена проверка lets encrypt
server {
listen 443 ssl http2;
server_name domain.com;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
include sslplus.conf;
location / {
include nodejs.conf;
proxy_pass http://10.3.100.1:3000/;
}
include letsencrypt.conf;
}