Сетевое ядро Mikan
Citrus — ядро VPN-сервиса Mikan, форк mihomo. Совместим с Xray, включая пост-квантовый REALITY, XHTTP и ECH; считает трафик, лимиты и события по каждому пользователю; строит каскады и отдаёт метрики. Конфиг тот же, что у mihomo. GPL-3.0.
citrus -d ~/.config/citrusОдин бинарник для Linux, Windows, macOS, FreeBSD и Android.

Зачем отдельное ядро
Mikan — VPN-сервис: на его нодах ядро работает сервером для многих пользователей сразу. mihomo писался как клиент, и многого, что нужно ноде, в нём нет. Citrus добавляет это в само ядро.
Совместимость с Xray
Пост-квантовый REALITY (X25519MLKEM768 и ML-DSA-65) на клиенте и сервере, XHTTP с поведением и значениями по умолчанию как у Xray, ключи и ссылки ECH в форматах Xray. Всё это проверяют автотесты против Xray v26.10.10.
Пользователи — часть ядра
Трафик и онлайн-адреса каждого пользователя, лимиты скорости, соединений, адресов, квоты и срока, смена пользователей входящих без перезапуска. Через REST, Go API и поток событий /events.
Укреплённый сервер
Ревью безопасности, ревью кода и статический аудит: контроллер без secret не слушает сеть, состояние до авторизации ограничено, каждый запрос проходит авторизацию, обновления сверяются с checksums.txt, CI закреплён по хешам.
Каскады
Группа type: chain собирает цепочку «вход → выход» из прокси и групп, а проверка здоровья называет хоп, который сломался.
Наблюдаемость
Prometheus /metrics, пробы /healthz и /readyz, события отклонённой авторизации и JSON-логи для Loki и ELK.
Ничего лишнего
VMess, SSR, Hysteria v1, TUIC v4, потоковые шифры Shadowsocks, v2ray-plugin и mKCP удалены: около 20 тысяч строк, которые сервису не нужны.
Citrus и mihomo
Формат конфига и API контроллера общие с mihomo, а клиенты на mihomo подключаются к серверу Citrus. В таблице только то, что уже влито в Citrus.
| Citrus | mihomo | |
|---|---|---|
| Пост-квантовый REALITY | X25519MLKEM768 по умолчанию, ML-DSA-65, на сервере require-x25519mlkem768 и mldsa65-seed | X25519MLKEM768 только по флагу, без ML-DSA-65 |
| Статистика пользователей | Трафик и онлайн-IP по паре «входящий, пользователь», выборка с обнулением | Только общие счётчики |
| Лимиты пользователей | Скорость, соединения, адреса, квота, срок | Нет |
| Пользователи входящих | Меняются через REST, листенер не пересоздаётся | Только перезагрузкой конфига |
| События и метрики | /events (WebSocket, SSE, NDJSON), /metrics, /healthz, /readyz | Нет |
| Каскады | Группа type: chain с проверкой каждого хопа | Только dialer-proxy |
| Контроллер на сетевом адресе | Только с secret | Запускается и без secret |
| Самообновление | Пакет сверяется с checksums.txt релиза | Без сверки |
| Устаревшие протоколы | Удалены | Есть |
Что умеет
Входящие
HTTP, HTTPS, SOCKS, mixed, redirect и TPROXY. Плюс серверные листенеры для VLESS, Trojan, Hysteria2, TUIC, AnyTLS и других.
Исходящие протоколы
VLESS с REALITY, Trojan, Shadowsocks, Hysteria2, TUIC, AnyTLS, TrustTunnel, Snell, WireGuard и другие.
TUN
Весь трафик системы через ядро, с настраиваемым сетевым стеком.
DNS
DNS over HTTPS, TLS и QUIC, fake IP и правила маршрутизации для DNS-запросов.
Правила
Маршрутизация по домену, диапазону IP, geodata, процессу и логическим комбинациям правил.
Провайдеры и группы
Удалённые провайдеры прокси и правил, проверки доступности, fallback и балансировка нагрузки.
API контроллера
HTTP и WebSocket API, совместимые с клиентами и дашбордами для mihomo, например MetaCubeXD.
Скачать
Готовые сборки лежат в релизах на GitHub. Файлы называются citrus-<os>-<arch>-<версия>: в релизе версия — это тег (citrus-linux-arm64-v1.2.3.gz), в пререлизе — ветка и коммит (citrus-linux-arm64-main-1a2b3c4.gz). Для Windows это .zip, для Linux есть ещё .deb, .rpm и .pkg.tar.zst.
| Канал | Откуда | Что это |
|---|---|---|
release | Последний тег vX.Y.Z | Стабильные версии. |
Prerelease-main | Ветка main | Сборка с каждого слияния в main. |
Файл amd64 собран под x86-64-v3 (Intel Haswell, AMD Excavator и новее); для старых берите amd64-compatible (v1) или amd64-v2. Есть также arm64, armv5–v7, 386, mips, riscv64, loong64, s390x и другие.
Citrus и Mikan
Mikan — свободная VPN-панель. Её ноды встраивают ядро как библиотеку и считают трафик по каждому соединению каждого пользователя; сейчас это mihomo, Citrus станет следующим. Ядро живёт в отдельном репозитории, чтобы его можно было использовать и без панели: как обычный клиент или сервер в стиле mihomo.
Документация
Быстрый старт
Скачать, положить конфиг, запустить.
Переход с mihomo
Что поменять в конфиге и к чему готовиться.
Совместимость
Клиенты mihomo и Xray с сервером Citrus.
Дорожная карта
Что сделано и что дальше.
Изменения
Все влитые pull request’ы по темам.
Безопасность
Как сообщить об уязвимости.
Новости
Вторая бета — быстрее на загрузке и скачивании, ниже пинг под нагрузкой
v1.0.0-beta.2 — сравнение с Xray, sing-box и mihomo на одном хосте, ускорение скачивания, пинг под нагрузкой, память туннелей, исправления TUIC, smux и квот.
Аудит закрыт, каскады, события, unix-сокеты и DNSCrypt
Итоги недели в dev — исправления по аудиту, группы-цепочки, поток событий /events, листенеры на unix-сокете, DNSCrypt и проверка с клиентами mihomo.
Пост-квантовый REALITY, быстрый XHTTP через CDN и чистка протоколов
В dev влиты пост-квантовый REALITY на клиенте и сервере, ускорение packet-up через CDN, удаление устаревших протоколов, хук отклонённой авторизации и исправление гонок.
