このプロジェクトについて
泠 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 ライセンスを採用しています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.