Продвинутая панель Xray — AmneziaWG (ядро + родной, до 3.1), импорт существующего AWG, туннельные сайдкары и sidecar outbounds (NaiveProxy · olcRTC · qWDTT · CSQTT · mieru · TrustTunnel · AnyTLS · Telegram WEB proxy), подписки Clash / Amnezia
vpn:/// Happ, RoscomVPN geo + Happ routing.
English | Русский | فارسی | العربية | 中文 | Español | Türkçe
Warning
Только для личного, некоммерческого, научного, исследовательского и образовательного использования. Коммерческое использование — включая перепродажу VPN или платные панели — требует явного письменного разрешения по лицензии PolyForm Noncommercial 1.0.0.
Установка одной командой на Linux (Ubuntu / Debian / CentOS / AlmaLinux / Arch и др.):
bash <(curl -fL https://raw.githubusercontent.com/AlexeyLCP/lucx-ui/main/install.sh)Если GitHub недоступен — те же файлы можно взять с Яндекса (SourceCraft). Токены и git не нужны: панель, geo-файлы и скрипты скачиваются одним архивом:
mkdir -p /tmp/lucx-dist && curl -fsSL https://codeload.sourcecraft.tech/alexeylcp/lucx-ui/tarball/refs/heads/dist | tar -xz --strip-components=1 -C /tmp/lucx-dist && sudo bash /tmp/lucx-dist/install.sh --yandexДальше x-ui update качает обновления оттуда же (источник записывается в /etc/x-ui/install-source).
🛠️ Дополнительные варианты установки (Cloud-Init, Docker, PostgreSQL, Env Vars)
XUI_NONINTERACTIVE=1 bash <(curl -fL https://raw.githubusercontent.com/AlexeyLCP/lucx-ui/main/install.sh)Учётные данные сохраняются в /etc/x-ui/install-result.env.
Образы собираются на каждый релизный тег (ghcr.io/alexeylcp/lucx-ui):
docker run -d \
--name lucx-ui \
--restart unless-stopped \
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
-p 2053:2053 \
-v $PWD/db/:/etc/x-ui/ \
ghcr.io/alexeylcp/lucx-ui:latestИли docker compose up -d — образ тот же; docker compose build собирает локально.
С PostgreSQL: раскомментируйте XUI_DB_* в docker-compose.yml и запустите:
docker compose --profile postgres up -d| Переменная | Описание | По умолчанию |
|---|---|---|
XUI_DB_TYPE |
Бэкенд БД (sqlite или postgres) |
sqlite |
XUI_DB_DSN |
DSN для PostgreSQL | — |
XUI_ENABLE_FAIL2BAN |
Включить Fail2ban для принудительного лимита IP | true |
XUI_LOG_LEVEL |
Уровень логирования (debug, info, notice, warning, error) |
info |
3x-ui — отличная мультипротокольная панель с современным фронтендом (React 19 + Ant Design 6). LucX-UI сохраняет всё, что есть в 3x-ui, и добавляет то, чего апстриму не хватает: kernel AmneziaWG (рядом с родным amneziawg из апстрима), импорт существующего AWG, туннельные сайдкары (NaiveProxy · olcRTC · qWDTT · CSQTT · mieru · TrustTunnel · AnyTLS · Telegram WEB proxy), расширенные подписки (Clash Meta AWG, Amnezia vpn://, Happ) и пакеты RoscomVPN geo / профили Happ (geodata browser при этом уже есть в апстриме — PR #6165, v3.7.0):
Сравнение с 3x-ui
| Возможность | 3x-ui | LucX-UI |
|---|---|---|
AmneziaWG inbound (kernel sidecar через awg-quick) |
✗ | ✓ |
Родной AmneziaWG inbound (amneziawg, userspace) |
✓ | ✓ |
| Импорт существующего AWG (awg-multi / toolza3 / Docker) | ✗ | ✓ |
| Kernel AWG без модуля → встроенный amneziawg-go | ✗ | ✓ |
| Живая скорость AWG-клиентов и инбаундов в панели | ✗ | ✓ |
| AWG CPS обфускация (TLS / DNS / SIP / QUIC + отпечатки браузеров) | ✗ | ✓ |
AWG outbound — VPN chaining к upstream AWG-серверам (awgo-N) |
✗ | ✓ |
| AWG3 / HeaderProtectionKey | ✗ | ✓ |
AWG 3.1 (RandomTrailers / DisableCookies, анти-DPI) |
✗ | ✓ |
| Пресеты версий клиентских конфигов (1.5 / 2 / 3 / 3.1) | ✗ | ✓ |
| Диагностика AWG из панели (routing / NAT / peers / handshakes) | ✗ | ✓ |
AWG в Clash Meta + подписка Amnezia /awg/ (.conf / vpn://) |
✗ | ✓ |
| Туннельный сайдкар NaiveProxy (Caddy + forward_proxy, под надзором панели) | ✗ | ✓ |
Per-client креды NaiveProxy + naive+https:// в подписках |
✗ | ✓ |
| NaiveProxy → Xray routing (SOCKS loopback-мост, опционально) | ✗ | ✓ |
| Туннельный сайдкар olcRTC (WebRTC через meet-комнаты, под надзором) | ✗ | ✓ |
| Туннельный сайдкар qWDTT (WireGuard через VK TURN, под надзором) | ✗ | ✓ |
| Туннельный сайдкар CSQTT (TURN/RTP, под надзором; не qWDTT) | ✗ | ✓ |
Туннельный сайдкар mieru (mita, per-client трафик, под надзором) |
✗ | ✓ |
| Туннельный сайдкар AnyTLS (anytls-go, TLS-прокси) | ✗ | ✓ |
| Сайдкар TrustTunnel (протокол AdGuard VPN, похож на HTTPS, под надзором) | ✗ | ✓ |
| Sidecar outbounds (клиент Naive / mieru / TrustTunnel → SOCKS, routing и пулы) | ✗ | ✓ |
| Geodata browser — выбор категорий geosite/geoip из панели | ✓ | ✓ |
Пакет RoscomVPN geo (geoip/geosite_ROSCOM.dat, списки РКН) |
✗ | ✓ |
| Профили маршрутизации Happ (RoscomVPN deeplink + custom) | ✗ | ✓ |
| Outbound-ссылки Smart Cluster (генератор outbound-конфигов из inbound) | ✗ | ✓ |
| React 19 + AntD 6 + Vite 8 + Zod 4 фронтенд | ✓ | ✓ (inherited) |
| Все протоколы Xray (VLESS / VMess / Trojan / Shadowsocks / ...) | ✓ | ✓ |
Telegram WEB proxy inbound (tproxy, t.me/webproxy) |
✗ | ✓ |
| Бесшовный upstream sync (изоляция LUCX-HOOK) | — | ✓ |
Kernel sidecar (так же, как MTProto mtg в 3x-ui) означает, что AWG работает как настоящий интерфейс ядра, а не userspace-обёртка: Xray маршрутизирует расшифрованный трафик через собственный TUN inbound, поэтому на AWG-трафике работают все возможности Xray — роутинг, sniffing, доменные правила. Если модуль собрать не удалось, тот же LucX-inbound awg поднимается на встроенном amneziawg-go. Родный протокол апстрима amneziawg остаётся в панели рядом.
LucX-UI — расширенный форк 3x-ui (сейчас синхронизирован с upstream v3.8.5). К штатным протоколам Xray добавляются: AmneziaWG в двух режимах — kernel sidecar awg (как MTProto/mtg) и родной amneziawg апстрима — вплоть до AWG 3.1; импорт awg-multi / toolza3 / Docker; туннельные сайдкары под надзором панели (NaiveProxy, olcRTC, qWDTT, CSQTT, mieru, TrustTunnel, AnyTLS); расширенные подписки (Clash Meta AWG, Amnezia /awg/ + vpn://, Happ routing); Telegram WEB proxy (tproxy) и пакет RoscomVPN geo (браузер категорий — общий с апстримом начиная с v3.7.0). 100% совместимость с upstream обеспечивает строгая изоляция LUCX-HOOK.
🛡️ Возможности AmneziaWG (AWG)
- AWG Inbounds & Outbounds — kernel sidecar (
awg-quick), клиентский режим dial-out к upstream AWG-серверам (awgo-{id}), автоматический reconcile каждые 10 секунд и встроенный сборщик DKMS kernel-модуля. - Два движка — в панели доступны и kernel-режим
AmneziaWG (ядро)(awg-quick, если модуль установлен), и роднойamneziawgиз апстрима. Если модуля нет, LucX-inboundawgработает через встроенный amneziawg-go (SOCKS в Xray); с модулем — через ядро, без смены настроек. - Импорт существующего AWG — на Inbounds появляется баннер импорта: awg-multi / toolza3 / Docker Amnezia. Ключи, IP, порт и обфускация переносятся как есть; kernel-интерфейс переименовывается на месте, handshake при этом не падает.
- Живая скорость — колонки скорости AWG-клиентов и инбаундов на страницах Clients / Inbounds (Xray-статистика AWG не видит).
- Продвинутая обфускация — пресеты Lite / Standard / Pro / Premium (Jc/Jmin/Jmax/S1–S4/H1–H4, у Premium ещё и размеры TLS 1.3 handshake + HPK), мимикрия CPS-пакетов (TLS, DNS, SIP, QUIC) и TLS-отпечатки браузеров (Chrome, Firefox, Safari).
- AWG3 / HeaderProtectionKey — защита заголовков AmneziaWG 3 с автоматически генерируемыми 32-байтовыми ключами; максимальная версия протокола, заданная на сервере, определяет, какие фичи пишутся в клиентские конфиги.
- AWG 3.1 —
RandomTrailers(случайный хвост пакета, ломает DPI-классификацию по размерам) иDisableCookies; kernel-модуль и утилиты автоматически обновляются до v3.1 вместе с панелью. - Пресеты версий клиентов — генерация клиентских конфигов AWG 1.5 / 2 / 3 / 3.1 из одного inbound: выберите формат, который понимает ваше клиентское приложение.
- Live Signature Capture — обфускационные параметры I1–I5 собираются из реальных QUIC-handshake'ов с front-доменов.
- Маршрутизация и диагностика — два режима маршрутизации (Kernel NAT и Route through Xray с policy routing и sniffing) плюс диагностика AWG одним кликом из панели.
🚇 Туннельные сайдкары (NaiveProxy, olcRTC, qWDTT, CSQTT, mieru, TrustTunnel, AnyTLS, Telegram WEB proxy)
- NaiveProxy — Caddy с плагином
forward_proxy(форк klzgrad, HTTP/2- и HTTP/3-padding) работает как сайдкар под присмотром панели: панель сама рендерит Caddyfile, управляет start/stop/restart с автоматическим перезапуском при падении и трёхуровневой проверкой здоровья (процесс → TCP → TLS). - Per-client креды — каждый включённый клиент панели автоматически получает личную пару
basic_auth(она выводится из секрета панели и нигде не хранится); если клиента выключить, креды отзываются на следующем reconcile. - Подписки — в подписке каждого клиента рядом с Xray/AWG появляется его личная ссылка
naive+https://(стандарт NekoBox / husi / Exclave); в панели есть QR-код и генератор сильного пароля. - UX панели — Auto TLS (Let's Encrypt) или свой cert/key, raw-режим Caddyfile с проверкой через
caddy adapt, предпросмотр Caddyfile, логи процесса, загрузка/скачивание бинарника. - Маршрут через Xray (опционально) — Caddy может ходить к назначениям через скрытый loopback SOCKS-мост (
upstream socks5://127.0.0.1:…в нативном forward_proxy, без патчей бинарника) с тегомlucx-tunnel-naive: трафик NaiveProxy получает полный роутинг / sniffing / доменные правила Xray (как MTProto). По умолчанию egress прямой. - olcRTC — TCP-over-WebRTC туннель через легальную видео-комнату (openlibrecommunity/olcrtc, WTFPL): Jitsi / Яндекс Телемост / WB Stream. Публичные порты на VPS не нужны — бинарник входит в комнату как обычный тихий участник. Панель рендерит server YAML, следит за процессом и выдаёт копируемый
olcrtc://URI для клиентов owenclave / olcbox. - qWDTT — WireGuard через TURN-релеи VK Calls (SpaceNeuroX/proxy-turn-vk-android, GPL-3.0 server). Нужен root (TUN + NAT). Панель следит за процессом и выдаёт
qwdtt:///wdtt://и JSON-подписку для Android-клиента. Оператор передаёт живые VK call hash сам. - CSQTT — TURN/RTP туннель (amurcanov/csqtt, PolyForm NC). С qWDTT не совместим (не живут на одном хосте). Один пароль = одно устройство. Share-ссылка
csqtt://connect?v=2…. Клиенты: Android CSQTT APK, iOS anton48/vk-turn-proxy-ios в режиме CSQTT. Коммерческая лицензия LucX на CSQTT не распространяется. - mieru — прокси, устойчивый к цензуре, поверх собственного протокола вместо TLS (enfein/mieru
mita, GPL-3.0). Мульти-клиент: у каждого клиента панели свои HMAC-креды, отдельный счётчик трафика и онлайн-статус, share-ссылкаmierus://. Клиенты: mieru CLI, mihomo, Clash Verge Rev, husi, Exclave. - TrustTunnel — протокол AdGuard VPN (TrustTunnel/TrustTunnel, Apache-2.0): трафик неотличим от обычного HTTPS (HTTP/1.1 + HTTP/2 + QUIC). Использует ACME-серт панели (нужен домен с выпущенным сертом), для Flutter / CLI клиентов выдаёт
tt://?deep-link. - Сайдкар AnyTLS — anytls/anytls-go
anytls-serverс LucX-оверлеем сертификатов: TLS-прокси, разбивающий внешний TLS-handshake, чтобы спрятать фингерпринт TLS-in-TLS. Серты — ACME панели (webCertFile/webKeyFile) или свои certFile/keyFile (без серта или если SNI не в SAN — inbound не сохранится). Один общий пароль на inbound; shareanytls://pass@host:port/?sni=…. Клиенты: sing-box, mihomo, Shadowrocket, Stash, Loon. - Telegram WEB proxy (
tproxy) — сайдкарtproxy-server+ официальный MTProxy + Caddy TLS reverse_proxy наhostname:443, клиенту выдаётсяt.me/webproxy. Маршрут «через Xray» пока припаркован (MTProxy ходит напрямую; см. lucx.211). - Sidecar outbounds — клиентский режим Naive / mieru / TrustTunnel: вставляете share-ссылку (
naive+https:///mierus:///tt://) — тег появляется в routing и пулах балансировщиков (как у AWG outbound). При выключении трафик уходит в blackhole, а не вdirect— ничего не утекает. Клиентские бинарники лежат в tar.gz.
📦 Подписки, geodata и маршрутизация клиентов
- Подписка Amnezia — отдельный endpoint
/awg/{subId}отдаёт чистый AmneziaWG.conf(или?format=vpn→ телоvpn://…) для AmneziaVPN / Happ; ссылки появляются рядом с Clash / JSON / base64 в панели и Telegram-боте. - AWG в Clash Meta — подписка выдаёт пиры AmneziaWG через
amnezia-wg-option, так что Clash Meta принимает AWG вместе с VLESS/Trojan. - Geodata browser — откройте любой
geoip*.dat/geosite*.datпрямо из UI роутинга: поиск категорий, multi-select в правило (в апстриме с PR #6165 / v3.7.0, автор STRENCH0). - Пакет RoscomVPN geo — свежие
geoip_ROSCOM.dat/geosite_ROSCOM.dat(hydraponique/roscomvpn-geoip, roscomvpn-geosite): списки РКН (category-geoblock-ru,category-ru, ads, YouTube / Telegram / Steam, …). Обновление: панель Version → Geofiles или менюx-ui. - Профили Happ — Settings → Happ: выбор источника маршрутизации — встроенные deeplink RoscomVPN (Default / JsonSub / Whitelist) или свой free-text (на основе hydraponique/roscomvpn-routing).
🚀 Базовые фичи 3x-ui
- Протоколы: VLESS, VMess, Trojan, Shadowsocks, WireGuard, Hysteria2, TUIC, MTProto, HTTP, SOCKS, TUN.
- Транспорты и безопасность: REALITY, TLS, XTLS, gRPC, WebSocket, XHTTP, Fallbacks.
- Управление: Квоты трафика, IP-лимиты (Fail2ban), статус онлайн, подписки, Telegram-бот, REST API, Multi-node, SQLite / PostgreSQL.
📸 Скриншоты
LucX-UI использует ту же схему БД Xray-core / SQLite (или PostgreSQL), что и 3x-ui; AWG-таблицы создаются автоматически при первом запуске. Чтобы поставить поверх работающего 3x-ui, сначала сделайте резервную копию базы, затем запустите стандартную команду установки:
cp /etc/x-ui/x-ui.db /etc/x-ui/x-ui.db.bak
bash <(curl -fL https://raw.githubusercontent.com/AlexeyLCP/lucx-ui/main/install.sh)Установщик автоматически собирает AWG kernel-модуль (bin/install-awg-module.sh, DKMS). После установки запустите x-ui в консоли, чтобы увидеть версию модуля, и добавляйте AWG inbounds из панели.
После установки: подписки (/sub/, /json/, /clash/, /awg/) слушают отдельный порт (по умолчанию 2096), а не порт панели — reverse proxy должен проксировать и его. Кастомные geo-файлы кладите под отдельным именем — stock-имена (geoip.dat / geosite.dat и _IR / _RU / _ROSCOM) перезаписываются при обновлении geofile.
Ключи AWG в панели
Отдельного экрана «ключи» в панели нет — ключом считается клиент AmneziaWG-inbound:
- Inbounds → Add inbound, протокол AmneziaWG (ядро) (или родной
amneziawg). - Clients → Add client, привязать к этому inbound.
- QR / скачать
.conf/ подписка/awg/{subId}.
По умолчанию inbound получает подсеть /24 — до ~253 клиентов.
С существующего AWG на хосте
Если на сервере уже крутится awg-multi, toolza3 или Docker Amnezia — панель не трогает чужие awg0/awg1. На странице Inbounds появится баннер «Импорт существующего AWG»: превью пиров → один inbound на интерфейс. Ключи / IP / порт / обфускация копируются как есть. Kernel-интерфейс переименовывается на месте (awg{id}), handshake при этом не рвётся. Userspace/Docker: остановите старый менеджер — клиенты переподключатся один раз.
Без kernel-модуля LucX-инбаунды awg всё равно поднимаются на встроенном amneziawg-go. Родной протокол апстрима amneziawg доступен в панели рядом.
Проект публикуется под двумя лицензиями на собственный код, а third-party бинарники/данные распространяются по условиям их апстрима (полная матрица — в LICENSING.md):
Матрица лицензий
| Компонент | Лицензия |
|---|---|
| Исходный код оригинального 3x-ui | GPL-3.0 |
Компоненты LucX-UI (internal/awg/, internal/lucx/, LucX-страницы frontend) |
PolyForm Noncommercial 1.0.0 |
bin/caddy-naive-* (Caddy) |
Apache-2.0 |
Плагин forward_proxy (klzgrad) |
MIT |
NaiveProxy / bin/naive-client-* (klzgrad/naiveproxy) |
BSD-3-Clause |
bin/olcrtc-* (openlibrecommunity/olcrtc) |
WTFPL |
bin/qwdtt-* (SpaceNeuroX/proxy-turn-vk-android) |
GPL-3.0 |
bin/csqtt-* (amurcanov/csqtt) |
PolyForm Noncommercial 1.0.0 (amurcanov; грант LucX не покрывает) |
bin/mieru-* (mita, enfein/mieru) |
GPL-3.0 |
bin/trusttunnel-* (TrustTunnel/TrustTunnel) |
Apache-2.0 |
bin/anytls-* (anytls/anytls-go) |
Явной лицензии в апстриме нет (см. LICENSING.md) |
| AmneziaWG kernel module & tools (amnezia-vpn) | GPL-2.0 (модуль; ставится на хост) |
Готовые geo .dat (Loyalsoldier / IR / RU / ROSCOM) |
Условия каждого датасета (см. LICENSING.md) |
Туннельные бинарники — дочерние процессы, панель не линкует их статически. GPL у qWDTT относится к этому бинарнику и его исходникам, а не к PolyForm-коду LucX. CSQTT — чужой PolyForm NC: редистрибуция с их LICENSE, коммерческое разрешение LucX его не покрывает.
LucX-UI построен на множестве open-source проектов и трудах многих людей. Спасибо всем.
Тестировщики и контрибьюторы
Финансовая поддержка (Boosty, по уровням)
Список также показан на странице «Спонсоры» в самой панели (/panel/sponsors).
- Handshake: VladufQa, пётр смолин
- Pong: Сила Растений, Виталий Зайцев
- Ping: Камслат Глорихо, Михаил Ляшенко
- Подписчики: Игорь, Aleksandr S.
Upstream PR, которые мы портировали
- STRENCH0 — MHSanaei/3x-ui#6165 feat(xray): browse geosite/geoip categories from routing rules (geodata browser).
Проекты и вдохновение
| Проект | Что используем | Лицензия |
|---|---|---|
| MHSanaei/3x-ui | Базовая панель | GPL-3.0 |
| amnezia-vpn — kernel module & tools | Протокол AmneziaWG / AWG3 | GPL-2.0 (модуль) |
| klzgrad/naiveproxy | Протокол / клиент-референс NaiveProxy | BSD-3-Clause |
| klzgrad/forwardproxy + Caddy | Бинарник сайдкара NaiveProxy | MIT + Apache-2.0 |
| openlibrecommunity/olcrtc | Ядро olcRTC | WTFPL |
| SpaceNeuroX/proxy-turn-vk-android | Сервер qWDTT | GPL-3.0 |
| amurcanov/csqtt | Сервер CSQTT | PolyForm NC |
| anton48/vk-turn-proxy-ios | iOS-клиент CSQTT | GPL-3.0 |
| enfein/mieru | Сервер mieru mita |
GPL-3.0 |
| TrustTunnel/TrustTunnel | Эндпоинт TrustTunnel | Apache-2.0 |
| anytls/anytls-go | Сервер AnyTLS | Явной лицензии нет |
| elector1337/3x-ui-naive | Референс интеграции Caddyfile | — |
| Bebrik2283555/Ex3-ui | Концепция туннельных сайдкаров в панели (qWDTT / olcRTC) | — |
| hydraponique/3x-ui, roscomvpn-geoip, roscomvpn-geosite, roscomvpn-routing | Пакет RoscomVPN geo + профили Happ | Upstream |
| Loyalsoldier/v2ray-rules-dat, chocolate4u/Iran-v2ray-rules, runetfreedom/russia-v2ray-rules-dat | Готовые geoip/geosite | Upstream |
| pumbaX/awg-multi-script, hoaxisr/awg-manager | Вдохновение по AWG ops | — |
| bogdanfinn/tls-client, refraction-networking/utls | Референсы TLS-отпечатков для CPS | — |
LucX-UI бесплатен для личного использования. Понравилось — поставьте ⭐ репозиторию: это помогает другим найти проект и поддерживает разработку. Донаты необязательны, но всегда приятны:
Донаты
| Способ | Реквизиты |
|---|---|
| ⭐ GitHub Star | Star AlexeyLCP/lucx-ui |
| 🟠 Boosty (подписка) | boosty.to/alexeylcp |
| 🟠 Boosty (разово) | boosty.to/alexeylcp/donate |
| 🇷🇺 YooMoney (RUB, Россия) | yoomoney.ru/to/41001989176429 |
| 💎 USDT (TON) | UQC48dE4i35bjEU4jljx0h1CGeXMu77eKZwN5W4gbcibmqDs |
| 💠 USDT (ERC-20) | 0xA49aBc042c5BB3d682788D3DEB2eAC833343a873 |
Архитектура, сборка и upstream sync (нажмите, чтобы развернуть)
Архитектура и правило изоляции. Весь код LucX живёт в изолированных пакетах (internal/awg/, internal/lucx/); правки файлов upstream 3x-ui вносятся только внутри маркеров // LUCX-HOOK / // END LUCX-HOOK, поэтому каждый upstream-релиз сводится к почти тривиальному портированию. См. AGENTS.md — там полная карта архитектуры, правила проекта, известные проблемы и шаблоны отладки.
Сборка из исходников (требуется Go 1.27+, Node.js 24+, gcc с CGO для SQLite — полноценно собирается только на Linux; на Windows без gcc падает пакет CGO sqlite):
cd frontend && npm run build && cd ..
go build -o /tmp/x-ui .
# проверка перед push: bin/check-lucx.sh (LUCX-HOOK + internal/awg|lucx)Процедура upstream sync (актуальная база — апстрим v3.8.5; мержить теги/main апстрима, не старые v3.5→v3.6):
git fetch origin --tags
git merge --no-commit --no-ff origin/main
# разрешение конфликтов блок за блоком (см. AGENTS.md правило 8) — никогда целиком --ours/--theirs
git grep -c "LUCX-HOOK" # сравнить количество маркеров до/после — так видно потерянные блоки
go build ./... && go vet ./... && go test ./internal/awg/... ./internal/lucx/...