diff --git a/install.sh b/install.sh index 3365293..3011ba4 100755 --- a/install.sh +++ b/install.sh @@ -34,10 +34,13 @@ done SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" NGINX_SITES="/etc/nginx/sites-enabled" NGINX_SNIPPETS="/etc/nginx/snippets" +NGINX_STREAM="/etc/nginx/stream-enabled" +NGINX_CONF="/etc/nginx/nginx.conf" echo "Установка nginx..." apt-get update apt-get install -y nginx +apt-get install -y libnginx-mod-stream echo "Установка certbot..." apt-get install -y certbot python3-certbot-nginx @@ -70,6 +73,52 @@ for f in "$NGINX_SNIPPETS"/*.conf; do "$f" 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..." nginx -t diff --git a/sites-enabled/hpb.f7cloud.ru.conf b/sites-enabled/hpb.f7cloud.ru.conf index 6ad60ff..cf0c3c3 100644 --- a/sites-enabled/hpb.f7cloud.ru.conf +++ b/sites-enabled/hpb.f7cloud.ru.conf @@ -19,17 +19,3 @@ server { access_log /var/log/nginx/__HPB_F7CLOUD___access.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; - } -} diff --git a/stream-enabled/coturn.conf b/stream-enabled/coturn.conf new file mode 100644 index 0000000..20fa989 --- /dev/null +++ b/stream-enabled/coturn.conf @@ -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; +}