фича: полная автоматизация SSL и настройка автопродления (Certbot)
This commit is contained in:
parent
504f9193c3
commit
4d2776466d
16
rproxy
16
rproxy
|
|
@ -263,7 +263,7 @@ do_add_interactive() {
|
||||||
[ -z "$target" ] && { warn "Адрес не может быть пустым"; pause; return; }
|
[ -z "$target" ] && { warn "Адрес не может быть пустым"; pause; return; }
|
||||||
|
|
||||||
printf "\n Привязать к домену?\n"
|
printf "\n Привязать к домену?\n"
|
||||||
printf " ${BOLD}1)${NC} Да — указать доменное имя (порт 80)\n"
|
printf " ${BOLD}1)${NC} Да — указать доменное имя (порт 443)\n"
|
||||||
printf " ${BOLD}2)${NC} Нет — указать внешний порт\n"
|
printf " ${BOLD}2)${NC} Нет — указать внешний порт\n"
|
||||||
prompt "Выберите [2]: "
|
prompt "Выберите [2]: "
|
||||||
local mode="${REPLY:-2}"
|
local mode="${REPLY:-2}"
|
||||||
|
|
@ -276,24 +276,17 @@ do_add_interactive() {
|
||||||
prompt "Доменное имя (например, mysite.example.com): "
|
prompt "Доменное имя (например, mysite.example.com): "
|
||||||
domain="$REPLY"
|
domain="$REPLY"
|
||||||
[ -z "$domain" ] && { warn "Домен не указан"; pause; return; }
|
[ -z "$domain" ] && { warn "Домен не указан"; pause; return; }
|
||||||
ext_port=80
|
|
||||||
|
|
||||||
printf "\n Включить SSL (HTTPS) через Certbot? (д/н) [н]: "
|
# SSL теперь всегда включен для доменов по запросу пользователя
|
||||||
read -r use_ssl_ans
|
|
||||||
case "$use_ssl_ans" in
|
|
||||||
д|Д|y|Y|да|yes)
|
|
||||||
use_ssl="yes"
|
use_ssl="yes"
|
||||||
ext_port=443
|
ext_port=443
|
||||||
if [ -z "$CERTBOT_EMAIL" ]; then
|
if [ -z "$CERTBOT_EMAIL" ]; then
|
||||||
prompt "Введите Email для регистрации сертификатов: "
|
prompt "Введите Email для регистрации сертификатов (Certbot): "
|
||||||
CERTBOT_EMAIL="$REPLY"
|
CERTBOT_EMAIL="$REPLY"
|
||||||
# Сохраняем email в конфиг
|
# Сохраняем email в конфиг
|
||||||
sed -i "/CERTBOT_EMAIL=/d" "$CONF_FILE"
|
sed -i "/CERTBOT_EMAIL=/d" "$CONF_FILE"
|
||||||
echo "CERTBOT_EMAIL=\"$CERTBOT_EMAIL\"" >> "$CONF_FILE"
|
echo "CERTBOT_EMAIL=\"$CERTBOT_EMAIL\"" >> "$CONF_FILE"
|
||||||
fi
|
fi
|
||||||
;;
|
|
||||||
*) use_ssl="no" ;;
|
|
||||||
esac
|
|
||||||
else
|
else
|
||||||
local suggested
|
local suggested
|
||||||
suggested=$(next_free_port)
|
suggested=$(next_free_port)
|
||||||
|
|
@ -474,6 +467,9 @@ do_ssl_interactive() {
|
||||||
# Обновляем конфиг сервиса
|
# Обновляем конфиг сервиса
|
||||||
sed -i "s/SVC_SSL=.*/SVC_SSL=\"yes\"/" "$SERVICES_DIR/$name.conf"
|
sed -i "s/SVC_SSL=.*/SVC_SSL=\"yes\"/" "$SERVICES_DIR/$name.conf"
|
||||||
sed -i "s/SVC_EXT_PORT=.*/SVC_EXT_PORT=\"443\"/" "$SERVICES_DIR/$name.conf"
|
sed -i "s/SVC_EXT_PORT=.*/SVC_EXT_PORT=\"443\"/" "$SERVICES_DIR/$name.conf"
|
||||||
|
|
||||||
|
# Проверка автопродления (добавляем таймер/крон если нет)
|
||||||
|
ssh_cmd "systemctl is-active certbot.timer >/dev/null 2>&1 || (crontab -l 2>/dev/null | grep -q certbot || (crontab -l 2>/dev/null; echo \"0 0,12 * * * certbot renew -q\") | crontab -)"
|
||||||
else
|
else
|
||||||
err "Certbot не смог выпустить сертификат"
|
err "Certbot не смог выпустить сертификат"
|
||||||
warn "Убедитесь, что домен $SVC_DOMAIN указывает на этот VPS и порт 80 открыт"
|
warn "Убедитесь, что домен $SVC_DOMAIN указывает на этот VPS и порт 80 открыт"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue