В проекте используются:
- MTProxy
tproxy-server- Caddy
- HTTPS-сертификат
- systemd
- HTML-заглушка
В терминале выполняем команду:
curl -fsSL https://raw.githubusercontent.com/BinAlexme/tproxy-server/refs/heads/master/install-webproxy.sh -o /root/install-webproxy.sh && chmod +x /root/install-webproxy.sh && /root/install-webproxy.shПосле запуска попросит установщик вести данные (Обязательно правильные):
Domain (example: proxy.example.com):
ACME email (example: admin@example.com):
Generate a secure secret automatically? [Y/n]:
Например:
Domain (example: proxy.example.com): proxy.example.com
ACME email (example: admin@example.com): admin@example.com
Generate a secure secret automatically? [Y/n]: y
Дальше автоматическая установка.
Скрипт:
Проверяет систему
↓
Проверяет DNS
↓
Проверяет порты 80/443
↓
Устанавливает зависимости
↓
Создаёт сайт-заглушку
↓
Устанавливает MTProxy
↓
Собирает tproxy-server
↓
Настраивает systemd
↓
Настраивает Caddy
↓
Получает HTTPS-сертификат
↓
Запускает сервисы
↓
Проверяет MTProxy :2398
↓
Проверяет relay /readyz
↓
Проверяет /healthz
↓
Ждёт HTTPS до 120 секунд
↓
Проверяет HTTPS
↓
Показывает Telegram Web Proxy
После успешной установки:
============================================================
TELEGRAM WEB PROXY IS READY
============================================================
Domain:
https://proxy.example.com/
Secret:
******************************
Telegram Web Proxy:
https://t.me/webproxy?server=proxy.example.com&secret=************************
Status:
HTTPS OK
MTProxy ACTIVE
Relay READY
Firewall ACTIVE
============================================================
Secret никому не передавайте.
Для удаления Telegram Web Proxy используйте:
curl -fsSL https://raw.githubusercontent.com/BinAlexme/tproxy-server/refs/heads/master/uninstall-webproxy.sh -o /tmp/uninstall-webproxy.sh && chmod +x /tmp/uninstall-webproxy.sh && /tmp/uninstall-webproxy.shПопросит подтвердить удаление:
REMOVE
После этого будут удалены все компоненты.
Находится здесь:
/srv/tproxy-site/index.htmlОткрыть:
nano /srv/tproxy-site/index.htmlМожно заменить HTML на свой.
Сохранить файл Ctrl+O Enter Ctrl+X
После изменения:
chown -R root:root /srv/tproxy-site
find /srv/tproxy-site -type d -exec chmod 0755 {} \;
find /srv/tproxy-site -type f -exec chmod 0644 {} \;После этого обновите страницу в браузере.
Caddy перезапускать не требуется.
Чтобы раз и забыть: Готовое решение
Пример страницы:
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Подключение</title>
<style>
:root {
color-scheme: dark;
--bg: #0a0d12;
--card: #11161f;
--text: #f5f7fb;
--muted: #8f99a8;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
padding: 24px;
background: var(--bg);
color: var(--text);
font-family: system-ui, sans-serif;
}
.card {
width: min(100%, 560px);
padding: 38px 30px;
text-align: center;
background: var(--card);
border: 1px solid #242c38;
border-radius: 22px;
}
h1 {
margin: 0;
font-size: 32px;
}
p {
color: var(--muted);
}
.loader {
width: min(100%, 320px);
height: 8px;
margin: 28px auto;
overflow: hidden;
border-radius: 999px;
background: #202733;
}
.loader::before {
content: "";
display: block;
width: 34%;
height: 100%;
background: #fff;
border-radius: inherit;
animation: loading 1.25s ease-in-out infinite;
}
@keyframes loading {
0% {
transform: translateX(-120%);
}
50% {
transform: translateX(190%);
}
100% {
transform: translateX(320%);
}
}
</style>
</head>
<body>
<main class="card">
<h1>Подключение</h1>
<p>
Пожалуйста, подождите.<br>
Идёт загрузка страницы.
</p>
<div class="loader"></div>
</main>
</body>
</html>Проверьте:
ss -lntp | grep -E ':(80|443)\b'Установщик специально останавливается, если эти порты уже заняты.