---
title: "erpc worker import से अपना मौजूदा app deploy करें"
description: "erpc worker import app की directory पढ़कर उसका erpc.toml लिखता है, ताकि Cargo package या किसी भी भाषा का Linux binary बिना code बदले deploy हो।"
canonical: "https://erpc.global/hi/doc/erpc-cli/worker-import/"
locale: "hi"
---

# erpc worker import से अपना मौजूदा app deploy करें

`erpc worker import` आपके पास पहले से मौजूद app को जैसा है वैसा ही ले लेता है। यह app का `erpc.toml` लिखता है और उसके code में कुछ नहीं बदलता।

यह पेज ERPC CLI `v0.1.0-rc.4` के बारे में है, जो एक प्री-रिलीज़ है।

## इम्पोर्ट और deploy करें

App कोई bot हो सकता है जो आज systemd या Docker के तहत चलता है, या किसी दूसरी भाषा में लिखी कोई service। `import` app की directory पढ़ता है और वह `erpc.toml` लिखता है जिसका वर्णन वह directory करती है। App में और कुछ नहीं लिखा जाता, उसमें कुछ भी चलाया नहीं जाता, और उसका code नहीं बदला जाता। erpc app को अपनी सूची में जोड़ता है, जैसा `init` करता है।

```bash
cd my-bot                                   # a Cargo package
erpc worker import                          # writes erpc.toml from what is there
erpc worker check                           # what it describes, and what is missing
erpc worker deploy                          # your VPS, or a new hourly one

cd my-go-service && make linux              # any other toolchain: build the Linux binary your way
erpc worker import --binary dist/service --port 8080 --health /healthz
erpc worker deploy
```

- **Cargo package** `cargo build --release` से build होता है, जैसे `init` से बना app। App का नाम package के नाम पर रखा जाता है, जब तक `--name` कुछ और न कहे, और package में कई binaries हों तो `--bin` binary चुनता है। Workspace root अस्वीकार होता है: `import` को package की ओर point करें।
- **कहीं भी, किसी भी भाषा में build किया गया Linux binary** `--binary <PATH>` के साथ उसी तरह deploy होता है, और जैसा है वैसा ही भेजा जाता है। erpc उसका header पढ़ता है और ऐसा binary अस्वीकार करता है जिसे सर्वर नहीं चला सकता: macOS या Windows binary, script, shared library, बीच में कटी हुई फ़ाइल, या `build.target` से अलग architecture। Binary static होना चाहिए, या glibc से link हो और उसका loader सामान्य path पर हो। यह app की एक फ़ाइल है: उस नाम का कोई link जो app की directory से बाहर ले जाता है, अस्वीकार होता है। अनुपयोगी binary होने पर deploy सर्वर खरीदे जाने से पहले रुक जाता है। जिस deploy में कोई बदलाव जाना है, उससे पहले binary फिर से build करें।

## import क्या पढ़ता है

| Directory में | `import` उसके साथ क्या करता है |
| --- | --- |
| `.env.example` और ऐसी ही example फ़ाइलें | हर नाम, जब वह सेटिंग बन सकता हो, एक सेटिंग बनता है: ऐसा नाम जो capital letters, अंकों और `_` से बना (और अंक से शुरू न होने वाला) नाम नहीं है, या ऐसा नाम जिसे erpc या सर्वर खुद सेट करता है (`ERPC_WORKER_…`, `LD_…`), छोड़ दिया जाता है। सादा नाम example की value के साथ `[vars]` में जाता है। जो नाम से secret जैसा लगता है, या जिसकी value में कोई credential है, उसके लिए वह कमांड बताई जाती है जो उसे रखती है, और उसकी value copy नहीं की जाती |
| `.env` | सिर्फ़ नाम पढ़े जाते हैं, पोर्ट नंबर को छोड़कर |
| `PORT`, `API_PORT`, किसी Dockerfile का `EXPOSE` | `run.port`, जब तक `--port` इसे न दे। `--health <PATH>` उस पोर्ट पर हेल्थ चेक जोड़ता है |
| `GRPC_ENDPOINT`, `SHREDS_ENDPOINT` और डेटा लाइन से मिलने वाली दूसरी सेटिंग | `[vars]` से बाहर छोड़ी जाती हैं: `deploy` पर लाइन का flag उन्हें सेट करता है |
| `wallet.json`, `id.json`, `*keypair.json` | इनका नाम बताया जाता है, साथ में `erpc worker key import <FILE> --wipe`, जो key को वहाँ रखता है जहाँ से erpc worker उसे पढ़ता है और फ़ाइल को wipe करता है |
| Redis या PostgreSQL वाली compose फ़ाइल | `[services]`, ताकि `deploy` उन्हें सर्वर पर लगाए |
| `Dockerfile`, खुद compose फ़ाइल | app चलाने के लिए इस्तेमाल नहीं होतीं: erpc worker binary को खुद चलाता है, हार्डन की गई systemd यूनिट के तहत |

`import --chain` बताता है कि app किस चेन के लिए है, default `solana`।

## import directory कैसे पढ़ता है

हो सकता है directory आपने एक मिनट पहले clone की हो, इसलिए `import` उसे सावधानी से पढ़ता है।

- **`erpc.toml` नया बनाया जाता है।** उस path पर कुछ भी मौजूद हो, तो `import` अस्वीकार करता है: यह कभी किसी फ़ाइल के ऊपर या किसी link के ज़रिए नहीं लिखता।
- **यह directory के अंदर की regular फ़ाइलें पढ़ता है, हर एक 1 MiB तक।** Directory से बाहर ले जाने वाला link, pipe, device, इससे बड़ी फ़ाइल और ऐसी फ़ाइल जो UTF-8 नहीं है, नहीं पढ़ी जाती, और हर एक के बारे में बताया जाता है।
- **जिस value को यह secret मानता है, वह copy नहीं की जाती।** यह credentials को उनके आकार से ढूँढता है, इसलिए यह जाँच एक जाल है, सबूत नहीं: ऐसे आकार का secret जिसे यह नहीं पहचानता, किसी भी दूसरी value की तरह copy हो जाता है। `erpc.toml` को commit करने से पहले पढ़ना आपके ज़िम्मे है।
- **`erpc worker check` उतनी तरह की चीज़ों की चेतावनी नहीं देता जितनी `import` रोक लेता है।** `[vars]` के तहत, path में key वाले RPC URL के बारे में या recovery phrase के बारे में यह कुछ नहीं कहता: उन्हें `erpc worker secret put` से रखें।

## सर्वर पर आपके app को क्या मिलता है

- **सेटिंग environment variables के रूप में आती हैं**, `[vars]` और `[secrets]` दोनों। सर्वर पर कोई `.env` नहीं होता, और जो app dotenv library से `.env` फ़ाइल पढ़ता है, वह काम करता रहता है।
- **उसकी अपनी directory read-only है।** वह जो फ़ाइलें लिखता है, वे उस directory के नीचे जाती हैं जिसका नाम `ERPC_WORKER_STATE_DIR` देता है (यही उसका `HOME` भी है), जिसे deploy बनाए रखता है और `erpc worker backup` जिसका बैकअप लेता है।
- **Trading key किसी फ़ाइल में नहीं, pipe पर आती है:** `ERPC_WORKER_KEY_FD` जिस file descriptor का नाम देता है, उस पर 64 bytes, एक बार, जब app शुरू होता है, और public key `ERPC_WORKER_PUBKEY` में। जो app key फ़ाइल पढ़ता है, उसे वही एक read बदलना होता है; pumpfun template का `src/wallet.rs` इसे दिखाता है।
- **App में एक binary और वे फ़ाइलें होती हैं जिनकी सूची `run.files` में है।** Run time पर यह जो कुछ और खोलता है, वह उस सूची में होना चाहिए।

## अगले चरण

- [keys और secrets](https://erpc.global/hi/doc/erpc-cli/worker-secrets/): जो सेटिंग `import` ने रोक लीं, उन्हें और trading key को रखें।
- [फ़ायरवॉल और WAF](https://erpc.global/hi/doc/erpc-cli/worker-firewall-and-waf/): चुनें कि app तक कौन पहुँच सकता है।
- [worker गाइड](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/worker.md): हर फ़ाइल जिसे `import` पढ़ता है, और credentials के वे आकार जिन्हें यह ढूँढता है।
