# Egg と Docker イメージ

> Portal での egg と Docker イメージの違い、両者の連携方法、利用できるセキュリティパッチ済みの Daki Yolks イメージについて。

Portal でサーバーを構成するとき、関連する 2 つの概念に出会います: **egg** と **Docker イメージ** です。両者の違いを理解すると、サーバーを正しく構成できます。

## このページで学べること

- egg とは何か、何を制御するか
- Docker イメージとは何か、適切なものの選び方
- egg と Docker イメージがどのように連携するか
- 利用できる Node.js と Python のバージョン、および Daki がそれらにパッチを当て続ける方法
- それぞれをいつ変更すべきか

---

## egg とは？

**egg** は、実行しているサーバーの全体的な種類を定義するサーバーテンプレートです。次の内容を指定します:

- 使用されるプログラミング言語またはフレームワーク
- 選択できる Docker イメージ
- 既定の起動コマンドのテンプレート
- 事前に構成された起動変数とその既定値
- 新規インストール時に作成されるファイル

Daki で利用できる egg の例:
- **Node.js** — JavaScript アプリケーションと Discord ボット向け
- **Python** — Python アプリケーションと Discord ボット向け
- **Java** — Java アプリケーション向け（有料プランで利用可能）
- **Rust** — Rust アプリケーション向け（有料プランで利用可能）
- **Minecraft Java** — Minecraft ゲームサーバー向け（ゲームサーバープラン）

**サーバーを作成するときに egg を選びます。** Free Tier では Node.js と Python の egg のみ利用できます。有料プランでは、ほかの egg も利用できます。

既存サーバーの egg を変更するには、**Settings** タブを開きます。egg を変更すると再インストールが行われるため、事前にファイルのバックアップを作成することを強くおすすめします。

---

## Docker イメージとは？

**Docker イメージ** は、サーバーが内部で動作する ランタイム の特定のバージョンです。egg が言語を決めるのに対し、Docker イメージはバージョンを決めます。

たとえば Node.js の egg は Node.js 22、24、26 を提供し、Python の egg は Python 3.11 から 3.15 を提供します。Docker イメージは **Startup** タブで選択します。

---

## Daki Yolks: セキュリティパッチ済みのイメージ

Daki のすべての Node.js と Python のサーバーは、無料プランも有料プランも、**Daki Yolks** で動作します。これは、ほとんどの Pterodactyl ホストが使うコミュニティイメージのドロップイン置き換えとして作られた、当社独自の Docker イメージです。それらのコミュニティイメージはまれにしか再ビルドされないため、セキュリティ修正への対応が数か月遅れることがあります。

- **常にパッチ適用済み。** 6 時間ごとに、新しい公式の Node.js または Python のベースイメージがリリースされていないかを確認し、影響を受けるバージョンを再ビルドします。週に一度は、すべてのイメージを再ビルドして、オペレーティングシステムのアップデート（Debian 13）を取り込みます。
- **互換性あり。** 以前と同じツール、エントリーポイント、動作なので、ボットは引き続き動作します。Node.js イメージには `git`、`ffmpeg`、`sqlite3`、`build-essential`、`python3`、`typescript`、`ts-node` が含まれ、Python イメージには `gcc`、`g++`、`git`、`ffmpeg` が含まれます。
- **テスト済み。** すべてのイメージは、公開前に Portal が起動する方法で、実際の TypeScript または Python プログラムを起動して実行できる必要があります。
- **オープンソース。** イメージは MIT ライセンスのもと [GitHub](https://github.com/niclasspecht/daki-yolks) で公開されています。

| ランタイム | バージョン | サポート期限 |
| :--- | :--- | :--- |
| Node.js | **26** | 2029 年 4 月 |
| Node.js | **24** | 2028 年 4 月 |
| Node.js | **22** | 2027 年 4 月 |
| Python | **3.15** | 2031 年 10 月 |
| Python | **3.14** | 2030 年 10 月 |
| Python | **3.13** | 2029 年 10 月 |
| Python | **3.12** | 2028 年 10 月 |
| Python | **3.11** | 2027 年 10 月 |

> **ヒント:** **再起動で更新。** リビルドのたびにイメージ名は変わりません。実行中のサーバーは、再起動されるまで現在のイメージを使い続けます。次回の起動時には、自動的に最新のパッチ適用済みバージョンが適用されます。ファイルには影響しません。

### 古い（サポート終了）のバージョン

Node.js 18 から 21、23、25、および Python 3.9 と 3.10 は、開発元からのセキュリティ修正をもう受けられません。既存のプロジェクトが動き続けられるように、引き続き選択できますが、イメージの一覧では **EOL - no security updates** と表示され、当社では再ビルドしません。可能な限り、サポート対象のバージョンに移行してください。

新しいメジャーバージョンに切り替えるとき（たとえば Node.js 20 → 24、Python 3.10 → 3.13）は、依存関係を再インストールしてください: `npm rebuild` を実行するか、`node_modules` を削除して `npm install` を再実行し、Python の仮想環境も作り直してください。

---

## egg と Docker イメージの連携

次のように考えると分かりやすいです:

| 概念 | たとえ | 設定場所 |
| :--- | :--- | :--- |
| **egg** | Python で書くことを選ぶ | Settings タブ（またはサーバー作成時） |
| **Docker イメージ** | Python 3.12 と 3.13 のどちらを選ぶか | Startup タブ |

egg は一度選べば（めったに変更しません）、Docker イメージは、プロジェクトが別のバージョンを必要とするたびに調整します。

---

## それぞれをいつ変更するか

### Docker イメージを変更するとき:
- より新しいランタイムのバージョンが必要な場合（例: サポート終了の Node.js 20 から Node.js 24 へのアップグレード）
- プロジェクトの互換性のために、特定のマイナーバージョンが必要な場合

### egg を変更するとき:
- プログラミング言語を完全に切り替えたい場合（例: Node.js から Python へ）
- 別の既定の構成や、事前定義されたインストール設定が必要な場合

> **注意:** egg を変更すると再インストールが行われます。通常はファイルが自動的に削除されることはありませんが、一部のファイルが上書きされる場合があり、互換性のない構成になることがあります。egg を変更する前には、バックアップを強くおすすめします。[サーバー設定](https://daki.cc/ja/wiki/guides/server-settings) を参照してください。

---

## よくある質問

**Discord ボットにはどの egg を使うべきですか？**

Discord.js / JavaScript のボットには **Node.js** の egg を、discord.py / Python のボットには **Python** の egg を使ってください。

**必要な Docker イメージが一覧にない場合はどうすればよいですか？**

利用可能なイメージは egg によって定義されています。必要なバージョンが表示されない場合は、サポートに問い合わせてください。リクエストに応じて、追加のイメージが利用できる場合があります。

**イメージに 'EOL - no security updates' と表示されています。どうすればよいですか？**

そのバージョンは開発元によってもう管理されていません。サーバーは引き続き動きますが、セキュリティ修正は受けられなくなります。Startup タブでサポート対象のバージョン（Node.js 22、24、26、または Python 3.11 から 3.15）を選択し、依存関係を再インストールして、再起動してください。

**最新のセキュリティパッチはどうすれば入手できますか？**

サーバーを再起動してください。修正がリリースされると Daki Yolks は自動的に再ビルドされ、サーバーは次回の起動時に新しいビルドを取り込みます。

**Docker イメージを変更するとファイルは削除されますか？**

いいえ。Docker イメージだけを変更（Startup タブで）しても、ファイルには影響しません。egg を変更（Settings タブで）した場合にのみ再インストールが行われます。

---

## 次のステップ

- [起動設定](https://daki.cc/ja/wiki/guides/startup-settings) — Docker イメージを選択し、起動コマンドを設定します。
- [サーバー設定](https://daki.cc/ja/wiki/guides/server-settings) — egg を変更する、またはサーバーを再インストールします。
- [Discord.js ボットをデプロイ](https://daki.cc/ja/wiki/guides/deploy-discordjs) — Node.js 向けのエンドツーエンドのデプロイガイド。
- [Python ボットをデプロイ](https://daki.cc/ja/wiki/guides/deploy-python) — Python 向けのエンドツーエンドのデプロイガイド。

---
Source: https://daki.cc/ja/wiki/guides/eggs-and-images
