# Eggs और Docker Images

> Daki Portal में eggs और Docker images का अंतर, वे एक साथ कैसे काम करते हैं, और कौन सी सुरक्षा-पैच वाली Daki Yolks images उपलब्ध हैं।

Portal में अपना सर्वर कॉन्फ़िगर करते समय आपको दो संबंधित अवधारणाएँ मिलेंगी: **eggs** और **Docker images**। इनका अंतर समझने से आप अपना सर्वर सही तरीके से कॉन्फ़िगर कर पाते हैं।

## आप क्या सीखेंगे

- एक egg क्या है और वह क्या नियंत्रित करता है
- Docker image क्या है और सही image कैसे चुनें
- eggs और Docker images एक साथ कैसे काम करते हैं
- कौन से Node.js और Python वर्शन उपलब्ध हैं, और Daki उन्हें कैसे पैच रखता है
- हर एक को कब बदलना चाहिए

---

## Egg क्या है?

एक **egg** एक सर्वर टेम्पलेट है जो आपके चलते सर्वर का सामान्य प्रकार तय करता है। यह निर्धारित करता है:

- कौन सी प्रोग्रामिंग भाषा या फ़्रेमवर्क इस्तेमाल होता है
- चुनने के लिए कौन सी Docker images उपलब्ध हैं
- डिफ़ॉल्ट स्टार्टअप कमांड का टेम्पलेट
- कौन से स्टार्टअप वेरिएबल और डिफ़ॉल्ट पहले से कॉन्फ़िगर हैं
- नए इंस्टॉल पर कौन सी फ़ाइलें बनती हैं

Daki पर उपलब्ध eggs के उदाहरण:
- **Node.js** — JavaScript ऐप और Discord बॉट के लिए
- **Python** — Python ऐप और Discord बॉट के लिए
- **Java** — Java ऐप के लिए (पेड प्लान पर उपलब्ध)
- **Rust** — Rust ऐप के लिए (पेड प्लान पर उपलब्ध)
- **Minecraft Java** — Minecraft गेम सर्वर के लिए (गेम सर्वर प्लान)

**सर्वर बनाते समय आप अपना egg चुनते हैं।** Free Tier पर केवल Node.js और Python eggs उपलब्ध हैं। पेड प्लान अतिरिक्त eggs तक पहुँच देते हैं।

मौजूदा सर्वर का egg बदलने के लिए **Settings** टैब पर जाएँ। ध्यान रखें कि egg बदलने से रीइंस्टॉल होता है — पहले अपनी फ़ाइलों का बैकअप लेना दृढ़ता से अनुशंसित है।

---

## Docker image क्या है?

एक **Docker image** उस रनटाइम का विशिष्ट वर्शन है जिसके अंदर आपका सर्वर चलता है। जहाँ egg भाषा तय करता है, वहीं Docker image वर्शन तय करता है।

उदाहरण के लिए, Node.js egg Node.js 22, 24 और 26 देता है, और Python egg Python 3.11 से 3.15 तक देता है। Docker image आप **Startup** टैब में चुनते हैं।

---

## Daki Yolks: सुरक्षा-पैच वाली images

Daki पर सभी Node.js और Python सर्वर, Free Tier और पेड दोनों, **Daki Yolks** पर चलते हैं: हमारी अपनी Docker images, जिन्हें उन कम्युनिटी images के ड्रॉप-इन विकल्प के रूप में बनाया गया है जिन्हें ज़्यादातर Pterodactyl होस्ट इस्तेमाल करते हैं। वे कम्युनिटी images बहुत कम दोबारा बनती हैं, इसलिए सुरक्षा सुधारों से महीनों पीछे रह सकती हैं।

- **हमेशा पैच किया हुआ।** हर 6 घंटे में हम जाँचते हैं कि कोई नया आधिकारिक Node.js या Python बेस image जारी हुआ है या नहीं, और प्रभावित वर्शन फिर से बनाते हैं। हर सप्ताह सभी images ऑपरेटिंग सिस्टम अपडेट (Debian 13) लेने के लिए फिर से बनाई जाती हैं।
- **संगत।** वही टूल, entrypoint और व्यवहार जैसे पहले थे, इसलिए आपका बॉट काम करता रहता है। Node.js images में `git`, `ffmpeg`, `sqlite3`, `build-essential`, `python3`, `typescript` और `ts-node` शामिल हैं; Python images में `gcc`, `g++`, `git` और `ffmpeg` शामिल हैं।
- **परखा हुआ।** प्रकाशित होने से पहले हर image को एक असली TypeScript या Python प्रोग्राम को उसी तरह शुरू करके चलाना होता है जैसे Portal उसे शुरू करता है।
- **ओपन सोर्स।** ये images MIT लाइसेंस के तहत [GitHub](https://github.com/niclasspecht/daki-yolks) पर सार्वजनिक हैं।

| रनटाइम | वर्शन | कब तक समर्थित |
| :--- | :--- | :--- |
| Node.js | **26** | अप्रैल 2029 |
| Node.js | **24** | अप्रैल 2028 |
| Node.js | **22** | अप्रैल 2027 |
| Python | **3.15** | अक्टूबर 2031 |
| Python | **3.14** | अक्टूबर 2030 |
| Python | **3.13** | अक्टूबर 2029 |
| Python | **3.12** | अक्टूबर 2028 |
| Python | **3.11** | अक्टूबर 2027 |

> **टिप:** **अपडेट के लिए रीस्टार्ट करें।** हर रीबिल्ड के बाद image का नाम वही रहता है। चलता सर्वर रीस्टार्ट होने तक अपनी मौजूदा image रखता है; अगली शुरुआत पर उसे अपने-आप नवीनतम पैच वाला वर्शन मिल जाता है। आपकी फ़ाइलों को कुछ नहीं होता।

### पुराने (end-of-life) वर्शन

Node.js 18 से 21, 23 और 25, तथा Python 3.9 और 3.10 को उनके डेवलपर अब सुरक्षा सुधार नहीं देते। ये फिर भी चुने जा सकते हैं ताकि मौजूदा प्रोजेक्ट चलते रहें, लेकिन image सूची में इन पर **EOL - no security updates** लिखा होता है और हम इन्हें दोबारा नहीं बनाते। जब संभव हो, किसी समर्थित वर्शन पर चले जाएँ।

जब आप किसी नए मेजर वर्शन पर जाते हैं (जैसे Node.js 20 → 24 या Python 3.10 → 3.13), तो अपनी डिपेंडेंसी फिर से इंस्टॉल करें: `npm rebuild` चलाएँ या `node_modules` हटाकर फिर से `npm install` चलाएँ, और Python virtual environments दोबारा बनाएँ।

---

## ये एक साथ कैसे काम करते हैं

इसे इस तरह समझें:

| अवधारणा | उदाहरण | कहाँ सेट होती है |
| :--- | :--- | :--- |
| **Egg** | Python में लिखने का चुनाव | Settings टैब (या सर्वर बनाते समय) |
| **Docker image** | Python 3.12 या 3.13 में से चुनना | Startup टैब |

आप egg एक बार चुनते हैं (या शायद ही कभी बदलते हैं), और जब भी आपके प्रोजेक्ट को किसी अलग वर्शन की ज़रूरत हो, Docker image समायोजित करते हैं।

---

## कब क्या बदलें

### Docker image कब बदलें:
- आपको नए रनटाइम वर्शन की ज़रूरत है (जैसे end-of-life Node.js 20 से Node.js 24 पर अपग्रेड)
- आपके प्रोजेक्ट को संगतता के लिए किसी खास माइनर वर्शन की ज़रूरत है

### Egg कब बदलें:
- आप प्रोग्रामिंग भाषा पूरी तरह बदलना चाहते हैं (जैसे Node.js से Python)
- आपको अलग डिफ़ॉल्ट कॉन्फ़िगरेशन या पहले से तय install सेटअप चाहिए

> **चेतावनी:** egg बदलने से रीइंस्टॉल होता है। आम तौर पर फ़ाइलें अपने-आप नहीं हटतीं, लेकिन कुछ फ़ाइलें ओवरराइट हो सकती हैं और असंगत सेटअप बन सकता है। egg बदलने से पहले बैकअप दृढ़ता से अनुशंसित है। देखें [सर्वर सेटिंग](https://daki.cc/hi/wiki/guides/server-settings)।

---

## अक्सर पूछे जाने वाले सवाल

**Discord बॉट के लिए मुझे कौन सा egg इस्तेमाल करना चाहिए?**

Discord.js/JavaScript बॉट के लिए **Node.js** egg, और discord.py/Python बॉट के लिए **Python** egg इस्तेमाल करें।

**अगर मेरी ज़रूरी Docker image सूची में नहीं है तो क्या करें?**

उपलब्ध images egg द्वारा तय होती हैं। अगर आपको जिस वर्शन की ज़रूरत है वह न दिखे, तो सपोर्ट से संपर्क करें — अनुरोध पर अतिरिक्त images उपलब्ध हो सकती हैं।

**मेरी image पर लिखा है 'EOL - no security updates'। मुझे क्या करना चाहिए?**

उस वर्शन की अब उसके डेवलपर देखरेख नहीं करते। आपका सर्वर चलता रहेगा, लेकिन उसे सुरक्षा सुधार नहीं मिलेंगे। Startup टैब में कोई समर्थित वर्शन चुनें (Node.js 22, 24, 26 या Python 3.11 से 3.15), डिपेंडेंसी फिर से इंस्टॉल करें और रीस्टार्ट करें।

**मुझे नवीनतम सुरक्षा पैच कैसे मिलेंगे?**

अपना सर्वर रीस्टार्ट करें। सुधार जारी होने पर Daki Yolks अपने-आप दोबारा बनती हैं, और सर्वर अगली शुरुआत पर नया बिल्ड उठा लेता है।

**क्या Docker image बदलने से मेरी फ़ाइलें मिट जाती हैं?**

नहीं। केवल Docker image (Startup टैब में) बदलने से आपकी फ़ाइलों पर कोई असर नहीं पड़ता। केवल egg (Settings टैब में) बदलने से रीइंस्टॉल होता है।

---

## अगले कदम

- [स्टार्टअप सेटिंग](https://daki.cc/hi/wiki/guides/startup-settings) — अपनी Docker image चुनें और स्टार्टअप कमांड कॉन्फ़िगर करें।
- [सर्वर सेटिंग](https://daki.cc/hi/wiki/guides/server-settings) — egg बदलें या अपना सर्वर रीइंस्टॉल करें।
- [Discord.js बॉट डिप्लॉय करें](https://daki.cc/hi/wiki/guides/deploy-discordjs) — Node.js के लिए शुरू से अंत तक की डिप्लॉयमेंट गाइड।
- [Python बॉट डिप्लॉय करें](https://daki.cc/hi/wiki/guides/deploy-python) — Python के लिए शुरू से अंत तक की डिप्लॉयमेंट गाइड।

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