81 lines
3.0 KiB
Bash
Executable File
81 lines
3.0 KiB
Bash
Executable File
#!/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"
|