このプロジェクトについて

泠 Yggdrasil は、Minecraft 向けに開発された Yggdrasil 外部認証システムです。authlib 体系と完全に互換性があり、アカウント登録、ログイン、キャラクター管理、スキン/ケープのホスティング機能を提供します。内蔵の Web インストールウィザード、アニメ風の管理パネル、多層的なセキュリティ体系により、数分で安全かつ見た目にも優れた外部ログインサービスを構築できます。 ## クイックスタート 環境要件: Java 25(推奨。理論上は Java 21+ をサポート)、推奨メモリは少なくとも 512 MB。 3 ステップで起動: 1. Java バージョンを確認 2. LingYggdrasil-2.2.7.jar をダウンロードし、独立した空のディレクトリに配置 3. 起動(このディレクトリがデータディレクトリになります) 初回起動時には自動的にインストールウィザード(`http://<サーバーアドレス>:35598`)が起動し、指示に従って管理者アカウント、データベース、メール設定を完了します。インストール完了後、プログラムは同時に 3 つのサービスを提供します: | ポート | 用途 | アクセス範囲 | |------|------|----------| | 35565 | ユーザー向け(登録、ログイン、ダッシュボード、スキン、フレンドなど) | 外部公開 | | 35577 | Yggdrasil API(Minecraft ランチャーが呼び出し) | 外部公開 | | 35599 | 管理バックエンド | 非公開に保つべき | | 35598 | インストールウィザード | 初回インストール時のみ開放 | ## 機能特徴 ### すぐに使える - Web インストールウィザード: 初回起動時に管理者アカウント、データベース、メールサービスの設定を自動的にガイド - 複数データベース対応: SQLite、MySQL、PostgreSQL - 単一 JAR デプロイ: 単一の実行可能 JAR としてパッケージ化 ### プラグインシステム - 外部プラグイン読み込み: 起動時に `plugins/` ディレクトリを自動スキャンし、プラグイン jar を読み込み - `plugin.yml` 記述: Paper スタイルに類似。名前、バージョン、作者、依存関係、アイコン、権限ノードを宣言 - バックエンドでのプラグイン管理: 手動での開始/停止をサポート - プラグインのセカンダリメニュー: プラグインは最大 1 つのバックエンドセカンダリメニューに登録可能 - 動的権限ノード: 内蔵ノードとプラグインノードは、ソースによって動的に統一的に登録 - プラグイン開発 API: ビルド時に `LingYggdrasil-plugin-api-2.2.7.jar` を生成 ### セキュリティ体系 - Argon2 パスワード暗号化: 6 段階の強度調整可能 - メール検証: ドメインのホワイトリスト/ブラックリスト制御をサポート - 同一 IP 登録制限: 大量登録を防止 - 名前ブラックリスト: ワイルドカードをサポート - 独立セッション体系: ユーザー向け、管理向け、API は相互に分離されたセッション Cookie を使用 - Root 整合性保護: `root_info` テーブルを検証 - ログインおよび操作のレート制限: 重要な操作にはすべて頻度制限あり ### ユーザー向け - キャラクター管理: 複数のゲームキャラクターを作成。各キャラクターは独立した Yggdrasil Token と UUID を持つ - スキン & ケープ: 個人のスキンとケープをアップロード、管理。エイリアス命名、公開/非公開の制御が可能 - マテリアルライブラリ: 公開マテリアル広場。人気順にソートされ、無限スクロールの遅延読み込み - いいね & お気に入り: マテリアルにいいねして人気を後押し - 共有マテリアル: フレンド共有とマイお気に入りの 2 つのセクション - フレンドシステム: フレンドコード追加、フレンド詳細カード、ブロック管理、チェックボックス式のマテリアル共有 - 3D スキンプレビュー: skinview3d を統合し、360° 回転プレビューをサポート - セキュリティ設定: パスワード、メール、ニックネームの自己変更、Token の表示と再生成 - 操作ログ: 自分の操作ログの表示、ダウンロード、消去 - テーマと言語: ライト/ダークテーマの切り替え、10 言語がアカウントに永続化 ### 管理バックエンド - ダッシュボード概要: ユーザー数、キャラクター数、スキン/ケープ数などの主要データ。コンポーネントはドラッグ&ドロップで並べ替え可能 - ユーザー管理: ユーザーの表示、検索、作成、編集、BAN - キャラクター管理: グローバル CRUD。名前変更、所有権移転、形態切り替えをサポート - スキン & ケープ管理: テクスチャリソースをグローバルに管理。アップロードサイズ、数量、保存パス、頻度制限を設定 - セキュリティ設定: 6 段階の暗号化レベルのビジュアルカード - システム管理: サイト情報、機能スイッチ、ドメイン、お知らせ、ICP 登録、操作ログなどのグループ設定 - 権限グループ: 管理者権限グループとユーザー権限グループ。メニューの可視性と機能の利用可否を細かく制御 - ワールドツリー設定: 署名アルゴリズム、Token 有効期限、頻度制限、UUID バージョンなどのプロトコル設定 ### Yggdrasil プロトコル - 完全なプロトコル実装: 主要な Minecraft ランチャーの Yggdrasil 認証接続と互換 - 3 つの署名モード: Ed448(モダン)、RSA-SHA512、RSA-SHA1(互換) - Token 体系: 各キャラクターに 64 ビットの高強度 Token を自動生成 - テクスチャホスティング: `/textures/{type}/{hash}` エンドポイントを公開 - セッション管理: 完全なログイン、ログアウト、セッション検証フロー - 便利なクエリ拡張: 名前によるクエリ、バッチクエリなどの拡張エンドポイントを提供 ### 国際化 内蔵言語は簡体字中国語、繁体字中国語、中国語(華夏)、English、Русский、Deutsch、Français、Italiano、日本語、한국어 の全 10 言語。言語パックは JSON 形式で、外部からの上書きと深いマージをサポートします。 ## クライアント接続 HMCL などカスタム Yggdrasil をサポートするランチャーを例に: 1. ランチャーの「アカウント」または「ログイン方法」設定で、「カスタム Yggdrasil / 外部ログイン」を選択 2. 認証サーバーアドレスに API ルートアドレスを入力(例: `https://example.com`、直接接続の場合は `http://<IP>:35577`) 3. ユーザー名にキャラクター名、パスワードにそのキャラクターの Yggdrasil Token を入力 ## 技術スタック | コンポーネント | 技術 | |------|------| | 言語 | Java 25 | | Web フレームワーク | Javalin | | データベース接続 | HikariCP コネクションプール | | データベース | SQLite / MySQL / PostgreSQL | | 暗号化 | Bouncy Castle(Argon2、Ed448、RSA) | | メール | Eclipse Angus Mail | | ログ | Logback + SLF4J | | シリアライゼーション | Jackson | | ビルドツール | Maven | ## ライセンス このプロジェクトは GNU Affero General Public License v3.0 ライセンスを採用しています。