F7_nginx/install.sh
2026-03-12 04:58:10 +00:00

81 lines
3.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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"