<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>@noisycake</title><author><name>@noisycake</name></author><id>https://teletype.in/atom/noisycake</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/noisycake?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@noisycake?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=noisycake"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/noisycake?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-14T16:26:21.054Z</updated><entry><id>noisycake:3x-iu_warp</id><link rel="alternate" type="text/html" href="https://teletype.in/@noisycake/3x-iu_warp?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=noisycake"></link><title>WARP в 3X-UI</title><published>2025-03-04T14:50:47.724Z</published><updated>2025-03-04T14:51:49.507Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/57/74/577497e4-0f67-446c-b7ac-09a326f5d532.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/43/ee/43eec58c-0cba-43c1-9dfe-b85d4a906a74.png&quot;&gt;Настройка WARP для работы с 3x-ui</summary><content type="html">
  &lt;figure id=&quot;CISz&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/43/ee/43eec58c-0cba-43c1-9dfe-b85d4a906a74.png&quot; width=&quot;1803&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;PCR3&quot;&gt;Всем привет! Сегодня обсудим, как активировать WARP в 3x-ui и для чего это может понадобиться. Начнём с небольшой теории...&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h4 id=&quot;Контакты-и-не-только&quot;&gt;Контакты и не только&lt;/h4&gt;
  &lt;p id=&quot;6mm7&quot;&gt;Автор: &lt;a href=&quot;https://t.me/noisycake&quot; target=&quot;_blank&quot;&gt;https://t.me/noisycake&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;ceg0&quot;&gt;&lt;strong&gt;Ткг&lt;/strong&gt;: &lt;a href=&quot;https://t.me/hfk_blog&quot; target=&quot;_blank&quot;&gt;https://t.me/hfk_blog&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;hBRQ&quot;&gt;&lt;strong&gt;Гайд по установке 3x-ui:&lt;/strong&gt; &lt;a href=&quot;https://noisycake.ru/articles/vpn_server/&quot; target=&quot;_blank&quot;&gt;https://noisycake.ru/articles/vpn_server/&lt;/a&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;sqqI&quot;&gt;Понятия&lt;/h2&gt;
  &lt;p id=&quot;wUqz&quot;&gt;WARP — бесплатный VPN-сервис от Cloudflare на основе протокола WireGuard. Он работает вкупе с 1.1.1.1 от той же компании.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;wI3o&quot; data-align=&quot;right&quot;&gt;1.1.1.1 — сеть из множества DNS-серверов по всей планете. Они сопоставляют доменные имена сайтов с IP-адресами, на которых эти сайты расположены, чтобы человек мог вводить удобочитаемые буквы вместо октет. Существуют и другие сети DNS, например, от Google (8.8.8.8) или Quad9 (9.9.9.9)&lt;/p&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;xQ1X&quot;&gt;Для чего он нужен?&lt;/h2&gt;
  &lt;p id=&quot;daJK&quot;&gt;Давайте детальнее взглянем, для чего WARP нужен именно нам:&lt;/p&gt;
  &lt;ol id=&quot;zydF&quot;&gt;
    &lt;li id=&quot;sxCJ&quot;&gt;Самое главное: чтобы спокойно посещать .ру ресурсы. В настоящее время системы цензуры умеют анализировать характер трафика, поэтому двойные пересечения границы за доли секунды покажутся подозрительными, из-за чего IP-адрес прокси может быть помещён в blacklist провайдера. В РФ (насколько я знаю) подобных прецедентов ещё не было, но в один прекрасный день РКН могут &amp;quot;апгрейднуться&amp;quot;, и тогда будет совсем не весело;&lt;/li&gt;
    &lt;li id=&quot;Izpv&quot;&gt;Если какой-то зарубежный сайт не пускает с IP вашего сервера (привет, Reddit), можно попробовать зайти на него через WARP;&lt;/li&gt;
    &lt;li id=&quot;Niks&quot;&gt;Снижается риск получить капчу Cloudflare.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;Bfdw&quot;&gt;У вас мог возникнуть резонный вопрос — почему бы не убрать лишнее звено в виде 3x-ui и не использовать WARP напрямую? Ответ довольно прост: в РФ этот сервис заблокирован. &lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;mGKA&quot;&gt;Установка WARP&lt;/h2&gt;
  &lt;p id=&quot;SFSd&quot;&gt;Вообще в панели уже встроен WARP, и его можно активировать в пару кликов, но на некоторых серверах он тупо не заводится. Тем не менее, хотя бы для ознакомления рассмотрим и этот способ.&lt;/p&gt;
  &lt;h3 id=&quot;yGSW&quot;&gt;Вариант 1&lt;/h3&gt;
  &lt;p id=&quot;NGrw&quot;&gt;Открываем 3x-ui в браузере и сразу идём в настройки Xray -&amp;gt; Базовый шаблон.&lt;/p&gt;
  &lt;figure id=&quot;E3v4&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/81/1c/811cefbd-a1c1-4a00-910c-abc0502f7444.png&quot; width=&quot;841.5&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;crpi&quot;&gt;Нажимаем на зелёную кнопку WARP -&amp;gt; Создать -&amp;gt; Добавить исходящий.&lt;/p&gt;
  &lt;figure id=&quot;UCap&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/01/dc/01dc7253-e908-49d2-9041-e007c1405da1.png&quot; width=&quot;531&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;16zD&quot;&gt;WARP включён, осталось настроить правила маршрутизации. Для этого переходим в соответствующий пункт. &lt;/p&gt;
  &lt;p id=&quot;GTeK&quot;&gt;Как видим, каждая строка отвечает за определённое правило, например, в третьей указана блокировка (исходящий — blocked) протокола BitTorrent, чтобы не нагружать сеть торрентами.  &lt;/p&gt;
  &lt;figure id=&quot;sfIm&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e8/46/e8468231-1978-45ce-bbae-44b7e33ab0cd.png&quot; width=&quot;925.9999999999999&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;aT9U&quot;&gt;Нам же нужно добавить два правила, чтобы все соединения с РФ сайтами проходили через WARP. Для этого нажимаем &amp;quot;Добавить правило&amp;quot;.&lt;/p&gt;
  &lt;p id=&quot;kcLr&quot;&gt;1. Пишем следующее в строке &amp;quot;IP&amp;quot;: &lt;code&gt;geoip:ru&lt;/code&gt;, в качестве Outbound Tag указываем &amp;quot;warp&amp;quot;. Жмём на зелёную кнопку.&lt;/p&gt;
  &lt;figure id=&quot;9KLs&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3b/4c/3b4c3d39-12df-4012-9faf-9555a4109130.png&quot; width=&quot;532&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Lz10&quot;&gt;2. В качестве второго правила будем указывать домены. В поле &amp;quot;Domains&amp;quot; пишем: &lt;code&gt;geosite:category-ru,domain:livejournal.com,domain:icq.com&lt;/code&gt;, Outbound Tag — тот же &amp;quot;warp&amp;quot;.&lt;/p&gt;
  &lt;figure id=&quot;ORPl&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/58/61/5861e8ba-f6ec-4501-849f-95c9eb3b8363.png&quot; width=&quot;534&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;hnlG&quot;&gt;&lt;strong&gt;geoip, geosite&lt;/strong&gt; и т.п. — обновляемые списки IP-адресов и доменов. По тегам можно понять, какие данные эти списки содержат, например geoip:ru состоит из пула российских айпишников.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;m4Ld&quot;&gt;Не забываем сохранить настройки и перезапустить Xray. Теперь можно обновить подписку...&lt;/p&gt;
  &lt;p id=&quot;XKNU&quot;&gt;И вроде как готово и должно работать, но я проверил на трёх серверах, и везде какие-то проблемы. Либо на .ру сайты вообще не заходит, будто я поставил блокировку, либо заходит напрямую без WARP. Поэтому рассмотрим более стабильный способ.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;ECyW&quot;&gt;Для работы WARP в подключении также нужно включить Sniffing (настройка в нижней части раздела) — отметьте все галочки, но не активируйте &amp;quot;Metadata Only&amp;quot; и &amp;quot;Route Only&amp;quot;&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;p4Iz&quot;&gt;Вариант 2&lt;/h3&gt;
  &lt;p id=&quot;Bzvt&quot;&gt;Для начала уберём нынешнюю конфигурацию WARP (если выполняли предыдущий пункт). В тех же настройках Xray выбираем Исходящие -&amp;gt; WARP -&amp;gt; Удалить.&lt;/p&gt;
  &lt;figure id=&quot;8ptm&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ae/13/ae13282b-a69a-4dbc-be5b-ad7f49d3c507.png&quot; width=&quot;533&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Lp6I&quot;&gt;Поскольку предыдущий способ не сработал, запустим WARP отдельно с помощью скрипта и изменим конфиг Xray так, чтобы соединения с .ру сайтами проксировались через этот самостоятельный процесс. В общем, настроим &lt;a href=&quot;https://developers.cloudflare.com/warp-client/warp-modes/#warp-via-local-proxy&quot; target=&quot;_blank&quot;&gt;WARP как локальный SOCKS5-прокси&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;YyPB&quot;&gt;Переходим в терминал. Выберем себе свободный порт в пределах [1000, 65535]. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Hhp9&quot;&gt;Напомню, что проверить занятые порты можно командой &lt;code&gt;netstat -tulpn | grep LISTEN&lt;/code&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;9eQF&quot;&gt;Вставляем в консоль:&lt;/p&gt;
  &lt;p id=&quot;Jl58&quot;&gt;&lt;code&gt;cd &amp;amp;&amp;amp; bash &amp;lt;(curl -fsSL https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh) w&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;ODCp&quot;&gt;Далее идёт типичный процесс установки. Выбираем язык, запускаем скрипт&lt;/p&gt;
  &lt;figure id=&quot;jTS0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/30/69/30695b90-d8a1-4591-8384-e37419447b29.png&quot; width=&quot;732&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;lZYP&quot;&gt;Пишем порт. По умолчанию 40000. Далее спрашивают, есть ли у нас платная подписка WARP+. Если у вас есть ключ лицензии, можете выбрать второй пункт, в ином случае выбирайте первый.&lt;/p&gt;
  &lt;figure id=&quot;6vdN&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/29/73/297378f6-697d-4d66-b997-5cf4b08a5757.png&quot; width=&quot;646&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;t049&quot;&gt;По окончании процесса видим нечто вроде &amp;quot;Congratulations! Wireproxy is working.&amp;quot;&lt;/p&gt;
  &lt;p id=&quot;sVo9&quot;&gt;Возвращаемся в 3x-ui и идём в Настройки Xray -&amp;gt; Расширенный шаблон. Перед нами появится шаблон конфигурации Xray, представленный в формате json. Требуется изменить outbounds, поэтому переходим в &amp;quot;Исходящие&amp;quot;.&lt;/p&gt;
  &lt;figure id=&quot;Z4ys&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/81/8e/818ed528-dc94-44ac-8458-295c54f64afa.png&quot; width=&quot;559&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;zAhS&quot;&gt;После последней ФИГУРНОЙ скобки ставим запятую -&amp;gt; Enter. Вставляем следующий блок конфига (если выбирали другой порт, впишите его вместо 40000):&lt;/p&gt;
  &lt;p id=&quot;CiHQ&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;tag&amp;quot;: &amp;quot;warp&amp;quot;,&lt;br /&gt;  &amp;quot;protocol&amp;quot;: &amp;quot;socks&amp;quot;,&lt;br /&gt;  &amp;quot;settings&amp;quot;: {&lt;br /&gt;    &amp;quot;servers&amp;quot;: [&lt;br /&gt;      {&lt;br /&gt;        &amp;quot;address&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;        &amp;quot;port&amp;quot;: 40000&lt;br /&gt;      }&lt;br /&gt;    ]&lt;br /&gt;  }&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;iqFn&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/ff/23/ff23e462-4d72-4e0e-b35d-a21fc90b2c6c.png&quot; width=&quot;512&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;dmzw&quot;&gt;Сохраняем настройки и перезапускаем ядро. &lt;/p&gt;
  &lt;p id=&quot;TUYM&quot;&gt;Так как правила маршрутизации мы не удаляли, они снова отобразились в панели. Осталось проверить работоспособность WARP. &lt;/p&gt;
  &lt;figure id=&quot;uuKe&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/cd/40/cd4074ef-d2cb-418d-a9ed-b2ddaa4f1efa.png&quot; width=&quot;1076&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;tA1T&quot;&gt;Как видим, в качестве провайдера указан Cloudflare, всё работает!&lt;/p&gt;
  &lt;p id=&quot;jKhK&quot;&gt;А если нет, попробуйте обновить подключение / перезапустить панель.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;mzW3&quot;&gt;Схемы взаимодействий сервисов&lt;/h2&gt;
  &lt;p id=&quot;NlUs&quot;&gt;Для лучшего понимания того, как это всё работает, предлагаю взглянуть на упрощённые схемы.&lt;/p&gt;
  &lt;p id=&quot;3cL5&quot;&gt;1. Установлен WARP с фильтрами типа geoip:ru, маршрутизация в клиенте не настроена:&lt;/p&gt;
  &lt;ul id=&quot;cqUj&quot;&gt;
    &lt;li id=&quot;rm4b&quot;&gt;Если ресурс хостится в России или имеет доменные зоны .ru, соединение пройдёт через WARP, иначе — напрямую через сервер.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;FfKQ&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9c/68/9c684fb0-aa6e-477d-bb43-6293734dfab2.png&quot; width=&quot;810.8902677988242&quot; /&gt;
    &lt;figcaption&gt;3x-ui + WARP&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;sPoc&quot;&gt;2. Установлен WARP с фильтрами типа geoip:ru, в клиенте настроены фильтры на запрещённые сайты:&lt;/p&gt;
  &lt;ul id=&quot;mgjO&quot;&gt;
    &lt;li id=&quot;sC84&quot;&gt;Сначала клиент проверяет, заблокирован ли ресурс в России. Если нет — соединение идёт напрямую без участия прокси-сервера, иначе — через VPS;&lt;/li&gt;
    &lt;li id=&quot;Un3E&quot;&gt;Далее, если запрос дошёл до сервера, аналогично предыдущему варианту, проверяется зона хостинга ресурса и его доменная зона.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;F68P&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e8/15/e815acee-f7ba-4343-b84e-a01b5b1c19d7.png&quot; width=&quot;808&quot; /&gt;
    &lt;figcaption&gt;3x-ui + WARP + Client routing&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8QxZ&quot;&gt;3. Установлен WARP с фильтрами типа geoip:ru, в клиенте настроены фильтры типа geoip:ru:&lt;/p&gt;
  &lt;ul id=&quot;Qryi&quot;&gt;
    &lt;li id=&quot;CdBx&quot;&gt;Сначала клиент проверяет, хостится ли ресурс в России. Если да — соединение идёт напрямую без участия прокси-сервера, иначе — через VPS;&lt;/li&gt;
    &lt;li id=&quot;gIXd&quot;&gt;Далее, если запрос дошёл до сервера, аналогично первому варианту, проверяется зона хостинга ресурса и его доменная зона.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;wGRv&quot;&gt;Казалось бы, зачем нужны два одинаковых фильтра на разных уровнях? Действительно, в контексте одного соединения это не имеет смысла. Но если нашим прокси будет пользоваться несколько людей, мы не сможем контролировать настройки их клиентов (в том числе фильтры), поэтому, если есть нужда в маршрутизации, стоит делать её непосредственно на самом сервере.&lt;/p&gt;
  &lt;/section&gt;
  &lt;figure id=&quot;3K6z&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3a/11/3a1107a7-7824-4dfb-9af7-7b09169237f6.png&quot; width=&quot;811&quot; /&gt;
    &lt;figcaption&gt;3x-ui + WARP + Client routing&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;LYhC&quot;&gt;The end&lt;/h2&gt;
  &lt;p id=&quot;5L6C&quot;&gt;Очередной мини-гайд подошёл к концу. Надеюсь, было интересно и полезно :)&lt;/p&gt;
  &lt;p id=&quot;85p9&quot;&gt;Всем до скорого, и спасибо, что читаете! 😀&lt;/p&gt;

</content></entry><entry><id>noisycake:3x-ui_subscripton_aggregation</id><link rel="alternate" type="text/html" href="https://teletype.in/@noisycake/3x-ui_subscripton_aggregation?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=noisycake"></link><title>Агрегация подписок 3X-UI</title><published>2025-02-21T15:25:32.153Z</published><updated>2025-05-03T22:58:09.722Z</updated><category term="3-x-ui" label="3x-ui"></category><summary type="html">Гайд о том, как объединить несколько подписок 3x-ui в одну</summary><content type="html">
  &lt;p id=&quot;6Ob7&quot;&gt;&lt;strong&gt;Привет, Teletype!&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;b7Vh&quot;&gt;В первой моей публикации обсудим, как объединить ссылки на подписки 3x-ui с нескольких серверов&lt;/p&gt;
  &lt;p id=&quot;aU7t&quot;&gt;Допустим, у нас есть два VPS с панелями на борту: один в Германии, другой в Нидерландах. Как же сделать так, чтобы оба добавлялись в клиентское приложение одной ссылкой?&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h4 id=&quot;Контакты-и-не-только&quot;&gt;Контакты и не только&lt;/h4&gt;
  &lt;p id=&quot;6mm7&quot;&gt;Автор: &lt;a href=&quot;https://t.me/noisycake&quot; target=&quot;_blank&quot;&gt;https://t.me/noisycake&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;ceg0&quot;&gt;Ткг: &lt;a href=&quot;https://t.me/hfk_blog&quot; target=&quot;_blank&quot;&gt;https://t.me/hfk_blog&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;hBRQ&quot;&gt;Блог: &lt;a href=&quot;https://noisycake.ru/&quot; target=&quot;_blank&quot;&gt;https://noisycake.ru&lt;/a&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;Зачем-это-вообще-нужно?&quot;&gt;Зачем это вообще нужно?&lt;/h2&gt;
  &lt;p id=&quot;o1Rm&quot;&gt;Объединение нескольких панелей может быть крайне полезным для продавцов VPN-подписок и пользователей, ведь вместо того, чтобы вставлять кучу ссылок для каждой локации/сервера, клиенту нужно будет скопировать лишь одну.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;Неполноценный-способ&quot;&gt;Неполноценный способ&lt;/h2&gt;
  &lt;p id=&quot;AiiM&quot;&gt;В качестве разминки просто объединим две ссылки на конфигурации, то есть основная функция подписки (обновление конфигурации) работать не будет!&lt;/p&gt;
  &lt;p id=&quot;BvaJ&quot;&gt;1) Открываем 3x-ui на первом сервере и копируем обычную ссылку клиента;&lt;/p&gt;
  &lt;figure id=&quot;LCLl&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4f/06/4f068a45-1d20-49eb-ba10-7b2d031062b3.png&quot; width=&quot;753&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Z7qp&quot;&gt;2) Вставляем её в пустой текстовый файл (.txt);&lt;/p&gt;
  &lt;p id=&quot;33PY&quot;&gt;3) Повторяем то же самое со вторым сервером, и получившийся результат вставляем на следующую строку в том же файле;&lt;/p&gt;
  &lt;figure id=&quot;ZBxF&quot; class=&quot;m_column&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a5/05/a505893c-f1b6-4e5a-8747-756f569bc6dd.png&quot; width=&quot;1140&quot; /&gt;
    &lt;figcaption&gt;subs.txt&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;iHxW&quot;&gt;4) .txt теперь можно выложить в открытый доступ и скормить ссылку приложению-клиенту.&lt;/p&gt;
  &lt;p id=&quot;eMjx&quot;&gt;К примеру, закинем файл на GitHub.&lt;/p&gt;
  &lt;p id=&quot;3hB2&quot;&gt;Создаём новый репозиторий -&amp;gt; нажимаем &amp;quot;upload an existing file&amp;quot; -&amp;gt; прикрепляем наш файл -&amp;gt; жмём &amp;quot;Commit changes&amp;quot;.&lt;/p&gt;
  &lt;figure id=&quot;I12v&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e3/34/e3345b5c-9fe5-407c-9c8a-11613db48cf3.png&quot; width=&quot;1248&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pIQ9&quot;&gt;Тыкаем на файл. Чтобы получить правильную ссылку, нужно нажать на кнопку &amp;quot;Raw&amp;quot; в правой части экрана.&lt;/p&gt;
  &lt;figure id=&quot;Ko6X&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/4a/ac4a7426-15b5-4bef-b876-82494b4d4f57.png&quot; width=&quot;1790&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ieSV&quot;&gt;На открывшейся вкладке копируем ссылку из поисковой строки. Выглядеть она будет примерно так:&lt;/p&gt;
  &lt;p id=&quot;tGK0&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/NoisyCake/justfortest/refs/heads/main/sub.txt&quot; target=&quot;_blank&quot;&gt;https://raw.githubusercontent.com/Whoami/justfortest/refs/heads/main/sub.txt&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;GB5r&quot;&gt;Как раз её мы и будем вставлять в приложения-клиенты по типу Hiddify и Nekobox. Проверим в первом. Копипастим ссылку, переходим в раздел &amp;quot;Прокси&amp;quot; левой менюшки. Отлично, видим оба наших подключения. Если нажать на &amp;quot;auto&amp;quot;, будет выбираться сервер с наименьшим пингом.&lt;/p&gt;
  &lt;figure id=&quot;fXK6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8b/0c/8b0c92af-7ce3-460f-be13-5c7bd6a7405d.png&quot; width=&quot;848&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;nlY9&quot;&gt;Вуаля! И вроде никаких заморочек, но есть две проблемы:&lt;/p&gt;
  &lt;ol id=&quot;64Xs&quot;&gt;
    &lt;li id=&quot;7vGD&quot;&gt;Ссылку может получить кто угодно. Решается ограничением доступа или использованием других способов публикации ссылки;&lt;/li&gt;
    &lt;li id=&quot;ZxbB&quot;&gt;Если вы измените конфигурацию подключения, клиент (NekoBox, Hiddify и т.п.) не сможет достать новые данные, ведь мы дали ссылки на статичные конфигурационные файлы, которые не обновляются автоматически. Получается, вносить изменения придётся вручную.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;figure id=&quot;dsVD&quot; class=&quot;m_column&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/15/ca/15ca62e7-402d-4fa4-a4e0-9d9e70053d56.png&quot; width=&quot;680&quot; /&gt;
    &lt;figcaption&gt;Схема работы простого решения&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;q4PV&quot;&gt;Посмотрим, как можно решить эти вопросы.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;Оптимальное-решение&quot;&gt;Оптимальное решение&lt;/h2&gt;
  &lt;p id=&quot;VZP7&quot;&gt;Главное условие: включить функцию &amp;quot;подписки&amp;quot; в 3x-ui на каждом из серверов (рассказывал об этом в &lt;a href=&quot;https://noisycake.ru/articles/vpn_server/#%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%BA%D0%B8&quot; target=&quot;_blank&quot;&gt;своём блоге&lt;/a&gt;), а также сделать &lt;strong&gt;одинаковый&lt;/strong&gt; ник в поле &amp;quot;Subscription&amp;quot; для клиентов, которых вы будете объединять.&lt;/p&gt;
  &lt;figure id=&quot;n41Z&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ec/87/ec873e4e-c9f4-4215-8059-9364768fa98e.png&quot; width=&quot;549&quot; /&gt;
    &lt;figcaption&gt;Subscription клиента первого сервера&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;huBH&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/19/a3/19a35cb5-7197-4bce-a667-9e26cfdf5720.png&quot; width=&quot;552&quot; /&gt;
    &lt;figcaption&gt;Subscription клиента второго сервера&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Z9eZ&quot;&gt;Чтобы исключить проблемы прошлого варианта, можно поднять обратный прокси на одном из имеющихся VPS, который будет автоматически брать конфиги с панелей и объединять их. Воспользуемся готовым решением от пользователя GitHub &lt;a href=&quot;https://github.com/apa4h&quot; target=&quot;_blank&quot;&gt;https://github.com/apa4h&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;Rywg&quot;&gt;UPD: Написал своё приложение, работающее на Python + Nginx: &lt;a href=&quot;https://github.com/NoisyCake/3x-ui_subscriptions_aggregator&quot; target=&quot;_blank&quot;&gt;https://github.com/NoisyCake/3x-ui_subscriptions_aggregator&lt;/a&gt;. Процесс установки описан по ссылке, но в этой статье оставил разбор стороннего решения&lt;/p&gt;
  &lt;blockquote id=&quot;9irq&quot;&gt;Вы можете спросить меня, что ещё за обратный прокси такой? В общем-то, это ПО (в нашем случае nginx), которое получает от пользователей запросы, перенаправляет их другим приложениям и возвращает ответы&lt;/blockquote&gt;
  &lt;p id=&quot;MoXr&quot;&gt;Заходим на какой-нибудь из серверов. Установим необходимые утилиты и скачаем репозиторий:&lt;/p&gt;
  &lt;pre id=&quot;Jsk2&quot;&gt;sudo apt install docker-compose
git clone https://github.com/apa4h/nginx-3x-ui-subscription-proxy.git
cd nginx-3x-ui-subscription-proxy/
cp .env.template .env&lt;/pre&gt;
  &lt;p id=&quot;dcm9&quot;&gt;Теперь нужно настроить переменные окружения. Переходим в только что созданный файл: &lt;code&gt;nano .env&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;6jKy&quot;&gt;Перед нами будут следующие строки:&lt;/p&gt;
  &lt;figure id=&quot;Zqh1&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/74/69/74699919-c606-464a-a66e-d00f0a9b53b8.png&quot; width=&quot;479&quot; /&gt;
    &lt;figcaption&gt;.env&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;mp6c&quot;&gt;Для начала определимся, нужен нам https или нет. Если у вас нет сертификатов на сервере, и вы не хотите с ними заморачиваться, оставьте TLS_MODE=off. Но в таком случае могут возникнуть проблемы с подключением, поскольку многие клиентские приложения проверяют ссылку на наличие https. Если же у вас есть сертификат или вы хотите его сделать (рассказывал в &lt;a href=&quot;https://noisycake.ru/articles/vpn_server/#%d1%81%d0%bf%d0%be%d1%81%d0%be%d0%b1-2&quot; target=&quot;_blank&quot;&gt;этом гайде&lt;/a&gt;), смените на &amp;quot;on&amp;quot;.&lt;/p&gt;
  &lt;p id=&quot;D6dv&quot;&gt;В первой строке нужно указать папку, где хранятся ключи сертификата.&lt;/p&gt;
  &lt;p id=&quot;PsfY&quot;&gt;SITE_HOST: если устанавливали сертификат, нужно писать адрес, на который этот сертификат распространяется. В противном случае вбиваем IP сервера.&lt;/p&gt;
  &lt;p id=&quot;rkTL&quot;&gt;В SITE_PORT пишем любой свободный порт на сервере.&lt;/p&gt;
  &lt;p id=&quot;WuSu&quot;&gt;SERVERS: перечисляем через пробел пути к подписке каждого сервера. Ссылки должны выглядеть так:&lt;/p&gt;
  &lt;p id=&quot;isO8&quot;&gt;&lt;a href=&quot;https://xn--%3Cip__%3E-fsim0ba8btsp:&lt;%D0%BF%D0%BE%D1%80%D1%82_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%BA%D0%B8&gt;/%3C%D0%BA%D0%BE%D1%80%D0%BD%D0%B5%D0%B2%D0%BE%D0%B9&quot; target=&quot;_blank&quot;&gt;https://&amp;lt;ip_или_домен&amp;gt;:&amp;lt;порт_подписки&amp;gt;/&amp;lt;корневой&lt;/a&gt;_url_подписки&amp;gt;/&lt;/p&gt;
  &lt;p id=&quot;XhLA&quot;&gt;Можете просто скопировать ссылку на подписку в подключении и убрать имя клиента в конце.&lt;/p&gt;
  &lt;p id=&quot;BKEB&quot;&gt;В SUB можете указать, как будет выглядеть статическая часть ссылки на общую подписку. Я оставлю без изменений.&lt;/p&gt;
  &lt;p id=&quot;EkU0&quot;&gt;В итоге получаем что-то такое:&lt;/p&gt;
  &lt;figure id=&quot;dDCH&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/33/5f/335f9038-09f8-42d0-a324-0e0bcbf9bc09.png&quot; width=&quot;860&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;EeqW&quot;&gt;Сохраняем файл и выходим.&lt;/p&gt;
  &lt;p id=&quot;EsLE&quot;&gt;Пишем: &lt;code&gt;docker-compose up -d&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;aw5E&quot;&gt;Веб-сервер работает 😊. Чтобы получить подписку, нужно обратиться по адресу:&lt;/p&gt;
  &lt;p id=&quot;RUrg&quot;&gt;&lt;a href=&quot;https://%3Csite_host%3E/%3CSUB%3E%3C%D0%BD%D0%B8%D0%BA%D0%BD%D0%B5%D0%B9%D0%BC&quot; target=&quot;_blank&quot;&gt;https://&amp;lt;SITE_HOST&amp;gt;/&amp;lt;SUB&amp;gt;&amp;lt;никнейм&lt;/a&gt;_подписки&amp;gt; (&lt;a href=&quot;http://.../&quot; target=&quot;_blank&quot;&gt;http://...&lt;/a&gt; если TLS_MODE=off), где &amp;quot;никнейм_подписки&amp;quot; — &amp;quot;Subscription&amp;quot;, который вы указывали в настройках клиента подключений. Напомню, что в каждом подключении они должен быть одинаковыми.&lt;/p&gt;
  &lt;figure id=&quot;BOAS&quot; class=&quot;m_column&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/46/1e/461ea624-a3e3-4502-80b4-5c9103cb3b19.png&quot; width=&quot;1048&quot; /&gt;
    &lt;figcaption&gt;Схема работы оптимального решения&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;EIcg&quot;&gt;Если вы всё сделали правильно, то при попытке вставить ссылку в клиент, подтянутся конфиги. Также проверьте, работает ли обновление. Для этого измените подключение в панели (к примеру, порт) -&amp;gt; сохраните изменения -&amp;gt; обновите подписку в клиенте -&amp;gt; попробуйте подключиться. Таймаутов быть не должно.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;ARlE&quot;&gt;&lt;strong&gt;Примечание:&lt;/strong&gt; При создании сервиса по продаже VPN-подписок нужно понимать, что для каждого пользователя придётся генерировать сложно-подбираемый &amp;quot;Subscription&amp;quot;, иначе велика вероятность абуза.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;The-end&quot;&gt;The end&lt;/h2&gt;
  &lt;p id=&quot;dWIj&quot;&gt;Наш мини-гайд подошёл к концу. Надеюсь, было полезно 🙂&lt;/p&gt;
  &lt;p id=&quot;OSZp&quot;&gt;Всем до скорого, и спасибо, что читаете!&lt;/p&gt;

</content></entry></feed>