# एनवायरनमेंट वेरिएबल

> .env फ़ाइल का इस्तेमाल करके Daki Hosting पर अपनी ऐप के लिए एनवायरनमेंट वेरिएबल कैसे कॉन्फ़िगर करें।

एनवायरनमेंट वेरिएबल आपको कॉन्फ़िगरेशन मान — जैसे Discord बॉट टोकन या API key — सोर्स कोड में हार्डकोड किए बिना अपनी ऐप तक पहुँचाने देते हैं। Daki Hosting पर अनुशंसित तरीका है कि Portal के file manager या SFTP से सीधे अपने सर्वर पर एक **`.env` फ़ाइल** बनाएँ।

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

- एनवायरनमेंट वेरिएबल क्या हैं और वे क्यों मायने रखते हैं
- अपने सर्वर पर `.env` फ़ाइल कैसे बनाएँ
- Node.js और Python में `.env` के मान कैसे लोड करें
- सीक्रेट को सुरक्षित रखने के सर्वोत्तम तरीके

---

## एनवायरनमेंट वेरिएबल क्या हैं?

एनवायरनमेंट वेरिएबल की-वैल्यू जोड़े होते हैं, जिन्हें आपकी चलती ऐप अपने एनवायरनमेंट से पढ़ सकती है। ये इन कामों का मानक तरीका हैं:

- संवेदनशील मानों (टोकन, API keys, पासवर्ड) को कोड से अलग रखना
- सोर्स फ़ाइलों में बदलाव या दोबारा डिप्लॉय किए बिना कॉन्फ़िगरेशन बदलना
- सीक्रेट को वर्शन कंट्रोल में कमिट होने से रोकना

---

## `.env` फ़ाइल बनाना

Daki पर एनवायरनमेंट वेरिएबल मैनेज करने का सबसे सरल और भरोसेमंद तरीका है कि अपने सर्वर पर एक `.env` फ़ाइल बनाएँ। यह आप दो तरीकों से कर सकते हैं:

### विकल्प 1: File Manager का इस्तेमाल (त्वरित बदलाव)

1. Portal ([portal.daki.cc](https://portal.daki.cc)) में अपना सर्वर खोलें।
2. **Files** टैब पर जाएँ।
3. **New File** पर क्लिक करें और उसका नाम `.env` रखें।
4. फ़ाइल पर क्लिक करके उसे वेब एडिटर में खोलें और अपने वेरिएबल जोड़ें:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   PORT=3000
   DATABASE_URL=your_db_connection_string
   ```
5. **Save** पर क्लिक करें।
6. अपना सर्वर रीस्टार्ट करें।

### विकल्प 2: SFTP का इस्तेमाल (शुरुआती सेटअप के लिए अनुशंसित)

**Settings** टैब में मौजूद क्रेडेंशियल से SFTP द्वारा अपने सर्वर से कनेक्ट करें और अपनी स्थानीय मशीन से सीधे अपनी `.env` फ़ाइल अपलोड करें। SFTP सेटअप के निर्देशों के लिए देखें [File Manager](https://daki.cc/hi/wiki/guides/file-manager)।

> **चेतावनी:** अपनी `.env` फ़ाइल को कभी किसी सार्वजनिक Git रिपॉज़िटरी में कमिट न करें। सीक्रेट के अनजाने में उजागर होने से बचने के लिए `.env` को अपनी `.gitignore` फ़ाइल में जोड़ें।

---

## अपनी ऐप में `.env` के मान लोड करना

ऐप `.env` फ़ाइलें अपने-आप नहीं पढ़तीं — उन्हें एनवायरनमेंट में लोड करने के लिए एक लाइब्रेरी चाहिए।

**Node.js (dotenv)**

पैकेज इंस्टॉल करें (इसे अपनी `package.json` में डिपेंडेंसी के रूप में जोड़ें):
```json
{
  "dependencies": {
    "dotenv": "^16.0.0"
  }
}
```
इसे अपनी एंट्री फ़ाइल की सबसे ऊपर वाली लाइन में लोड करें:
```js
require('dotenv').config();

const token = process.env.BOT_TOKEN;
const port  = process.env.PORT || 3000;
```

**Python (python-dotenv)**

`python-dotenv` को अपनी `requirements.txt` में जोड़ें:
```
python-dotenv
```
इसे अपनी एंट्री फ़ाइल के ऊपर लोड करें:
```python
from dotenv import load_dotenv
import os

load_dotenv()

token = os.environ.get("BOT_TOKEN")
port  = int(os.environ.get("PORT", 3000))
```

---

## `.env` फ़ाइल का फ़ॉर्मेट

`.env` फ़ाइल की हर लाइन `KEY=VALUE` फ़ॉर्मेट में होती है:

```

# Comments start with a hash

BOT_TOKEN=your_token_here

API_KEY=some_api_key

DB_HOST=localhost

DB_PORT=5432

DEBUG=false

```
- Keys आम तौर पर अंडरस्कोर के साथ बड़े अक्षरों में होती हैं।
- मानों को कोटेशन की ज़रूरत नहीं होती, लेकिन कोटेशन समर्थित हैं।
- `#` से शुरू होने वाली लाइनें टिप्पणियाँ होती हैं और अनदेखी की जाती हैं।

---

## सर्वोत्तम तरीके

- अपने सोर्स कोड में **टोकन या सीक्रेट कभी हार्डकोड न करें**, खासकर अगर आपका कोड GitHub पर है।
- **`.env` को अपनी `.gitignore` में जोड़ें**, ताकि वह कभी गलती से कमिट न हो।
- **अपनी `.env` फ़ाइल सर्वर पर बनाएँ**, स्थानीय रूप से नहीं — या स्थानीय `.env` को SFTP से अपलोड करें, जो वर्शन कंट्रोल से बाहर रखी गई हो।
- `.env` फ़ाइल बनाने या बदलने के बाद **अपना सर्वर रीस्टार्ट करें**।
- ऐसे **स्पष्ट की नाम** चुनें जो आपके कॉन्फ़िगरेशन को खुद समझाएँ।

---

## अगले कदम

- [स्टार्टअप सेटिंग](https://daki.cc/hi/wiki/guides/startup-settings) — अपनी install command, startup command और Docker image कॉन्फ़िगर करें।
- [Discord.js बॉट डिप्लॉय करें](https://daki.cc/hi/wiki/guides/deploy-discordjs) — टोकन सेटअप सहित पूरी डिप्लॉयमेंट गाइड।
- [Python बॉट डिप्लॉय करें](https://daki.cc/hi/wiki/guides/deploy-python) — टोकन सेटअप सहित पूरी डिप्लॉयमेंट गाइड।

---
Source: https://daki.cc/hi/wiki/guides/environment-variables
