фича: полная автоматизация SSL и настройка автопродления (Certbot)

This commit is contained in:
Petro1990 2026-03-13 15:39:05 +03:00
parent 504f9193c3
commit 4d2776466d
1 changed files with 14 additions and 18 deletions

32
rproxy
View File

@ -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 use_ssl="yes"
case "$use_ssl_ans" in ext_port=443
д|Д|y|Y|да|yes) if [ -z "$CERTBOT_EMAIL" ]; then
use_ssl="yes" prompt "Введите Email для регистрации сертификатов (Certbot): "
ext_port=443 CERTBOT_EMAIL="$REPLY"
if [ -z "$CERTBOT_EMAIL" ]; then # Сохраняем email в конфиг
prompt "Введите Email для регистрации сертификатов: " sed -i "/CERTBOT_EMAIL=/d" "$CONF_FILE"
CERTBOT_EMAIL="$REPLY" echo "CERTBOT_EMAIL=\"$CERTBOT_EMAIL\"" >> "$CONF_FILE"
# Сохраняем email в конфиг fi
sed -i "/CERTBOT_EMAIL=/d" "$CONF_FILE"
echo "CERTBOT_EMAIL=\"$CERTBOT_EMAIL\"" >> "$CONF_FILE"
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 открыт"