---
title: Подписка
description: Запуск сервера подписок 3x-ui — форматы base64/JSON/Clash, порты и пути, TLS, заголовки ответа и пользовательские шаблоны.
icon: Rss
---

**Подписка** — это единый URL, который возвращает все конфигурации клиента.
Клиентские приложения периодически обновляют его, поэтому при изменении
входящего соединения клиенты подхватывают изменения автоматически. Сервер
подписок работает как **отдельный** сервер от панели.

## Включение и настройка

Сервер подписок **включён по умолчанию** (`subEnable`). Настройте его в
параметрах подписки панели:

| Параметр      | По умолчанию | Назначение                                                  |
| ------------- | ------- | --------------------------------------------------------------- |
| `subPort`     | `2096`  | Порт прослушивания (отдельный от панели).                       |
| `subListen`   | _(все)_ | Адрес привязки.                                                 |
| `subPath`     | `/sub/` | Базовый путь для необработанных URL подписок.                   |
| `subDomain`   | _(нет)_ | Публичный хост; если задан, сервер отвечает только для этого Host. |
| `subCertFile` / `subKeyFile` | _(нет)_ | Сертификат + ключ TLS — когда заданы, сервер работает по **HTTPS**. |
| `subEncrypt`  | `true`  | Кодировать тело необработанной подписки в base64.               |
| `subUpdates`  | `12`    | Рекомендуемый интервал обновления (часы), отправляемый клиентам. |

URL подписки выглядит так:

```text
https://<sub-host>:<sub-port>/sub/<sub-id>
```

где `<sub-id>` — это **Sub ID** клиента.

Один и тот же Sub ID отдаётся в нескольких форматах по разным путям — список
**Base64** по `subPath` и конфигурация **JSON** (Xray-json) по пути JSON.
Соберите URL и предпросмотрите оба тела здесь:

<SubscriptionBuilder />

## Форматы вывода

**Формат выбирается по пути**, у каждого свой переключатель включения:

| Формат                | Путь      | Включается       | Вывод                                               |
| --------------------- | --------- | ---------------- | --------------------------------------------------- |
| **Необработанные ссылки** | `/sub/`   | всегда (если включён) | Список ссылок `vless://`, `vmess://`, … (закодированных в base64, когда включён `subEncrypt`). |
| **JSON**              | `/json/`  | `subJsonEnable`  | Полные клиентские конфигурации Xray.                |
| **Clash / Mihomo**    | `/clash/` | `subClashEnable` | YAML-профиль.                                       |

В подписке появляются только включённые входящие соединения, использующие
**VLESS, VMess, Trojan, Shadowsocks или Hysteria2**, упорядоченные по их индексу
сортировки подписки. Запрос `/sub/` с заголовком `Accept: text/html` (или
`?html=1`) возвращает удобочитаемую информационную страницу вместо
необработанного тела.

### Base64 vs JSON

Тело **Base64** — это просто ссылки для обмена, объединённые через перевод
строки и закодированные в стандартный base64 (переключается через `subEncrypt`).
Тело **JSON** оборачивает каждого клиента в полную клиентскую конфигурацию
Xray — фиксированный каркас (локальные входящие mixed/HTTP, DNS, маршрутизация,
policy) плюс исходящее соединение `proxy`, указывающее на входящее. 3x-ui
выдаёт **единый объект конфигурации для одного клиента и массив для
нескольких**, использует плоскую форму `settings` исходящего соединения
(`address`/`port`/`id`, `level: 8`) и удаляет `sockopt` из `streamSettings`.

## Заголовки ответа

Подписки возвращают стандартные заголовки, которые читают совместимые
приложения:

- **`Subscription-Userinfo`** — `upload`, `download`, `total` (байты; `total=0`
  означает без ограничений) и `expire` (Unix-секунды).
- **`Profile-Update-Interval`** — интервал обновления в часах (`subUpdates`).
- **`Profile-Title`**, **`Support-Url`**, **`Profile-Web-Page-Url`**,
  **`Announce`** — необязательный брендинг, отображаемый некоторыми клиентами.

## Пользовательские шаблоны страниц

Укажите в `subThemeDir` папку с пользовательским шаблоном информационной
страницы, чтобы оформить HTML-страницу подписки в фирменном стиле. Примечание
для каждого клиента на каждой ссылке полностью шаблонизируется — см.
[Ссылки для обмена → переменные примечаний](/docs/config/share-links#remark-template-variables).

<Callout type="info">
  Разместите сервер подписок за TLS (задайте `subCertFile`/`subKeyFile` или
  [обратный прокси](/docs/operations/reverse-proxy)), чтобы содержимое подписки
  не передавалось в открытом виде.
</Callout>
