#!/usr/bin/env bash # Однократная установка WEB-прокси Telegram (tproxy-server + официальный MTProxy) # на ru1. Запускать от root из каталога с исходниками tproxy-server: # sudo bash /tmp/tproxy-server/setup-ru1.sh # Повторный запуск безопасен: секрет и token.key не перегенерируются. # # Отличия от deploy/install.sh апстрима: # - без Caddy: 80/443 держит nginx в docker (~/gost), он проксирует всё в relay; # - relay на 127.0.0.1:8090/8091 — 8080 занят cadvisor (*:8080); # - NAT задан вручную: трафик к Telegram идёт через wg0 и выходит с IP fr1, # а автоопределение install.sh спросило бы ifconfig-сервис через ens3 # и получило 85.198.109.86 — MTProxy молча перестал бы отвечать клиентам; # - без base path: его пока понимает только Desktop. set -euo pipefail umask 077 repo="$(cd "$(dirname "$0")" && pwd)" hostname=ru.ruzzy.dev nat_args="--nat-info 10.8.1.4:161.97.93.252" [[ "${EUID}" -eq 0 ]] || { echo "run as root" >&2; exit 1; } cd "$repo" # 1. Официальный MTProxy (закреплённый коммит, sha256) + конфиг Telegram. bash deploy/install-mtproxy.sh # 2. Relay. id tproxy >/dev/null 2>&1 || useradd --system --home /nonexistent --shell /usr/sbin/nologin tproxy install -o root -g root -m 0755 tproxy-server.bin /usr/local/bin/tproxy-server install -d -o root -g root -m 0755 /srv/tproxy-site install -o root -g root -m 0644 /home/mik/gost/nginx/html/index.html /srv/tproxy-site/index.html install -d -o root -g tproxy -m 0750 /etc/tproxy-server bash deploy/ensure-token-key.sh if [[ ! -f /etc/tproxy-server/profiles.json ]]; then secret="$(openssl rand -hex 16)" printf '{"profiles":[{"name":"default","secret":"%s","backend":"127.0.0.1:2398"}]}\n' \ "$secret" > /etc/tproxy-server/profiles.json printf 'MTPROXY_SECRET=%s\nMTPROXY_NAT_ARGS=%s\n' "$secret" "$nat_args" > /etc/mtproxy/mtproxy.env unset secret fi cat > /etc/tproxy-server/config.json </dev/null && echo "relay: ready" echo "Ссылка для клиента: sudo sed -n 's/.*\"secret\":\"\\([0-9a-f]*\\)\".*/https:\\/\\/t.me\\/webproxy?server=$hostname\\&secret=\\1/p' /etc/tproxy-server/profiles.json"