Исправление install.sh: stream в отдельный конфиг, правка nginx.conf через переменную

This commit is contained in:
root 2026-03-16 04:47:52 +00:00
parent 509ddeea0d
commit 83331b7475
3 changed files with 60 additions and 14 deletions

View File

@ -34,10 +34,13 @@ done
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
NGINX_SITES="/etc/nginx/sites-enabled" NGINX_SITES="/etc/nginx/sites-enabled"
NGINX_SNIPPETS="/etc/nginx/snippets" NGINX_SNIPPETS="/etc/nginx/snippets"
NGINX_STREAM="/etc/nginx/stream-enabled"
NGINX_CONF="/etc/nginx/nginx.conf"
echo "Установка nginx..." echo "Установка nginx..."
apt-get update apt-get update
apt-get install -y nginx apt-get install -y nginx
apt-get install -y libnginx-mod-stream
echo "Установка certbot..." echo "Установка certbot..."
apt-get install -y certbot python3-certbot-nginx apt-get install -y certbot python3-certbot-nginx
@ -70,6 +73,52 @@ for f in "$NGINX_SNIPPETS"/*.conf; do
"$f" "$f"
done done
# Копируем stream-enabled (TURN/coturn — директива stream только в корне nginx.conf)
if [ -d "$SCRIPT_DIR/stream-enabled" ]; then
mkdir -p "$NGINX_STREAM"
rsync -a --delete "$SCRIPT_DIR/stream-enabled/" "$NGINX_STREAM/"
for f in "$NGINX_STREAM"/*.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
# Подключить stream в nginx.conf, если ещё не подключено
if ! grep -q 'include /etc/nginx/stream-enabled' "$NGINX_CONF"; then
if grep -q '^stream {' "$NGINX_CONF"; then
# Заменить существующий блок stream на include
NGINX_CONF="$NGINX_CONF" python3 << 'PYSTREAM'
import os
path = os.environ.get("NGINX_CONF", "/etc/nginx/nginx.conf")
with open(path) as f:
content = f.read()
start = content.find("stream {")
if start != -1:
depth = 0
end = start
for i in range(start, len(content)):
if content[i] == "{": depth += 1
elif content[i] == "}":
depth -= 1
if depth == 0: end = i; break
replacement = "stream {\n include /etc/nginx/stream-enabled/*.conf;\n}"
content = content[:start] + replacement + content[end+1:]
with open(path, "w") as f:
f.write(content)
PYSTREAM
else
# Добавить блок stream в конец
[ -n "$(tail -c1 "$NGINX_CONF")" ] && echo >> "$NGINX_CONF"
echo 'stream {
include /etc/nginx/stream-enabled/*.conf;
}' >> "$NGINX_CONF"
fi
fi
fi
echo "Проверка конфигурации nginx..." echo "Проверка конфигурации nginx..."
nginx -t nginx -t

View File

@ -19,17 +19,3 @@ server {
access_log /var/log/nginx/__HPB_F7CLOUD___access.log; access_log /var/log/nginx/__HPB_F7CLOUD___access.log;
error_log /var/log/nginx/__HPB_F7CLOUD___error.log; error_log /var/log/nginx/__HPB_F7CLOUD___error.log;
} }
stream {
upstream coturn_backend {
server __IP_HPB_F7CLOUD__:5349;
}
server {
listen 5349; # TCP для TURN
listen 5349 udp; # UDP для звонков (ВАЖНО!)
proxy_pass coturn_backend;
proxy_timeout 1h;
proxy_connect_timeout 5s;
}
}

View File

@ -0,0 +1,11 @@
upstream coturn_backend {
server __IP_HPB_F7CLOUD__:5349;
}
server {
listen 5349; # TCP для TURN
listen 5349 udp; # UDP для звонков (ВАЖНО!)
proxy_pass coturn_backend;
proxy_timeout 1h;
proxy_connect_timeout 5s;
}