Об этом проекте
Лин Yggdrasil — это система внешней аутентификации Yggdrasil, созданная для Minecraft, полностью совместимая с экосистемой authlib и предоставляющая возможности регистрации аккаунтов, входа, управления персонажами и хостинга скинов/плащей. Встроенный веб-мастер установки, панель управления в аниме-стиле и многоуровневая система безопасности позволяют за несколько минут развернуть безопасный и красивый сервис внешнего входа.
## Быстрый старт
Требования к окружению: Java 25 (рекомендуется; теоретически поддерживается Java 21+), рекомендуется не менее 512 МБ доступной памяти.
Запуск в три шага:
1. Проверьте версию Java
2. Скачайте LingYggdrasil-2.2.7.jar и поместите его в отдельный пустой каталог
3. Запустите (этот каталог станет каталогом данных)
При первом запуске автоматически откроется мастер установки (`http://<адрес сервера>:35598`); следуйте подсказкам для настройки учётной записи администратора, базы данных и почты. После завершения установки программа одновременно предоставляет три сервиса:
| Порт | Назначение | Область доступа |
|------|------|----------|
| 35565 | Пользовательский интерфейс (регистрация, вход, панель, скины, друзья и т. д.) | Публичный |
| 35577 | Yggdrasil API (для лаунчеров Minecraft) | Публичный |
| 35599 | Админ-панель | Должна оставаться приватной |
| 35598 | Мастер установки | Открыт только при первой установке |
## Возможности
### Готово к использованию
- Веб-мастер установки: при первом запуске автоматически помогает настроить учётную запись администратора, базу данных и почтовый сервис
- Поддержка нескольких баз данных: SQLite, MySQL, PostgreSQL
- Развёртывание одним JAR: упаковано в один исполняемый JAR
### Система плагинов
- Загрузка внешних плагинов: при запуске автоматически сканируется каталог `plugins/` и загружаются jar-файлы плагинов
- Описание `plugin.yml`: в стиле Paper, объявляет имя, версию, автора, зависимости, иконку и узлы разрешений
- Управление плагинами в админ-панели: поддержка ручного запуска и остановки
- Вторичное меню плагинов: плагин может зарегистрировать не более одного вторичного меню в админ-панели
- Динамические узлы разрешений: встроенные узлы и узлы плагинов единообразно динамически регистрируются по источнику
- API для разработки плагинов: при сборке同步 создаётся `LingYggdrasil-plugin-api-2.2.7.jar`
### Система безопасности
- Шифрование паролей Argon2: 6 уровней强度 с возможностью настройки
- Подтверждение электронной почты: поддержка управления белыми и чёрными списками доменов
- Ограничение регистрации с одного IP: защита от массовых регистраций
- Чёрный список имён: поддержка подстановочных знаков
- Независимая система сессий: пользовательская, административная и API используют взаимно изолированные сессионные Cookie
- Защита целостности Root: проверка таблицы `root_info`
- Ограничение частоты входа и операций: для ключевых операций действуют ограничения частоты
### Пользовательский интерфейс
- Управление персонажами: создание нескольких игровых персонажей, каждый со своим Yggdrasil Token и UUID
- Скины и плащи: загрузка и управление личными скинами и плащами, поддержка псевдонимов, управляемая публичность/приватность
- Библиотека материалов: публичная площадь материалов, сортировка по популярности, бесконечная прокрутка с ленивой загрузкой
- Лайки и избранное: лайки материалов помогают попасть в популярное
- Общие материалы: два раздела — обмен с друзьями и моё избранное
- Система друзей: добавление по коду друга, карточка сведений о друге, управление чёрным списком, выборочный обмен материалами
- 3D-предпросмотр скинов: интегрирован skinview3d, поддержка вращения на 360°
- Настройки безопасности: самостоятельная смена пароля, почты, никнейма, просмотр и перегенерация Token
- Журнал операций: просмотр, скачивание и очистка собственного журнала операций
- Тема и язык: переключение светлой/тёмной темы, 10 языков с сохранением в учётной записи
### Админ-панель
- Обзорная панель: ключевые данные — число пользователей, персонажей, скинов/плащей; компоненты поддерживают перетаскивание для сортировки
- Управление пользователями: просмотр, поиск, создание, редактирование, блокировка пользователей
- Управление персонажами: глобальный CRUD, поддержка изменения имени, передачи владения и переключения формы
- Управление скинами и плащами: глобальное управление текстурными ресурсами, настройка размера, количества, пути хранения и ограничений частоты загрузки
- Настройки безопасности: визуальные карточки 6 уровней шифрования
- Управление системой: групповые настройки информации о сайте, переключателей функций, доменов, объявлений, регистрации, журналов операций и т. д.
- Группы разрешений: группы прав администраторов и группы прав пользователей, тонкий контроль видимости меню и доступности функций
- Настройки Мирового древа: алгоритм подписи, срок действия Token, ограничения частоты, версия UUID и другие параметры протокола
### Протокол Yggdrasil
- Полная реализация протокола: совместимое подключение аутентификации Yggdrasil для主流 лаунчеров Minecraft
- Три режима подписи: Ed448 (современный), RSA-SHA512, RSA-SHA1 (совместимый)
- Система Token: для каждого персонажа автоматически генерируется 64-битный высоконадёжный Token
- Хостинг текстур: публично открытый endpoint `/textures/{type}/{hash}`
- Управление сессиями: полный流程 входа, выхода и проверки сессии
- Расширения удобных запросов: дополнительные endpoint для поиска по имени, пакетных запросов и т. д.
### Интернационализация
Встроено 10 языков: упрощённый китайский, традиционный китайский, китайский (華夏), English, Русский, Deutsch, Français, Italiano, 日本語, 한국어. Языковые пакеты в формате JSON, поддерживают внешнее переопределение и глубокое слияние.
## Подключение клиента
На примере лаунчеров вроде HMCL, поддерживающих пользовательский Yggdrasil:
1. В настройках «Аккаунты» или «Способ входа» лаунчера выберите «Пользовательский Yggdrasil / внешний вход»
2. В поле адреса сервера аутентификации укажите корневой адрес API (например, `https://example.com`, при прямом подключении — `http://<IP>:35577`)
3. В поле имени пользователя укажите имя персонажа, в поле пароля — Yggdrasil Token этого персонажа
## Технологический стек
| Компонент | Технология |
|------|------|
| Язык | Java 25 |
| Веб-фреймворк | Javalin |
| Подключение к БД | Пул соединений HikariCP |
| База данных | SQLite / MySQL / PostgreSQL |
| Шифрование | Bouncy Castle (Argon2, Ed448, RSA) |
| Почта | Eclipse Angus Mail |
| Логирование | Logback + SLF4J |
| Сериализация | Jackson |
| Инструмент сборки | Maven |
## Лицензия
Проект распространяется под лицензией GNU Affero General Public License v3.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.