diff --git a/services/telemt/deployer.sh b/services/telemt/deployer.sh new file mode 100755 index 0000000..cf33446 --- /dev/null +++ b/services/telemt/deployer.sh @@ -0,0 +1,114 @@ +#!/usr/bin/env bash +set -Eeuo pipefail +# В tls_domain указываем на что фейкуем. + +NODES=( + #remn-fin + #remn-sweden + #remn-nl-02 + #remn-msk + #remn-riga + #remn-nl-01 + #remn-paris +) + +REMOTE_DIR="/opt/telemt" + +CONFIG_TOML='[general] +prefer_ipv6 = false +fast_mode = true +use_middle_proxy = false + +[network] +ipv4 = true +ipv6 = true +prefer = 4 +multipath = false + +[general.modes] +classic = false +secure = false +tls = true + +[server] +port = 443 +listen_addr_ipv4 = "0.0.0.0" +listen_addr_ipv6 = "::" + +[[server.listeners]] +ip = "0.0.0.0" + +[[server.listeners]] +ip = "::" + +[general.links] +show = "*" + +[timeouts] +client_handshake = 15 +tg_connect = 10 +client_keepalive = 60 +client_ack = 300 + +[censorship] +tls_domain = "max.ru" +mask = true +mask_port = 443 +fake_cert_len = 2048 + +[access] +replay_check_len = 65536 +ignore_time_skew = false + +[access.users] +SECRET_PLACEHOLDER + +[[upstreams]] +type = "direct" +enabled = true +weight = 10' + +DOCKER_COMPOSE='services: + telemt: + image: ghcr.io/telemt/telemt:latest + restart: unless-stopped + ports: + - "8443:443" + volumes: + - ./config.toml:/app/config.toml:ro + environment: + - RUST_LOG=info + cap_drop: + - ALL + cap_add: + - NET_BIND_SERVICE + ulimits: + nofile: + soft: 65536 + hard: 65536' + +for node in "${NODES[@]}"; do + echo "=== Installing telemt on ${node} ===" + + # Generate unique secret per node + SECRET=$(openssl rand -hex 16) + FINAL_CONFIG="${CONFIG_TOML/SECRET_PLACEHOLDER/main = \"${SECRET}\"}" + + if ssh "$node" "sudo mkdir -p ${REMOTE_DIR}"; then + #config.toml and docker-compose.yml + echo "$FINAL_CONFIG" | ssh "$node" "sudo tee ${REMOTE_DIR}/config.toml > /dev/null" + echo "$DOCKER_COMPOSE" | ssh "$node" "sudo tee ${REMOTE_DIR}/docker-compose.yml > /dev/null" + + if ssh "$node" "cd ${REMOTE_DIR} && sudo docker compose pull && sudo docker compose up -d"; then + echo "=== ${node}: OK ===" + echo " Secret for ${node}: ${SECRET}" + echo " Proxy port: 8443" + else + echo "=== ${node}: FAILED (docker compose) ===" + fi + else + echo "=== ${node}: FAILED (ssh/mkdir) ===" + fi + + echo +done \ No newline at end of file