Сертбот не найден

Я установил letsencrypt на свой компьютер с Ubuntu 16.04 с помощью следующей команды.

sudo apt-get install letsencrypt

Теперь я хочу определить cronjob для автоматического обновления моих сертификатов со следующей строкой.

certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

Но я всегда получаю сообщение об ошибке, что команда certbot не может быть найдена.

Если я использую letsencrypt вместо certbot, все работает нормально, пока я не использую --pre-hook и --post-hook.

Как установить certbotили есть ли альтернативная команда для letsencrypt для определения таких хуков?

Спасибо


person Stillmatic1985    schedule 21.10.2016    source источник


Ответы (6)


Хорошо, я нашел решение..

git clone [email protected]:certbot/certbot.git

cd certbot

./certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start"

person Stillmatic1985    schedule 24.10.2016
comment
Рекомендуется устанавливать certbot через диспетчер пакетов Python pip: pypi.python.org/pypi /certbot/0.17.0. В последней версии Ubuntu 17.04 (Zesty) также есть certbot в репозитории. - person antonbormotov; 14.08.2017

Следуйте официальным инструкциям и установите certbot с

sudo apt-get install certbot python3-certbot-nginx

После этого он будет доступен в $PATH.

person mrts    schedule 30.07.2020
comment
О, чувак, это идеальный ответ. Следуйте официальным инструкциям. Я этого не делал и страдал. - person Anonymous Creator; 09.07.2021

Вы можете попробовать Let’s Certbot.

Let's Certbot — это инструмент, который создает автоматизированные сценарии на основе Certbot для получения, обновления и развертывания SSL-сертификатов.

Он поддерживает докерные и не докерные среды.

GitHub: https://github.com/jinhucheung/letscertbot

person Kumho Cheung    schedule 06.02.2020

Это сработало для меня. Я должен указать полный путь при запуске certbot с повышенными привилегиями

sudo /snap/bin/certbot renew --dry-run

TL;DR

Хотя у меня есть /snap/bin в моем $PATH

echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/games:/snap/bin

Но без указания полного пути он не работает с sudo. Выдает следующую ошибку

certbot renew --dry-run
The following error was encountered:
[Errno 13] Permission denied: '/var/log/letsencrypt/.certbot.lock'
Either run as root, or set --config-dir, --work-dir, and --logs-dir to writeable paths.

и это также работает, если я (имея /snap/bin в $PATH root) переключаюсь на опытного пользователя

sudo -i

а затем запустите любую команду certbot

Пожалуйста, обратите внимание, что я использую Debian 10 и использую snapd в качестве менеджера пакетов в соответствии с руководством https://certbot.eff.org/lets-encrypt/snap-nginx..

Как объяснено здесь https://unix.stackexchange.com/questions/245772/why-running-command-as-sudo-returns-command-not-found это ожидаемое и одобренное поведение:

sudo пытается быть в безопасности при выполнении внешних команд. обычный обходной путь — указать полный путь к программе. Это также более безопасно; если вы не укажете путь, вполне возможно, что злоумышленник может создать другую программу, которая будет запускаться с правами суперпользователя.

Продолжая читать дальше, я вижу, что мои ПУТИ разные.

env | grep ^PATH
sudo env | grep ^PATH

Существует несколько решений (используйте собственный sudo или измените sudo $PATH), представленных в потоке Command not найден при использовании sudo, поэтому не нужно указывать полный путь.

person Maksim Dzmitryew̆    schedule 12.07.2020

попробуй удалить снапом
sudo snap remove certbot

а затем снова установите с помощью sudo snap install --classic certbot

person Nitish Kumar    schedule 07.01.2021

Для меня следующие команды работают нормально.

Установить оснастку

sudo apt update

sudo apt install snapd

Установить ядро

sudo snap install core

Установите Certbot

sudo snap install --classic certbot

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Продлить Certbot

sudo certbot renew --dry-run
person Mohamed Yakout    schedule 16.03.2021