#!/bin/bash set -e # Переменные (передаются через окружение или аргументы) # client_f7cloud - домен для клиента # ip_client_f7cloud - IP адрес клиента # hpb_f7cloud - домен для HPB # ip_hpb_f7cloud - IP адрес HPB # certbot_email - почта для получения сертификатов через certbot usage() { echo "Использование: $0" echo "Переменные (обязательно задать через экспорт или перед вызовом):" echo " client_f7cloud - домен для клиента" echo " ip_client_f7cloud - IP адрес клиента" echo " hpb_f7cloud - домен для HPB" echo " ip_hpb_f7cloud - IP адрес HPB" echo " certbot_email - почта для сертификатов certbot" echo "" echo "Пример:" echo " client_f7cloud=client.example.com ip_client_f7cloud=10.0.0.1 \\" echo " hpb_f7cloud=hpb.example.com ip_hpb_f7cloud=10.0.0.2 \\" echo " certbot_email=admin@example.com $0" exit 1 } for var in client_f7cloud ip_client_f7cloud hpb_f7cloud ip_hpb_f7cloud certbot_email; do if [ -z "${!var}" ]; then echo "Ошибка: не задана переменная $var" usage fi done SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" NGINX_SITES="/etc/nginx/sites-enabled" NGINX_SNIPPETS="/etc/nginx/snippets" echo "Установка nginx..." apt-get update apt-get install -y nginx echo "Установка certbot..." apt-get install -y certbot python3-certbot-nginx echo "Копирование конфигов с подстановкой переменных..." # Копируем sites-enabled (с заменой плейсхолдеров) mkdir -p "$NGINX_SITES" rsync -a --delete "$SCRIPT_DIR/sites-enabled/" "$NGINX_SITES/" for f in "$NGINX_SITES"/*.conf; do [ -f "$f" ] || continue sed -i \ -e "s|__CLIENT_F7CLOUD__|$client_f7cloud|g" \ -e "s|__IP_CLIENT_F7CLOUD__|$ip_client_f7cloud|g" \ -e "s|__HPB_F7CLOUD__|$hpb_f7cloud|g" \ -e "s|__IP_HPB_F7CLOUD__|$ip_hpb_f7cloud|g" \ "$f" done # Копируем snippets (с заменой плейсхолдеров) mkdir -p "$NGINX_SNIPPETS" rsync -a --delete "$SCRIPT_DIR/snippets/" "$NGINX_SNIPPETS/" for f in "$NGINX_SNIPPETS"/*.conf; do [ -f "$f" ] || continue sed -i \ -e "s|__CLIENT_F7CLOUD__|$client_f7cloud|g" \ -e "s|__IP_CLIENT_F7CLOUD__|$ip_client_f7cloud|g" \ -e "s|__HPB_F7CLOUD__|$hpb_f7cloud|g" \ -e "s|__IP_HPB_F7CLOUD__|$ip_hpb_f7cloud|g" \ "$f" done echo "Проверка конфигурации nginx..." nginx -t echo "Перезагрузка nginx..." systemctl reload nginx echo "Готово. Certbot установлен. Для получения сертификатов используйте:" echo " certbot --nginx -d $client_f7cloud -d $hpb_f7cloud --email $certbot_email --agree-tos"