# Кабинет провайдера > Что даёт кабинет провайдера FlowLock и как подключить к нему подписки за пять шагов. Кабинет провайдера на flowlock.cc связывает ваши подписки с приложением FlowLock для Windows, macOS и Linux. Он бесплатный, с лимитами; их снимает [«Анлимит»](https://flowlock.cc/docs/limits.md) за 1000 ₽ в месяц. ## Что вы получаете - **Ваши контакты в приложении.** Поддержка, почта и Telegram видны в карточке подписки и в «О провайдере». - **Статистику.** Сколько устройств пользуется вашими подписками, по системам, рост по месяцам, активные за 30 дней. - **Управление приложением** заголовками подписки: инфоблок с кнопкой, напоминание о продлении, переезд подписки на новый домен, запасной адрес, настройки пинга, автообновления, фрагментации и другое. - **Уведомления и команды.** Сообщение всем пользователям или выбранным устройствам, «обновить подписку», «сменить домен», «импортировать данные», «поменять настройки». - **Ограниченные и HWID-ссылки.** Подписку по ссылке можно добавить только на N устройств, а адрес подписки пользователь не видит. Всё это работает только для **подтверждённых** подписок: в подписке есть ваш ID, а её домен подтверждён в вашем кабинете. Чужой ID в чужой подписке ничего не даёт: домен подписки должен принадлежать тому же кабинету. ## С чего начать 1. **Войдите** на flowlock.cc в аккаунт FlowLock (или зарегистрируйтесь) и откройте [кабинет провайдера](https://flowlock.cc/provider/) → «Включить кабинет». Вы получите **ID провайдера** — 10 символов, например `k7m2x9q4bd`. 2. **Заполните контакты**: название (его видят пользователи), ссылка поддержки, почта, Telegram. 3. **Добавьте домен**, с которого раздаёте подписки (например `sub.example.com`), и подтвердите его TXT-записью или файлом на сайте. Подробно — на странице [«Домены»](https://flowlock.cc/docs/domains.md). 4. **Добавьте ID в подписку** заголовком ответа, строкой в теле или во фрагменте ссылки — см. [«ID в подписке»](https://flowlock.cc/docs/provider-id.md). 5. Готово. Приложения FlowLock с вашей подпиской появятся в статистике после первого обновления подписки. Дальше — по желанию: [управление приложением](https://flowlock.cc/docs/app-management.md), [уведомления и команды](https://flowlock.cc/docs/messages.md), [ограниченные ссылки](https://flowlock.cc/docs/install-links.md) и [API](https://flowlock.cc/docs/api.md). > **Без кабинета** FlowLock тоже читает подписку как обычно: серверы, `profile-title`, `subscription-userinfo`, > `support-url`, `announce`, правила маршрутизации и тему оформления. Кабинет добавляет то, что требует доверия к > провайдеру. Список заголовков без ID — на странице [«Заголовки подписки»](https://flowlock.cc/docs/headers.md). ## Если кабинет не открывается Кабинеты провайдеров включаются постепенно. Если на странице кабинета написано, что функция пока выключена, подготовьте подписку по этой документации и загляните позже. --- # ID в подписке > Три способа передать приложению ваш ID провайдера — заголовком ответа, строкой в теле подписки или во фрагменте ссылки. Приложение узнаёт вашу подписку по **ID провайдера** — 10 строчных латинских букв и цифр, его видно в обзоре кабинета. Подойдёт любой из трёх способов. Если их несколько, приложение берёт первый по этому списку. ## Заголовок ответа Лучший способ, если панель умеет свои заголовки: ``` flowlock-provider: k7m2x9q4bd ``` В Remnawave: «Настройки подписки» → «Дополнительные заголовки ответа» (`customResponseHeaders`), имя `flowlock-provider`, значение — ваш ID. Другие клиенты неизвестный заголовок пропускают, отдельно для FlowLock его слать не нужно. ## Строка в теле подписки Для подписок-ссылок и base64 (в base64 — внутри закодированного текста), в первых 50 строках. Другие клиенты считают такую строку комментарием: ``` #flowlock-provider: k7m2x9q4bd vless://… vless://… ``` Между `#`, именем и двоеточием можно ставить пробелы, регистр имени не важен. Строки длиннее 1024 байт пропускаются. В JSON-подписках (Xray, sing-box) строки нет — используйте заголовок или фрагмент. ## Фрагмент ссылки подписки Когда нельзя поменять ни заголовки, ни тело — ID дописывается к ссылке, которую вы выдаёте пользователю: ``` https://sub.example.com/abc123#Мой VPN?flowlock-provider=k7m2x9q4bd https://sub.example.com/abc123#flowlock-provider=k7m2x9q4bd ``` Фрагмент (всё после `#`) браузеры и приложения не отправляют серверу, так что панель его не видит. ## Что важно знать - ID не секрет: без [подтверждённого домена](https://flowlock.cc/docs/domains.md) он ничего не открывает. - Регистр не важен: `K7M2X9Q4BD` = `k7m2x9q4bd`. - Приложение помнит ID из последнего удачного обновления подписки. Убрали ID из ответа — подписка снова обычная. - `providerid` для Happ FlowLock не читает: у FlowLock свой ID. Добавьте `flowlock-provider` рядом. ## Как проверить После того как ID в подписке и домен подтверждён, обновите подписку в FlowLock. В течение минуты устройство появится в кабинете в разделе «Устройства», а в карточке подписки — ваши контакты. Если человек выключил «Сообщать провайдеру о подключении», его устройство в статистику не попадёт — это его право (см. [«Приватность»](https://flowlock.cc/docs/privacy.md)). --- # Домены и проверка владения > Как подтвердить домен подписки TXT-записью или файлом, что значат статусы и почему подтверждается точное имя. Домен подписки нужно подтвердить: так никто не сможет выдать себя за вас, положив ваш ID в свою подписку. FlowLock хранит имя подтверждённого домена и его хеш SHA-256; приложения сообщают серверу только хеш домена, с которого взята подписка. ## Добавить домен 1. Кабинет → «Домены» → введите имя (`sub.example.com`) или целую ссылку подписки — кабинет возьмёт из неё домен. 2. Подтвердите его **одним** из способов ниже. Кабинет покажет готовые значения для копирования. 3. Нажмите «Проверить» — или подождите: новый домен кабинет сам проверяет раз в час первые 72 часа. ## TXT-запись У регистратора или в DNS-панели (Cloudflare и др.): ``` _flowlock.sub.example.com. TXT "flowlock-provider=k7m2x9q4bd" ``` Имя записи — `_flowlock.` перед вашим доменом. На поддомене может быть сколько угодно других TXT-записей: кабинет ищет среди них ту, что равна `flowlock-provider=`. ## Файл на сайте Файл `https://sub.example.com/.well-known/flowlock-provider` с текстом: ``` flowlock-provider=k7m2x9q4bd ``` Файл должен отдаваться прямо с этого домена: порт 443, действительный сертификат, код 200, без перенаправлений, не больше 4 КБ. Домен, который указывает на частный адрес (`10.x`, `192.168.x` и т. п.), так не подтвердить. ## Статусы | Статус | Что значит | | --------------------------- | ------------------------------------------------------------------------------ | | ждёт проверки (`pending`) | домен добавлен, проверка ещё не прошла | | подтверждён (`verified`) | всё работает | | ошибка проверки (`failing`) | последняя проверка не прошла; подписки пока работают | | потерян (`lost`) | три неудачи подряд, не меньше 48 часов; подписки с домена работают как обычные | Если проверка не прошла, кабинет пишет причину: нет ни записи, ни файла; запись есть, но с другим ID; DNS не ответил; файл отдаётся не с кодом 200; файл не скачался; домен смотрит на частный адрес. ## Важно - Подтверждается **точное имя**: `sub.example.com` и `example.com` — разные домены, `www.` тоже отдельный. Порт не важен: `sub.example.com:2096` = `sub.example.com`. - Русские домены можно вводить как есть (`подписка.рф`): кабинет переведёт их в punycode. - IP-адрес подтвердить нельзя: подписки по IP работают как обычные. - Запись или файл **не удаляйте**: кабинет перепроверяет домен раз в сутки. Потерянный домен возвращается сам, как только проверка снова пройдёт. - Один домен может подтвердить несколько провайдеров, у каждого своя TXT-запись — например, общая панель. - Доменов в кабинете — до 50, ручных проверок — до 20 в час. Адреса для [переезда подписки](https://flowlock.cc/docs/app-management.md) (`new-url`, `new-domain`, `fallback-url`), для команды «Сменить адрес» и для [ограниченных ссылок](https://flowlock.cc/docs/install-links.md) тоже должны быть на ваших подтверждённых доменах. --- # Заголовки подписки > Что FlowLock читает из ответа любой подписки — имя, трафик и срок, поддержка, объявление, интервал обновления — и что сам отправляет панели. Эти параметры FlowLock читает у **любой** подписки, ID провайдера для них не нужен. Имена — общепринятые (Remnawave, Marzban, 3x-ui и другие панели шлют их и так), поэтому обычно ничего настраивать не надо. Параметры приходят **заголовком ответа** подписки. Для подписок-ссылок и base64 их можно положить и **строкой в теле** `#имя: значение` в первых 50 строках; заголовок важнее строки с тем же именем. Текст можно закодировать как `base64:…` (так делает Remnawave с `rwEncodeBase64:`). ## Что читается | Параметр | Что делает | | ------------------------- | ------------------------------------------------------------------------------------------ | | `profile-title` | имя подписки (текст или `base64:`) | | `subscription-userinfo` | трафик и срок: `upload=…; download=…; total=…; expire=` | | `support-url` | кнопка «Поддержка» | | `profile-web-page-url` | кнопка «Страница подписки» | | `announce` | объявление «От провайдера» (до 200 символов, текст или `base64:`) | | `profile-update-interval` | как часто обновлять подписку, в часах | | `routing` | правила маршрутизации подписки — см. [«Маршрутизация»](https://flowlock.cc/docs/routing.md) | | `routing-enable` | `0` — не применять правила маршрутизации подписки (свои правила пользователя не трогаются) | | `flowlock-theme` | тема оформления, если пользователь согласился — см. [«Темы»](https://flowlock.cc/docs/themes.md) | | `flowlock-provider` | ваш ID провайдера — см. [«ID в подписке»](https://flowlock.cc/docs/provider-id.md) | Пример ответа: ``` HTTP/1.1 200 OK profile-title: base64:0JzQvtC5IFZQTg== subscription-userinfo: upload=0; download=1073741824; total=107374182400; expire=1798761600 profile-update-interval: 12 support-url: https://t.me/myvpn_support announce: Новый сервер в Нидерландах уже в списке ``` `total=0` или без `total` — трафик без лимита («безлимит»), `expire=0` или без `expire` — бессрочно. Расширенные параметры (инфоблок, «Продлить», переезд на новый домен, настройки приложения) работают только у подтверждённой подписки — они на странице [«Управление приложением»](https://flowlock.cc/docs/app-management.md). ## Форматы подписки FlowLock понимает base64 и список ссылок (`vless://`, `vmess://`, `trojan://`, `ss://`, `hysteria2://`/`hy2://` и другие), Xray JSON и sing-box JSON. В JSON-подписках правила маршрутизации берутся из самого JSON (`routing` у Xray, `route` у sing-box). ## Что FlowLock отправляет панели - **User-Agent** — свой, вида `FlowLock/1.2.0 (macOS; arm64)`; подробности и совместимость — на странице [«User-Agent»](https://flowlock.cc/docs/user-agent.md). - **HWID-заголовки** для лимита устройств (как у Remnawave): `x-hwid`, `x-device-os`, `x-ver-os`, `x-device-model` — пока у пользователя включено «Отправлять HWID». Подписка может потребовать HWID всегда (`subscription-always-hwid-enable`, нужен ID). Подписки FlowLock загружает напрямую, мимо VPN: многие панели не отвечают на адреса VPN-серверов. ## Кнопка «Добавить в FlowLock» На странице подписки можно поставить ссылку, которая добавит подписку в приложение: ``` flowlock://add/https://sub.example.com/abc123 https://flowlock.cc/add/#url=https%3A%2F%2Fsub.example.com%2Fabc123&name=Мой%20VPN ``` Первая откроет приложение (оно спросит подтверждение), вторая — сайт, который добавит подписку в аккаунт FlowLock пользователя. Остальные команды — на странице [«Ссылки flowlock://»](https://flowlock.cc/docs/links.md). --- # Управление приложением > Параметры подписки, которыми провайдер управляет FlowLock — инфоблок, продление, переезд, запасной адрес и настройки приложения; что FlowLock не читает и почему. Параметры приходят **заголовком ответа подписки** или **строкой в теле** `#имя: значение` (заголовок важнее строки с тем же именем). Имена — как у Happ: если ваша панель уже шлёт их для Happ, FlowLock поймёт их без настройки. Текст можно закодировать как `base64:…`. Логические значения: `true` или `1` — да, `false` или `0` — нет. Параметры этой страницы работают **только у подтверждённой подписки**: в ней ваш [ID](https://flowlock.cc/docs/provider-id.md), а её домен [подтверждён](https://flowlock.cc/docs/domains.md) в вашем кабинете. Параметры для любой подписки — на странице [«Заголовки подписки»](https://flowlock.cc/docs/headers.md). ## Пример ``` HTTP/1.1 200 OK profile-title: base64:0JzQvtC5IFZQTg== subscription-userinfo: upload=0; download=1073741824; total=107374182400; expire=1798761600 support-url: https://t.me/myvpn_support flowlock-provider: k7m2x9q4bd sub-info-color: blue sub-info-text: Новый сервер в Нидерландах уже в списке sub-info-button-text: Подробнее sub-info-button-link: https://myvpn.example/news sub-expire: 1 sub-expire-button-link: https://t.me/myvpn_bot?start=renew fallback-url: https://sub2.example.com/abc123 ping-type: tcp ``` ## Расширенные параметры | Параметр | Значение | Что делает | | --------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `new-url` | ссылка | навсегда меняет адрес подписки у всех. Новый адрес — только на вашем подтверждённом домене; если с него подписка не загрузилась, приложение вернёт старый | | `new-domain` | домен | меняет только домен (путь и токен остаются). Тоже только ваш подтверждённый домен | | `fallback-url` | ссылка | запасной адрес на вашем подтверждённом домене: основной не ответил за 9 с, ошибка сети или HTTP 300–599 — приложение пробует запасной | | `serverDescription` | до 30 символов | подпись под именем сервера: в ссылке сервера `vless://…#Германия?serverDescription=0JHRi9GB0YLRgNGL0Lk=` (base64) или `meta.serverDescription` в JSON-подписке | | `sub-info-text` | до 200 символов, `0` — убрать | инфоблок в карточке подписки | | `sub-info-color` | `blue` (по умолчанию), `green`, `red` | цвет инфоблока | | `sub-info-button-text` | до 25 символов | кнопка в инфоблоке (без неё кнопки нет) | | `sub-info-button-link` | `https://…` или `tg://…` | куда ведёт кнопка | | `sub-expire` | `1` | баннер «Подписка закончится через N дн.» за 3 дня до `expire` и «Подписка закончилась» после | | `sub-expire-button-link` | `https://…` или `tg://…` | кнопка «Продлить» в этом баннере | | `notification-subs-expire` | `1` | системное уведомление за 3 дня, за 1 день и в день окончания | | `subscription-always-hwid-enable` | `1` | этой подписке HWID отправляется всегда, даже если пользователь выключил «Отправлять HWID». Пользователь видит пояснение «так требует провайдер» и может только удалить подписку | ## Настройки приложения Эти же ключи можно прислать командой «Поменять настройки» (см. [«Уведомления и команды»](https://flowlock.cc/docs/messages.md)). | Параметр | Значение | Что меняет | Где | | -------------------------------------- | ------------------------------------ | ------------------------------------- | ----- | | `subscription-autoconnect` | `1` / `0` | подключаться при запуске приложения | все | | `subscription-ping-onopen-enabled` | `1` / `0` | пинговать серверы при запуске | все | | `subscription-auto-update-enable` | `1` / `0` | автообновление **этой** подписки | все | | `subscription-auto-update-open-enable` | `1` / `0` | обновлять подписки при запуске | все | | `ping-type` | `proxy`, `proxy-head`, `tcp`, `icmp` | способ пинга (`proxy-head` = `proxy`) | все | | `check-url-via-proxy` | `https://…` | адрес проверки для пинга через прокси | все | | `proxy-ping-timeout` | секунды, 1–10 (больше — 10) | таймаут пинга | все | | `change-user-agent` | строка до 256 | User-Agent загрузки **этой** подписки | все | | `fragmentation-enable` | `1` / `0` | фрагментация TLS ClientHello | все | | `fragmentation-packets` | `tlshello` или `1-3` | какие пакеты дробить | macOS | | `fragmentation-length` | `50-100` | длина кусков | macOS | | `fragmentation-interval` | `10-20` | пауза между кусками, мс | macOS | | `subscriptions-sort-type` | `without`, `ping`, `alphabet` | порядок серверов | все | | `subscription-always-hwid-enable` | `1` / `0` | см. выше | все | | `notification-subs-expire` | `1` / `0` | см. выше | все | ### Как это видит пользователь Рядом с настройкой — «Задано провайдером «Мой VPN»» и кнопка «Вернуть моё». Если пользователь вернул своё, тот же заголовок его больше не перебивает; новое значение — перебивает. Удалил подписку — настройки, заданные вами, возвращаются к его прежним. ## Что FlowLock не читает | Параметр | Почему | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | `custom-tunnel-config`, `socks-auth-*`, `http-auth-*`, `dns-from-json-enable` | открывают локальный прокси наружу, меняют DNS или конфигурацию ядра целиком — ломают защиту пользователя | | `proxy-enable`, `tun-enable`, `tun-mode`, `tun-type` | режим подключения выбирает пользователь (TUN требует прав администратора) | | `exclude-routes`, `exclude-routes-set`, `per-app-proxy-*` | пускают трафик мимо VPN | | `hide-settings` | пользователь вправе видеть, что работает на его компьютере; адрес подписки скрывают [ограниченные ссылки](https://flowlock.cc/docs/install-links.md) | | `server-address-resolve-*`, `subscription-request-timeout`, `subscription-autoconnect-type`, `proxy-ping-mode`, `ping-result`, `manual-block-user-agent` | нет такой настройки в FlowLock или это выбор пользователя | | `noises-*`, `mux-*`, `sniffing-enable`, `fragmentation-maxsplit`, `no-limit-*`, `user-agent-geo-files` | параметры другого ядра (Xray) или режимов Happ | | `color-profile`, `hide-vpn-icon`, `subscriptions-collapse`, `subscriptions-expand-now`, `subscription-pin`, `dont-use-filter`, `app-auto-start`, `xray-tun-*`, `include-all-networks-enable` и другие мобильные | только iOS/Android или не имеют смысла на компьютере; темы у FlowLock свои (`flowlock-theme`) | | `providerid` | ID Happ; у FlowLock свой — `flowlock-provider` | Ни заголовком, ни командой провайдер не меняет: правила маршрутизации пользователя и «всё напрямую», DNS, порты и пароли локального прокси, «Разрешить подключения из сети», общий переключатель «Отправлять HWID», режим подключения, диагностику и аккаунт. --- # Тема оформления подписки > Заголовок flowlock-theme — цвета интерфейса FlowLock для людей вашей подписки, формат значения и правила читаемости. Провайдер может прислать с подпиской **тему оформления** — цвета интерфейса FlowLock. Приложение показывает её людям вашей подписки, только если человек согласился: когда тема впервые появилась, FlowLock один раз спрашивает «<имя подписки> предлагает свою тему. Применить?». ID провайдера для темы не нужен. Формат свой. Чужие форматы тем (Happ `color-profile` и другие) FlowLock не читает. ## Как прислать **Заголовок ответа** (в Remnawave — одна строка в Response Headers): ``` flowlock-theme: accent=#1F7A4D/#4CC38A; bg=#F4F7F5/#0E1411; card=#FFFFFF/#17201B; text=#10231A/#E6EFE9; muted=#5B6B62/#93A39A ``` **Строка в теле** — если заголовки добавить нельзя, первой строкой подписки-ссылок или base64: ``` #flowlock-theme: accent=#1F7A4D/#4CC38A; bg=#F4F7F5/#0E1411 ``` Заголовок шлётся всем клиентам: другие клиенты неизвестный заголовок пропускают, угадывать по User-Agent не нужно. ## Значение Поля через `;`, в каждом `ключ=цвет`. Цвет — `#RRGGBB` или пара `#светлая/#тёмная`: первая для светлой темы приложения, вторая для тёмной. Один цвет без `/` — для обеих. | Ключ | Что красит | | -------- | ---------------------------------------------------- | | `accent` | кнопки, переключатели, кольцо подключения, выделение | | `bg` | фон окна | | `card` | карточки, панели, строки списка | | `text` | основной текст | | `muted` | второстепенный текст | Все ключи необязательные. Неизвестные ключи и неверные цвета пропускаются, остальное работает. `none` или пустое значение — темы нет. Заголовок длиннее 512 байт или строка тела длиннее 1024 байт не читаются (Remnawave обрезает заголовки до 512 символов). В формате нет и не будет картинок, логотипов, шрифтов, градиентов и прозрачности. ## Читаемость FlowLock проверяет контраст (WCAG) и при необходимости поправляет цвета: текст — не меньше 4.5:1 к фону и карточкам, второстепенный текст и акцент — не меньше 3:1, текст на акценте подбирается сам. Фон должен подходить стороне: светлый — для светлой темы, тёмный — для тёмной. Одиночный `bg=#FFFFFF` подходит только светлой стороне, и в тёмной теме приложение оставит свой фон. Хотите обе стороны — задайте пару `bg=#светлый/#тёмный`. Если что-то поправлено, в настройках оформления человек увидит «Тема провайдера поправлена для читаемости». ## Что видит человек - Режим (системная, светлая или тёмная тема) выбирает человек, тема провайдера его не переключает. - Тема меняется вместе с обновлениями подписки без новых вопросов. Пропала из ответа — пропала и в приложении, а свой акцент человека возвращается. - Windows и Linux красят все пять цветов, macOS — акцент, фон и карточки основного окна. - Своя тема человека важнее темы провайдера (см. [«Темы и обмен ими»](https://flowlock.cc/docs/user-themes.md)). --- # Правила маршрутизации подписки > Как провайдер присылает правила «что через VPN, что напрямую» — профиль Happ в заголовке routing, Xray и sing-box JSON. Провайдер может прислать с подпиской **правила маршрутизации**: какие сайты и адреса идут через VPN, какие напрямую, какие блокируются. FlowLock применяет их вместе со своими правилами пользователя; правила пользователя важнее. ID провайдера для этого не нужен. ## Профиль Happ Тот же формат, что отдаёт Remnawave для Happ, — заголовок `routing` или строка в теле: ``` routing: happ://routing/add/ routing: happ://routing/onadd/ ``` - `add` — правила подписки просто работают вместе с правилами человека. - `onadd` — то же, и если в профиле `GlobalProxy: false`, приложение **предложит** режим «Выборочно» (через VPN только то, что в правилах). Само оно режим не переключает. - `routing: off` или `routing-enable: 0` — правила подписки не применять. Домены в профиле Happ (как в Xray) — совпадение по подстроке, FlowLock читает их так же. ## JSON-подписки - **Xray JSON** — правила из `routing.rules`. - **sing-box JSON** — правила из `route.rules`. ## Что видит человек - Правила подписки показаны отдельным списком в редакторе маршрутов, каждое можно отключить галочкой. - При обновлении подписки меняются **только** правила подписки; свои правила человека сохраняются. - Порядок: блокировки, «через VPN» и «напрямую» пользователя, затем те же три списка подписки, затем режим маршрутизации. ## Категории geosite и geoip В правилах можно ссылаться на категории `geosite:<имя>` и `geoip:<имя>`. Стандартные базы FlowLock — SagerNet, а категории, которых там нет (например `ru-blocked`), — runetfreedom. Человек может подключить свои базы (см. [«Маршруты и свои базы»](https://flowlock.cc/docs/rules.md)). Ссылки `flowlock://routing/add/…` и `flowlock://routing/onadd/…` добавляют те же правила по нажатию (см. [«Ссылки flowlock://»](https://flowlock.cc/docs/links.md)). --- # Ограниченные и HWID-ссылки > Ссылки на подписку с лимитом устройств или для одного устройства по HWID — адрес подписки пользователь не видит. **Ограниченная ссылка** — подписку по ней можно добавить не больше чем на N устройств. **HWID-ссылка** — только на одно устройство с заданным HWID. ## Создать ссылку 1. Кабинет → «Ссылки» → «Новая ссылка»: адрес подписки (на вашем [подтверждённом домене](https://flowlock.cc/docs/domains.md)), лимит устройств (1–1000), заметка для себя, срок действия. Для HWID-ссылки — ещё HWID устройства (лимит тогда 1). 2. Вы получите две ссылки на одно и то же: ``` flowlock://install/a7k2m9x4q8b3n6p5 https://flowlock.cc/i/a7k2m9x4q8b3n6p5 ``` Вторую удобно отправлять в мессенджере: страница откроет FlowLock или предложит его скачать. Кабинет показывает и QR-код этой ссылки. ## Как это работает - Адрес подписки хранится на сервере FlowLock зашифрованным и выдаётся приложению, только пока у ссылки есть места. Устройство, которое уже получало ссылку, получит её снова без траты места (переустановка). - Приложение спрашивает человека: «Добавить подписку провайдера «Мой VPN»?» — молча ничего не добавляется. - Пользователь не видит адрес подписки: его нельзя скопировать, показать QR или поделиться им. На другие свои устройства пользователь переносит не адрес, а саму ссылку — и каждое занимает своё место. - Мест нет — приложение пишет «Администратор подписки ограничил число устройств» и показывает ваши контакты. - Для HWID-ссылки приложение спросит человека, можно ли отправить HWID, если «Отправлять HWID» у него выключено. Другой HWID — ссылка не сработает. ## Управление В списке ссылок видно, сколько мест занято. Для каждой ссылки можно: - посмотреть устройства и **отвязать** любое — место освободится; - изменить лимит (не меньше числа устройств на ссылке) и заметку; - выключить и включить снова; - удалить. > **Отвязка не отзывает доступ.** Уже выданный адрес подписки продолжит работать. Чтобы закрыть доступ, > смените токен подписки в своей панели. Это защита от случайной раздачи, а не от решительного человека: на своём компьютере адрес можно перехватить. ## Через API ```sh # ограниченная ссылка на 3 устройства curl -s -X POST https://api.flowlock.cc/v1/provider/installs -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' \ -d '{"url": "https://sub.example.com/abc123", "limit": 3, "note": "user 1042"}' # HWID-ссылка curl -s -X POST https://api.flowlock.cc/v1/provider/installs -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' \ -d '{"url": "https://sub.example.com/abc123", "limit": 1, "hwid": "5f0c…"}' ``` Остальные вызовы — в [справочнике API](https://flowlock.cc/docs/api.md#ссылки). Ссылок в кабинете — до 5000. --- # Уведомления и команды > Сообщения пользователям подтверждённых подписок — уведомления, окно поверх и безопасные команды приложению, адресаты, расписание и ограничения. Кабинет → «Сообщения» или [API](https://flowlock.cc/docs/api.md#сообщения). Приложения забирают сообщения при запуске, после обновления подписки и раз в час, пока работают, — обычно сообщение доходит за час. Получают только [подтверждённые](https://flowlock.cc/docs/providers.md) подписки. ## Уведомление - **Заголовок** — до 100 символов, **текст** — до 2000, простой текст. - **Ссылка** — `https://…`, кнопка «Открыть». Необязательно. - **Перевод** на `ru` или `en`: пользователь видит свой язык, иначе основной текст. - **Вид**: - обычное (`optional`) — системное уведомление и баннер в карточке подписки; - окно поверх (`force`) — окно поверх приложения. ## Команды | Команда | Что делает | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `update-subscription` | обновить подписку | | `sub-change` | сменить домен (`domain`) или адрес (`url`) подписки — только на ваш подтверждённый домен; `url` — только выбранным устройствам (у каждого пользователя свой адрес) | | `import-data` | предложить импорт: ссылка подписки, ссылки серверов, профиль, правила маршрутизации. **Пользователь всегда подтверждает** | | `set-settings` | поменять настройки — ключи из таблицы [«Настройки приложения»](https://flowlock.cc/docs/app-management.md#настройки-приложения) | Перед сменой адреса приложение проверяет, что новый домен подтверждён вашим кабинетом; не загрузилась подписка с нового адреса — возвращается старый. ## Кому и когда - **Кому**: всем, по системам (`windows`, `macos`, `linux`) или выбранным устройствам — до 20, идентификаторы из раздела «Устройства» (там их можно отметить и сразу перейти к сообщению). - **Когда**: сразу или по расписанию, до 30 дней вперёд. - **Срок**: от часа до 30 дней, по умолчанию 7. После срока сообщение не доставляется. - **Отмена** — в любой момент: кто ещё не получил, не получит. По каждому сообщению видно, сколько устройств его получили, увидели, открыли ссылку, выполнили, отказались или не смогли выполнить. ## Ограничения - Рассылка всем или по системам — не больше 2 в сутки (с «Анлимитом» — 4) и не чаще раза в 5 минут. - Выборочных сообщений — до 200 в час, до 20 устройств в каждом. Ждущих доставки — до 500. - Приложение показывает не больше 3 уведомлений одного провайдера в сутки и одно окно поверх в час; лишние остаются в списке уведомлений карточки подписки. - Реклама и спам запрещены: за них кабинет приостанавливают. ## Примеры API ```sh # уведомление всем, с переводом curl -s -X POST https://api.flowlock.cc/v1/provider/messages -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' -d '{ "kind": "notification", "mode": "optional", "title": "Плановые работы", "body": "Сегодня с 02:00 до 03:00 МСК возможны перебои.", "link": "https://myvpn.example/status", "locales": {"en": {"title": "Maintenance", "body": "Tonight 23:00–00:00 UTC service may be interrupted."}}, "target": {"all": true}, "expires_in": 86400}' # обновить подписку на Windows и Linux по расписанию curl -s -X POST https://api.flowlock.cc/v1/provider/messages -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' -d '{ "kind": "command", "action": "update-subscription", "target": {"os": ["windows", "linux"]}, "send_at": "2026-11-01T09:00:00Z"}' ``` Все поля и остальные примеры — в [справочнике API](https://flowlock.cc/docs/api.md#сообщения). --- # Статистика > Сколько устройств пользуется вашими подписками — всего, активные за 30 дней, по системам и по месяцам. Кабинет → «Обзор»: - устройства всего и активные за 30 дней (неактивные = всего − активные), по системам; - по месяцам (до 24): новые устройства и активные, по системам. Кабинет → «Устройства» — список устройств с фильтром по системе и активности: идентификатор, система и её версия, версия FlowLock, когда устройство появилось и когда отмечалось последний раз. ## Что считается устройством Устройство — одна установка FlowLock с вашей подтверждённой подпиской. Приложение отмечается сразу, как у подписки появился ваш ID, а дальше не чаще раза в сутки — после обновления подписки. Идентификатор устройства: - **HWID** — если человек включил «Отправлять HWID» (или подписка требует HWID). Это тот же HWID, что приходит вашей панели в заголовке `x-hwid`. - **Псевдоним** — иначе: постоянный для пары «устройство + ваш кабинет» и ни с чем больше не связанный. Если человек включит или выключит «Отправлять HWID», его устройство появится заново под другим идентификатором, а старая запись уйдёт из активных через 30 дней. ## Чего в статистике нет Устройств, где человек выключил «Сообщать провайдеру о подключении», а также подписок без ID или с неподтверждённого домена. IP-адресов, стран, сайтов и трафика в статистике нет никогда — см. [«Приватность»](https://flowlock.cc/docs/privacy.md). Устройство без отметок удаляется через 180 дней, статистика по месяцам хранится 24 месяца. Устройств в статистике — до 500 000 на кабинет. --- # Ссылки flowlock:// > Команды схемы flowlock:// — подключить, отключить, добавить подписку, импорт, правила маршрутизации, ограниченные ссылки и темы. FlowLock регистрирует в системе схему `flowlock://`. Ссылку можно поставить на сайт, в бота или в ярлык. Браузер сам спрашивает человека, открыть ли программу. ## Команды | Ссылка | Что делает | Подтверждение | | ----------------------------------- | ----------------------------------------------------------------------------- | ------------- | | `flowlock://connect` | подключиться | нет | | `flowlock://disconnect` | отключиться | нет | | `flowlock://toggle` | подключиться или отключиться | нет | | `flowlock://open`, `flowlock://` | показать окно | нет | | `flowlock://quit` | выйти из программы | нет | | `flowlock://add/<адрес>` | добавить подписку по адресу | **да** | | `flowlock://import/` | импорт: подписка, серверы, профиль или правила маршрутизации — по содержимому | **да** | | `flowlock://routing/add/` | добавить правила маршрутизации (профиль Happ) к правилам человека | **да** | | `flowlock://routing/onadd/` | то же и предложить режим «Выборочно», если в профиле `GlobalProxy: false` | **да** | | `flowlock://install/<код>` | подписка по [ограниченной ссылке](https://flowlock.cc/docs/install-links.md) | **да** | | `flowlock://theme/<данные>` | [тема оформления](https://flowlock.cc/docs/user-themes.md), которой поделились | **да** | Схема и команда — без учёта регистра, косые черты после `:` необязательны (`flowlock:connect`). Команды с подтверждением всегда показывают, что именно добавится, и ждут «Добавить» / «Отмена»: ссылку из браузера FlowLock никогда не выполняет молча. Худшее, что может сделать чужая страница командой без подтверждения, — отключить VPN. ## Аргументы - `add/…` — адрес подписки как есть (`flowlock://add/https://sub.example.com/abc`) или процентно закодированный (`flowlock://add/https%3A%2F%2Fsub.example.com%2Fabc`). Только `http://` и `https://`. - `import/…` и `routing/…` — base64 (обычный или URL-safe, `=` в конце необязательны). Внутри `import`: - адрес `http(s)://` — подписка; - ссылки серверов, `.conf` WireGuard/AmneziaWG, `.ovpn` — серверы; - `happ://routing/add|onadd/…` — правила маршрутизации; - профиль FlowLock (JSON) — импорт профиля с выбором разделов. Пример — кнопка «Добавить в FlowLock» на странице подписки: ```html Добавить в FlowLock ``` ## Веб-ссылки Некоторые мессенджеры не делают `flowlock://` кликабельной. Для них есть страницы сайта: - `https://flowlock.cc/i/<код>` — ограниченная ссылка: кнопка «Открыть в FlowLock» и загрузка приложения; - `https://flowlock.cc/theme#<данные>` — тема оформления с предпросмотром; - `https://flowlock.cc/add/#url=<адрес>&name=<имя>` — добавить подписку в аккаунт FlowLock на сайте. --- # User-Agent FlowLock > Какой User-Agent FlowLock отправляет при загрузке подписки, как узнать FlowLock в панели и что происходит, если панель его не принимает. При загрузке подписки FlowLock представляется своим User-Agent: ``` FlowLock/<версия> (<система>; <архитектура>) ``` | Пример | | | ------------------------------- | -------------------- | | `FlowLock/1.2.0 (macOS; arm64)` | macOS, Apple Silicon | | `FlowLock/0.1.0 (Windows; x64)` | Windows | | `FlowLock/0.1.0 (Linux; x64)` | Linux | - Система: `macOS`, `Windows`, `Linux`. Архитектура: `x64`, `arm64`, `x86`. - Версию системы FlowLock не шлёт — это лишний отпечаток. - Служба Windows/Linux, которая обновила подписку сама (сразу после включения компьютера, пока окно ещё не запускалось), может прислать UA без версии: `FlowLock (Windows; x64)`. ## Как узнать FlowLock в панели Ищите в User-Agent начало `FlowLock/` или `FlowLock (`. Например, условие для правила панели — «User-Agent начинается с `FlowLock`». Отдавать FlowLock особый формат не нужно: он понимает base64, ссылки, Xray JSON и sing-box JSON. ## Если панель не принимает User-Agent FlowLock Некоторые панели отвечают неизвестным клиентам страницей HTML или кодом 403/406. Тогда FlowLock один раз повторяет запрос с совместимым User-Agent `v2rayN/7.13.8` и следующие **7 дней** грузит эту подписку сразу с ним, потом снова пробует свой. Повтора нет при 404, 5xx и любом другом ответе: другой User-Agent там не поможет. Лучше научить панель отвечать FlowLock подпиской: так вы увидите в журналах панели, сколько у вас пользователей FlowLock. ## Свой User-Agent - Человек может задать User-Agent для отдельной подписки или для всех — тогда уходит ровно он, без повторов. - Провайдер подтверждённой подписки может задать его параметром `change-user-agent` (см. [«Управление приложением»](https://flowlock.cc/docs/app-management.md)). --- # Справочник API > API кабинета провайдера для панелей и ботов — ключи, домены, ограниченные ссылки, сообщения, устройства и статистика, с примерами curl. Для панелей и ботов: всё, что есть в кабинете, кроме ключей API и удаления кабинета. - Адрес: `https://api.flowlock.cc`. - **Ключ API** — кабинет → «Ключи API» → «Создать ключ». Ключ (`flp_…`) показывается один раз; храните его как пароль. Ключей можно сделать до 10 и отозвать любой. - Ключ передаётся **только в заголовке**: `Authorization: Bearer flp_…`. В адресе ключ не принимается. - Тела и ответы — JSON, даты — RFC 3339 UTC. Ошибка — HTTP-код и `{"error": "…", "code": "…"}`. На `429` — заголовок `Retry-After` (секунды). - Списки — частями: `?cursor=` из `next_cursor` прошлого ответа. - Не больше 120 запросов в минуту. В примерах ключ лежит в переменной окружения: ```sh export FLOWLOCK_KEY='flp_…' ``` ## Провайдер ```sh curl -s https://api.flowlock.cc/v1/provider -H "Authorization: Bearer $FLOWLOCK_KEY" ``` ```json { "id": "k7m2x9q4bd", "name": "Мой VPN", "support_url": "https://t.me/myvpn_support", "email": "help@myvpn.example", "telegram": "myvpn_bot", "status": "active", "created_at": "2026-10-28T12:00:00Z", "limits": { "domains": 50, "…": 0 } } ``` Изменить контакты (пустая строка удаляет поле, кроме `name`): ```sh curl -s -X PATCH https://api.flowlock.cc/v1/provider -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' -d '{"support_url": "https://t.me/myvpn_support", "telegram": "@myvpn_bot"}' ``` Поля: `name` — 1–40 символов; `support_url` — `https://…` или `tg://…`, до 512; `email`; `telegram` — `@имя`, ссылка `t.me` или имя (5–32 символа `A–Z a–z 0–9 _`). ## Домены ```sh # список curl -s https://api.flowlock.cc/v1/provider/domains -H "Authorization: Bearer $FLOWLOCK_KEY" # добавить — в ответе запись и файл для подтверждения curl -s -X POST https://api.flowlock.cc/v1/provider/domains -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' -d '{"domain": "sub.example.com"}' ``` ```json { "id": "d1f2a3b4c5d6e7f8", "domain": "sub.example.com", "hash": "…64 hex…", "status": "pending", "created_at": "…", "dns": { "name": "_flowlock.sub.example.com", "type": "TXT", "value": "flowlock-provider=k7m2x9q4bd" }, "file": { "url": "https://sub.example.com/.well-known/flowlock-provider", "body": "flowlock-provider=k7m2x9q4bd" } } ``` ```sh # проверить сейчас (до 20 раз в час) curl -s -X POST https://api.flowlock.cc/v1/provider/domains/d1f2a3b4c5d6e7f8/verify -H "Authorization: Bearer $FLOWLOCK_KEY" # удалить curl -s -X DELETE https://api.flowlock.cc/v1/provider/domains/d1f2a3b4c5d6e7f8 -H "Authorization: Bearer $FLOWLOCK_KEY" ``` Поля домена: `status` (`pending` | `verified` | `failing` | `lost`), `method` (`dns` | `file` — чем подтвердился), `verified_at`, `checked_at`, `error` — причина последней неудачи: `no_record` (нет записи и файла), `wrong_id` (запись есть, ID другой), `dns_error`, `http_status`, `fetch_error`, `not_public` (домен смотрит на частный адрес). ## Ссылки ```sh # создать ограниченную ссылку на 3 устройства curl -s -X POST https://api.flowlock.cc/v1/provider/installs -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' \ -d '{"url": "https://sub.example.com/abc123", "limit": 3, "note": "user 1042"}' ``` ```json { "id": "i8c7b6a5d4e3f2a1", "code": "a7k2m9x4q8b3n6p5", "link": "flowlock://install/a7k2m9x4q8b3n6p5", "web_link": "https://flowlock.cc/i/a7k2m9x4q8b3n6p5", "url": "https://sub.example.com/abc123", "domain": "sub.example.com", "limit": 3, "count": 0, "hwid": "", "note": "user 1042", "status": "active", "created_at": "…", "expires_at": null } ``` ```sh # HWID-ссылка: лимит 1 и HWID устройства curl -s -X POST https://api.flowlock.cc/v1/provider/installs -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' \ -d '{"url": "https://sub.example.com/abc123", "limit": 1, "hwid": "5f0c…"}' # список; одна ссылка; изменить лимит, заметку, статус (active | disabled), адрес, срок curl -s https://api.flowlock.cc/v1/provider/installs -H "Authorization: Bearer $FLOWLOCK_KEY" curl -s https://api.flowlock.cc/v1/provider/installs/i8c7b6a5d4e3f2a1 -H "Authorization: Bearer $FLOWLOCK_KEY" curl -s -X PATCH https://api.flowlock.cc/v1/provider/installs/i8c7b6a5d4e3f2a1 -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' -d '{"limit": 5}' # устройства ссылки и отвязка одного curl -s https://api.flowlock.cc/v1/provider/installs/i8c7b6a5d4e3f2a1/devices -H "Authorization: Bearer $FLOWLOCK_KEY" curl -s -X DELETE https://api.flowlock.cc/v1/provider/installs/i8c7b6a5d4e3f2a1/devices/5f0c… \ -H "Authorization: Bearer $FLOWLOCK_KEY" # удалить ссылку curl -s -X DELETE https://api.flowlock.cc/v1/provider/installs/i8c7b6a5d4e3f2a1 -H "Authorization: Bearer $FLOWLOCK_KEY" ``` `expires_at` — RFC 3339 в будущем или `null` (бессрочно). Ошибки: адрес не на подтверждённом домене — `422 domain_unverified`; лимит меньше числа устройств — `422 limit_below_count`; с `hwid` лимит может быть только 1 — `400 bad_request`. ## Сообщения ```sh # уведомление всем curl -s -X POST https://api.flowlock.cc/v1/provider/messages -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' -d '{ "kind": "notification", "mode": "optional", "title": "Плановые работы", "body": "Сегодня с 02:00 до 03:00 МСК возможны перебои.", "link": "https://myvpn.example/status", "locales": {"en": {"title": "Maintenance", "body": "Tonight 23:00–00:00 UTC service may be interrupted."}}, "target": {"all": true}, "expires_in": 86400}' ``` ```json { "id": "m3k9q2x7a1b4c5d6", "kind": "notification", "status": "active", "…": "…" } ``` ```sh # команда: обновить подписку на Windows и Linux по расписанию curl -s -X POST https://api.flowlock.cc/v1/provider/messages -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' -d '{ "kind": "command", "action": "update-subscription", "target": {"os": ["windows", "linux"]}, "send_at": "2026-11-01T09:00:00Z"}' # команда: переезд на новый домен (должен быть подтверждён) curl -s -X POST https://api.flowlock.cc/v1/provider/messages -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' -d '{ "kind": "command", "action": "sub-change", "change_type": "domain", "value": "sub2.example.com", "target": {"all": true}}' # команда: новые настройки двум устройствам curl -s -X POST https://api.flowlock.cc/v1/provider/messages -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' -d '{ "kind": "command", "action": "set-settings", "settings": {"ping-type": "tcp", "fragmentation-enable": true}, "target": {"devices": ["5f0c…", "9b1e…"]}}' # команда: предложить импорт (пользователь подтвердит) curl -s -X POST https://api.flowlock.cc/v1/provider/messages -H "Authorization: Bearer $FLOWLOCK_KEY" \ -H 'Content-Type: application/json' -d '{ "kind": "command", "action": "import-data", "data": "https://sub.example.com/abc123", "target": {"devices": ["5f0c…"]}}' # список (с итогами доставки), одно сообщение, отмена curl -s https://api.flowlock.cc/v1/provider/messages -H "Authorization: Bearer $FLOWLOCK_KEY" curl -s https://api.flowlock.cc/v1/provider/messages/m3k9q2x7a1b4c5d6 -H "Authorization: Bearer $FLOWLOCK_KEY" curl -s -X DELETE https://api.flowlock.cc/v1/provider/messages/m3k9q2x7a1b4c5d6 -H "Authorization: Bearer $FLOWLOCK_KEY" ``` Поля сообщения: - `kind` — `notification` | `command`; - уведомление — `title`, `body`, `link`, `locales` (`ru`/`en`), `mode` (`optional` | `force`); - команда — `action` и её поля: `change_type` + `value` (`sub-change`), `data` (`import-data`, до 16 КБ), `settings` (`set-settings`, ключи из [«Настроек приложения»](https://flowlock.cc/docs/app-management.md#настройки-приложения)); - `target` — `{"all": true}`, `{"os": […]}` или `{"devices": […]}`; - `send_at` — необязательно; `expires_in` — секунды от `send_at` (3600…2592000, по умолчанию 604800). В списке: `status` (`scheduled` | `active` | `expired` | `cancelled`) и `counts` — `received`, `shown`, `opened`, `done`, `declined`, `failed`. Ошибки: `400 bad_request` (поле в `field`), `422 domain_unverified`, `422 bad_setting` (ключ в `key`), `429 rate_limited` (антиспам, `retry_after`), `403 suspended`. ## Устройства и статистика ```sh # устройства (для выбора адресатов): фильтр по системе и активным за 30 дней curl -s 'https://api.flowlock.cc/v1/provider/devices?os=windows&active=30d' -H "Authorization: Bearer $FLOWLOCK_KEY" ``` ```json { "devices": [ { "device": "5f0c…", "device_kind": "hwid", "os": "windows", "os_version": "10.0.26200", "app": "0.4.0", "first_seen": "…", "last_seen": "…" } ], "next_cursor": "…" } ``` `device_kind`: `hwid` — HWID устройства (тот же, что приходит вашей панели в `x-hwid`); `alias` — псевдоним, если пользователь не отправляет HWID. Подробнее — на странице [«Статистика»](https://flowlock.cc/docs/stats.md). ```sh curl -s https://api.flowlock.cc/v1/provider/stats -H "Authorization: Bearer $FLOWLOCK_KEY" ``` ```json { "devices": { "total": 1520, "active_30d": 1204, "by_os": { "windows": { "total": 900, "active_30d": 700 }, "macos": { "total": 420, "active_30d": 350 }, "linux": { "total": 200, "active_30d": 154 } } }, "months": [ { "month": "2026-10", "new": { "windows": 120, "macos": 40 }, "active": { "windows": 700, "macos": 350 } } ] } ``` ## Справка для форм `GET /v1/provider/settings-keys` — ключи «Настроек приложения» с типами (`bool`, `int`, `string`, `enum` + `values`), областью (`app` — всё приложение, `subscription` — эта подписка) и платформами. ## Коды ошибок | code | HTTP | что значит | | --------------------- | ---- | --------------------------------------------------------------------------------- | | `unauthorized` | 401 | нет ключа, ключ неверный или отозван | | `not_provider` | 404 | у аккаунта не включён кабинет | | `feature_disabled` | 403 | кабинеты провайдеров временно выключены на сервере | | `suspended` | 403 | кабинет приостановлен: рассылки и новые ссылки запрещены | | `bad_request` | 400 | тело не по форме (`field` — какое поле) | | `bad_domain` | 400 | не домен (IP, без точки, недопустимые символы) | | `conflict` | 409 | уже есть | | `not_found` | 404 | нет такого | | `domain_unverified` | 422 | адрес не на вашем подтверждённом домене | | `bad_setting` | 422 | ключа нет в списке настроек или значение не подходит (`key`) | | `limit_below_count` | 422 | лимит ссылки меньше числа её устройств | | `limit` | 422 | потолок: доменов, ссылок, ключей, сообщений (`upgrade: true` — снимает «Анлимит») | | `billing_off` | 503 | оплата «Анлимита» на сервере выключена | | `prepaid_max` | 409 | «Анлимит» уже оплачен на 12 месяцев вперёд | | `payment_unavailable` | 502 | касса не ответила, повторить позже | | `rate_limited` | 429 | слишком часто, повторить через `retry_after` | ## Лимиты | Что | Сколько | | --------------------------- | ----------------------------------- | | ключей API | 10 | | доменов | 50 | | ограниченных ссылок | 5000 | | лимит одной ссылки | 1000 устройств | | устройств в статистике | 500 000 | | рассылок всем / по системам | 2 в сутки, не чаще раза в 5 минут | | выборочных сообщений | 200 в час, до 20 устройств в каждом | | ждущих сообщений | 500 | | запросов API | 120 в минуту | | ручных проверок доменов | 20 в час | Нужно больше — [«Анлимит»](https://flowlock.cc/docs/limits.md) или поддержка FlowLock. --- # Лимиты и «Анлимит» > Сколько доменов, ссылок, устройств и рассылок даёт бесплатный кабинет, что снимает «Анлимит» за 1000 ₽ в месяц и как его оплатить и продлить. Кабинет провайдера бесплатный, с лимитами. **«Анлимит»** снимает их: **1000 ₽ за 30 дней**. ## Лимиты | Что | Бесплатно | С «Анлимитом» | | --------------------------- | ----------------------------------- | -------------------------------------- | | доменов | 50 | 1000 | | ограниченных ссылок | 5000 | 100 000 | | лимит одной ссылки | 1000 устройств | 100 000 устройств | | устройств в статистике | 500 000 | 5 000 000 | | рассылок всем / по системам | 2 в сутки, не чаще раза в 5 минут | 4 в сутки, не чаще раза в минуту | | выборочных сообщений | 200 в час, до 20 устройств в каждом | 2000 в час, до 1000 устройств в каждом | | ждущих сообщений | 500 | 5000 | | запросов API | 120 в минуту | 600 в минуту | | ключей API | 10 | 10 | | ручных проверок доменов | 20 в час | 20 в час | С «Анлимитом» тоже есть пределы — защита от злоупотреблений, на порядок выше бесплатных. Действующие лимиты кабинет показывает в разделе «Анлимит». ## Как оплатить 1. Кабинет → «Анлимит» → «Купить за 1000 ₽ в месяц». 2. Откроется страница оплаты anore: СБП, карта, ЮMoney или криптовалюта. Счёт действует 4 часа. 3. После оплаты вы вернётесь в кабинет и увидите «Анлимит до …». Обычно оплата приходит за несколько секунд. Если кабинет ещё пишет «Ждём оплату», зайдите позже: платёж не потеряется. Платить можно только в кабинете на сайте, войдя в аккаунт. Ключом API можно смотреть срок и историю платежей, но не платить. ## Продление - **Это не подписка**: деньги сами не списываются. - Продлить можно в любой момент тем же платежом: 30 дней прибавляются к текущему сроку. Например, оплата за 5 дней до конца продлит срок до 35 дней от сегодняшнего. - Наперёд можно оплатить не больше чем на 12 месяцев. - За 3 дня до конца срока придёт письмо на почту аккаунта, а в кабинете появится плашка «продлите». ## Когда срок кончился Ничего не удаляется и не выключается: домены, ссылки (с их лимитами устройств) и сообщения работают как прежде. Но сверх бесплатных лимитов ничего нового создать нельзя. API в этом случае отвечает ошибкой `limit` или `rate_limited` с `"upgrade": true`, а кабинет предлагает продлить. ## Ещё - Срок привязан к аккаунту, а не к кабинету: если удалить кабинет и включить снова, оплаченные дни останутся. При удалении аккаунта они пропадают. - Возврат денег — через поддержку FlowLock, вручную. - История платежей — в кабинете, раздел «Анлимит». ## В API ```sh # срок, цена, лимиты и счёт, который ещё ждёт оплаты curl -s https://api.flowlock.cc/v1/provider/billing -H "Authorization: Bearer $FLOWLOCK_KEY" # история платежей (новые сверху, частями по 50) curl -s https://api.flowlock.cc/v1/provider/billing/payments -H "Authorization: Bearer $FLOWLOCK_KEY" ``` ```json { "available": true, "price_rub": 1000, "days": 30, "plan": { "name": "unlimited", "active": true, "paid_until": "2026-12-01T10:00:00Z", "days_left": 34, "renew_soon": false, "can_pay": true }, "pending": null, "limits": { "free": { "domains": 50, "…": 0 }, "unlimited": { "domains": 1000, "…": 0 } } } ``` `plan` есть и в ответе `GET /v1/provider`, а `limits` там — действующие сейчас. Ошибки: `503 billing_off` (оплата на сервере выключена), `409 prepaid_max` (оплачено на 12 месяцев вперёд), `502 payment_unavailable` (касса не ответила). --- # Приватность: что видит провайдер > Какие данные о пользователях видит провайдер в кабинете, чего не видит никто, сколько всё хранится и как пользователь выключает отметки. ## Провайдер видит - идентификатор устройства: HWID — только если пользователь включил «Отправлять HWID» или подписка требует HWID; иначе псевдоним, постоянный для пары «устройство + ваш кабинет» и ни с чем больше не связанный; - систему и её версию, версию FlowLock; - когда устройство появилось и когда отмечалось последний раз; - какие [ограниченные ссылки](https://flowlock.cc/docs/install-links.md) оно получило; - что стало с [сообщениями](https://flowlock.cc/docs/messages.md): получено, показано, открыто, выполнено, отклонено. ## Провайдер не видит (и никто не видит) IP пользователя, страну, сайты, трафик, журналы, его аккаунт FlowLock и почту, другие подписки, настройки. ## FlowLock видит То же, что провайдер, плюс хеш домена подписки. IP — только в памяти сервера, для защиты от частых запросов; в базу он не пишется. Домены подписок, которых нет ни в одном кабинете, сервер не узнаёт: приложения шлют только хеш. ## Пользователь решает В настройках FlowLock есть «Сообщать провайдеру о подключении» (по умолчанию включено). Выключено — устройство не попадает в статистику и не получает сообщений, а подписка работает как обычная: без контактов, инфоблока и настроек от провайдера. Настройки, которые меняет провайдер, видны с пометкой «Задано провайдером» и кнопкой «Вернуть моё». Импорт данных всегда ждёт подтверждения человека. ## Сроки - Устройство без отметок удаляется через 180 дней. - Статистика по месяцам хранится 24 месяца. - Сообщения и итоги доставки — 30 дней после окончания срока сообщения. - Удаление кабинета (или аккаунта) удаляет всё сразу. --- # Установка > Как поставить FlowLock на macOS, Windows и Linux, что делать с предупреждением «разработчик не подтверждён» и как приходят обновления. FlowLock — бесплатный клиент для подписки, которую вы купили у VPN-провайдера. Скачать его можно на странице [«Загрузки»](https://flowlock.cc/download/): сайт сам предложит файл для вашей системы. ## macOS Нужна macOS 14 или новее; одна сборка работает на Apple Silicon и Intel. 1. Откройте DMG и перетащите FlowLock в «Программы». 2. FlowLock подписан без сертификата Apple, поэтому при первом запуске macOS его остановит. Откройте «Системные настройки» → «Конфиденциальность и безопасность» и нажмите «Всё равно открыть». Тот же результат одной командой в Терминале: ```sh xattr -dr com.apple.quarantine /Applications/FlowLock.app ``` Для режима TUN FlowLock один раз попросит пароль администратора: он ставит небольшой помощник, который запускает сетевой адаптер. ## Windows Два файла на выбор: - **Установщик** `…-Windows-x64-setup.exe` — программа в Program Files и служба «FlowLock VPN», с которой режим TUN работает без лишних вопросов. Настройки и подписки при удалении остаются. - **Портативная версия** `…-Windows-x64-portable.exe` — один файл без установки. В режиме системного прокси права администратора не нужны; при выборе TUN FlowLock перезапустится с правами администратора, и Windows спросит разрешение. Сборки не подписаны сертификатом Microsoft, поэтому SmartScreen может предупредить: «Подробнее» → «Выполнить в любом случае». ## Linux Нужен Linux x64 с glibc 2.35 или новее (Ubuntu 22.04, Debian 12, Fedora 36, Mint 21 и новее) и рабочий стол на X11 или Wayland. **Установщик** — программа в `/opt/flowlock`, пункт в меню и служба systemd: ```sh sudo sh FlowLock-*-Linux-x64-setup.run ``` Удаление — `sudo /opt/flowlock/uninstall.sh` (с `--purge` удаляются и настройки). **Портативная версия** — один файл: ```sh chmod +x FlowLock-*-Linux-x64-portable && ./FlowLock-*-Linux-x64-portable ``` При выборе TUN система спросит пароль администратора, и с правами перезапустится только ядро. Значок в трее работает в KDE, Cinnamon, Xfce, MATE, Budgie; в GNOME нужно расширение AppIndicator (в Ubuntu оно включено). ## Обновления FlowLock обновляется сам: проверяет новые версии после запуска и раз в несколько часов и предлагает «Обновить и перезапустить». Перед установкой он проверяет подпись и контрольную сумму файла. Каналы — стабильный, бета и nightly; что нового в каждой сборке, видно на странице [«Версии»](https://flowlock.cc/releases/). Дальше — [добавьте подписку](https://flowlock.cc/docs/subscriptions.md). --- # Подписки > Как добавить подписку провайдера в FlowLock, что показывает карточка подписки, HWID и подписки по ограниченным ссылкам. Подписка — ссылка, которую вам дал VPN-провайдер (обычно `https://…` из личного кабинета или бота). FlowLock сам скачивает из неё серверы, правила маршрутизации, трафик и срок. ## Добавить подписку - Скопируйте ссылку и вставьте её в FlowLock: кнопка добавления в разделе подписок или «Добавить из буфера» в меню трея / строки меню. - Или откройте ссылку `flowlock://add/…`, если провайдер поставил кнопку «Добавить в FlowLock», — приложение спросит подтверждение. - Или ограниченную ссылку провайдера `https://flowlock.cc/i/…` — страница откроет FlowLock. Понимаются подписки Remnawave, Marzban, 3x-ui и совместимых панелей: base64 и списки ссылок, Xray JSON, sing-box JSON. Отдельные серверы (`vless://`, `hysteria2://`, `trojan://`, `ss://`, `vmess://`, WireGuard и AmneziaWG `.conf`, OpenVPN `.ovpn`) можно добавить так же — они попадут в «Мои серверы». ## Что показывает подписка - имя, трафик и срок — если панель их сообщает («безлимит», «истекла»); - кнопки «Поддержка» и «Страница подписки», объявление провайдера; - у подтверждённых провайдеров — их контакты, инфоблок и напоминание о продлении. Подписки обновляются сами (как часто — подсказывает панель) и загружаются напрямую, мимо VPN: многие панели не отвечают на адреса VPN-серверов. ## HWID Многие панели ограничивают число устройств по HWID. FlowLock отправляет его в заголовках `x-hwid`, `x-device-os`, `x-ver-os`, `x-device-model`, пока включено «Отправлять HWID»; для отдельной подписки HWID можно задать вручную. Если провайдер требует HWID всегда, FlowLock так и пишет: «так требует провайдер». ## Подписка по ограниченной ссылке Провайдер может выдать ссылку на подписку с лимитом устройств. Такую подписку FlowLock добавляет, но её адрес не показывает: его нельзя скопировать или отправить другу. На своё второе устройство добавьте ту же ссылку — оно займёт ещё одно место. ## Уведомления провайдера Провайдер подтверждённой подписки может прислать уведомление (например о плановых работах) или попросить приложение обновить подписку. Предложения импорта всегда ждут вашего «Добавить», а настройки, которые поменял провайдер, помечены «Задано провайдером» с кнопкой «Вернуть моё». Всё это выключается настройкой «Сообщать провайдеру о подключении». --- # Маршруты и свои базы > Режимы маршрутизации, свои правила «через VPN / напрямую / блокировать», правила подписки, отдельные серверы для сайтов и свои базы geosite и geoip. ## Режимы - **Всё через VPN.** - **Российские сайты напрямую** — `.ru`, `.su`, `.рф` и российские адреса идут мимо VPN. - **Выборочно** — через VPN только то, что попало в правила; остальное напрямую. ## Свои правила В редакторе маршрутов каждое правило — сайт, ссылка, IP-адрес или подсеть, категория `geosite:` / `geoip:`, а также `full:` (точное имя), `keyword:` (часть имени) и `regexp:`. Для каждого выбирается действие: через VPN, напрямую или блокировать. ``` youtube.com geosite:telegram 1.2.3.0/24 full:api.example.com keyword:openai ``` Популярные сервисы (YouTube, Telegram, ChatGPT…) и «Заблокированное в России» добавляются из готовых наборов, много правил можно вставить текстом. Есть «Блокировать рекламу и трекеры». ## Правила подписки Провайдер может прислать свои правила (профиль Happ, Xray или sing-box JSON). Они работают вместе с вашими, ваши важнее. При обновлении подписки меняются только правила подписки, ваши остаются. Любое правило подписки можно отключить галочкой. ## Отдельный сервер для сайта Сайты и программы можно направить через выбранный сервер или группу серверов — например, YouTube через Польшу, а ChatGPT через лучший по пингу сервер Нидерландов. Сервер может быть и из другой подписки. ## Свои базы geosite и geoip Категории `geosite:` и `geoip:` по умолчанию берутся из баз SagerNet, а те, которых там нет (`ru-blocked` и другие), — из runetfreedom. В маршрутах («Базы geoip и geosite») можно подключить свои — отдельно для сайтов и для IP: - файл `.dat` Xray/v2ray **по ссылке** (например, из релизов runetfreedom, Loyalsoldier или v2fly); - такой же файл **с диска**; - набор `.srs` по шаблону ссылки с `{name}`: `https://…/geosite-{name}.srs`. Своя база стоит первой: чего в ней нет, берётся из стандартных. Атрибуты — как в Xray: `geosite:google@cn`, `geosite:google@!cn`. Ссылка на базу синхронизируется между вашими устройствами, а файл с диска — нет: на другом устройстве его нужно выбрать ещё раз. ## DNS DNS через DoH, отдельный DNS для прямых соединений, выбор IPv4/IPv6 — в настройках. --- # Программы и торренты > Как пустить программу целиком через VPN, напрямую или через выбранный сервер, и как включить «Торренты напрямую». ## Программы В разделе «Программы» (на macOS — «Настройки» → «Маршруты» → «Программы») программа целиком идёт: - через VPN; - напрямую; - блокируется; - или через выбранный сервер. Программу выбирают из запущенных или из списка установленных. На macOS правило ловит и помощников программы (например, «Google Chrome Helper»). «Остальное — напрямую» включает выборочный режим: через VPN идут только отмеченные программы. > **В режиме системного прокси** правило видит только программы, которые сами идут через прокси. Чтобы правила > работали для всех программ, включите [TUN](https://flowlock.cc/docs/modes.md). ## Торренты напрямую «Торренты напрямую» (по умолчанию выключено): распознанный BitTorrent и известные торрент-клиенты (qBittorrent, Transmission, µTorrent и другие) идут мимо VPN. Это быстрее и не нагружает сервер, но трекеры и пиры видят ваш настоящий адрес. ## Порядок правил Сначала проверяются торренты (если включены), затем программы и правила через другие серверы, затем ваши правила, затем правила подписки. --- # Темы и обмен ими > Своя тема оформления FlowLock — цвета светлой и тёмной стороны, как поделиться ей ссылкой, QR-кодом или файлом и как принять чужую. В «Оформлении» можно сделать **свою тему**: пять цветов (акцент, фон, карточки, текст, второстепенный текст) — каждый для светлой и для тёмной стороны — и имя до 40 символов. Тем может быть несколько. ## Читаемость FlowLock проверяет контраст тем же правилом, что и у тем провайдеров: текст — не меньше 4.5:1 к фону, акцент и второстепенный текст — не меньше 3:1. Если цвет пришлось поправить, редактор так и пишет: «Тема поправлена для читаемости» — и показывает итоговые цвета. ## Поделиться У темы есть ссылка, QR-код и файл `.flowlocktheme`: ``` flowlock://theme/AR8fek1Mw4r09_UOFBH___8XIBsQIxrm7-lba2KTo5rQm9C10YE https://flowlock.cc/theme#AR8fek1Mw4r09_UOFBH___8XIBsQIxrm7-lba2KTo5rQm9C10YE ``` Обе ссылки несут одно и то же. Цвета и имя записаны в самой ссылке, сервер FlowLock их не видит: у веб-ссылки они после `#`, а эту часть браузер не отправляет. Веб-ссылка кликабельна в мессенджерах: страница сайта покажет предпросмотр и кнопку «Открыть в FlowLock». ## Принять тему Откройте ссылку, файл или вставьте ссылку в «Оформлении». FlowLock покажет предпросмотр и спросит подтверждение. Тема из более новой версии FlowLock не откроется, пока вы не обновите приложение. ## Какая тема действует Своя тема важнее темы провайдера (если вы её приняли), тема провайдера важнее стандартной. Режим — системная, светлая или тёмная — выбираете вы. Список своих тем и выбранная тема синхронизируются через [аккаунт](https://flowlock.cc/docs/account.md). --- # Аккаунт и синхронизация > Зачем нужен аккаунт FlowLock, как работают синхронизация, вход по коду, шифрование, общие подписки и статистика трафика. Аккаунт необязателен: без него FlowLock работает как обычно. С ним — синхронизация между устройствами, вход на новом устройстве по коду и общие подписки. ## Вход - Почта и пароль. Пароль на сервер не уходит: из него в приложении считаются ключи. - **По коду с другого устройства**: на новом устройстве FlowLock покажет код и QR, на устройстве, где вы уже вошли, откройте «Аккаунт» → «Подключить устройство» и введите код. Пароль на новом устройстве не нужен. - Список устройств, «Отвязать», смена и сброс пароля по коду из письма — в приложении и на [сайте](https://flowlock.cc/account/). ## Шифрование - **Обычное** — ключ хранилища на сервере, обёрнутый ключом сервера. Сайт показывает и правит ваши подписки, сброс пароля ничего не теряет. - **Сквозное** — ключ из пароля, у сервера только шифротекст. При включении показывается код восстановления: без него забытый пароль означает потерю синхронизированных данных. ## Синхронизация Подписки, свои серверы, правила и настройки едут между вашими устройствами. Изменения приходят примерно за минуту, пока FlowLock запущен. Синхронизацию можно вести и через папку (например, в облачном диске) — вместе с аккаунтом или без него. Профиль также можно выгрузить файлом и загрузить на другом компьютере. Подписку можно добавить и на сайте, в разделе [«Подписки»](https://flowlock.cc/account/): первое запущенное устройство заберёт её и добавит. ## Общие подписки Владелец подписки может поделиться ею с друзьями, не отдавая ссылку: подписку скачивает сервер FlowLock, а друг получает только серверы, запечатанные ключом своего аккаунта. У друга они помечены «общая подписка от …», без ссылок, адресов и экспорта. Владелец рассылает одноразовые приглашения, видит друзей и может отозвать доступ. ## Статистика трафика По желанию (по умолчанию выключено) FlowLock отправляет в аккаунт дневные итоги: время подключения и трафик по устройствам и серверам — только числа. Выключили — статистика на сервере удаляется. Синхронизация и общие подписки включаются на сервере постепенно; если в приложении их не видно, значит функция для вас пока не включена. --- # TUN, системный прокси и kill switch > Чем отличаются режимы TUN и системного прокси, зачем права администратора, как работает kill switch и переключение серверов на лету. ## Два режима - **TUN** (по умолчанию) — FlowLock создаёт сетевой адаптер, и через VPN идёт весь трафик системы: браузеры, игры, терминал, программы, которые не умеют прокси. Нужны права администратора: на macOS — один раз для помощника, на Windows — служба из установщика или перезапуск портативной версии от имени администратора, на Linux — служба или пароль через `pkexec`. - **Системный прокси** — FlowLock прописывает себя прокси в настройках системы. Права администратора не нужны, но через VPN идут только программы, которые слушаются системного прокси. Консольные программы на Linux, которые читают только `http_proxy`, его не видят. Порт локального прокси виден в настройках: туда можно направить программу вручную. Прокси можно раздать в локальную сеть — с логином и паролем. ## Kill switch Если ядро упало, FlowLock сначала пробует переподключиться (до 3 раз за 2 минуты). В режиме системного прокси kill switch держит прокси на упавшем ядре: трафик блокируется, а не идёт мимо VPN. Снять блокировку можно кнопкой «Снять блокировку» (в окне или в меню трея); при выходе из FlowLock она снимается сама. ## Переключение на лету Сервер можно сменить без переподключения: открытые соединения сразу переезжают на новый сервер. Режим «Авто — лучший пинг» сам выбирает самый быстрый сервер. ## Пинг Пинг бывает через сервер (HTTP — запрос через сам сервер), TCP или ICMP. TCP и ICMP идут к серверу напрямую, мимо VPN, поэтому показывают задержку до сервера, а не через туннель. --- # Частые вопросы > Ответы на частые вопросы о FlowLock — откуда серверы, почему macOS не даёт открыть программу, что делать, если подписка не загружается. ## FlowLock продаёт VPN? Нет. FlowLock — клиент для подписки, которую вы купили у VPN-провайдера. Своих серверов у FlowLock нет. ## macOS пишет, что FlowLock нельзя открыть FlowLock подписан без сертификата Apple. Откройте «Системные настройки» → «Конфиденциальность и безопасность» → «Всё равно открыть» или выполните `xattr -dr com.apple.quarantine /Applications/FlowLock.app` (см. [«Установка»](https://flowlock.cc/docs/install.md)). ## Подписка не загружается - Проверьте ссылку: откройте её в браузере — должен скачаться текст или JSON. - Некоторые панели не отвечают незнакомым клиентам. FlowLock в этом случае сам повторяет запрос с User-Agent v2rayN; если не помогло, задайте User-Agent подписки вручную (его подскажет провайдер). - Панель ограничивает число устройств по HWID — освободите место в кабинете провайдера. ## «Администратор подписки ограничил число устройств» Подписка добавлена по ограниченной ссылке, и все места заняты. Обратитесь в поддержку провайдера — его контакты показаны в том же окне. ## Подключено, но сайты не открываются - Попробуйте другой сервер: переключение работает на лету. - В режиме системного прокси не все программы его слушаются — включите TUN. - Проверьте свои правила: возможно, сайт попал в «напрямую» или «блокировать». ## Что FlowLock знает обо мне? Без аккаунта и без подписок с ID провайдера приложение обращается к серверу FlowLock только за обновлениями. Подтверждённый провайдер видит идентификатор устройства, систему и версию FlowLock — но не ваш IP, сайты или трафик (см. [«Приватность»](https://flowlock.cc/docs/privacy.md)). Отметки для провайдера выключаются настройкой «Сообщать провайдеру о подключении». Диагностика и статистика трафика — только если вы их включили. ## Где задать вопрос? В Telegram: [@FlowLock_bot](https://t.me/FlowLock_bot) — поддержка, [@flowlock](https://t.me/flowlock) — новости, [FlowLock InDev](https://t.me/FlowLockDev) — каждая новая сборка.