---
title: "erpc worker से अपना पहला app सर्वर पर deploy करें"
description: "erpc worker से HelloWorld app बनाएँ, उसे अपनी मशीन पर चलाएँ, और किसी ERPC VPS या अपने खुद के सर्वर पर deploy करें।"
canonical: "https://erpc.global/hi/doc/erpc-cli/worker-quickstart/"
locale: "hi"
---

# erpc worker से अपना पहला app सर्वर पर deploy करें

`erpc worker` से Rust में एक छोटा HTTP API बनाएँ, उसे अपनी मशीन पर चलाएँ, और चार कमांड से उसे सर्वर पर deploy करें।

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

`erpc worker` (alias `erpc w`) आपके app को native Linux binary में compile करता है और उसे किसी ERPC VPS, किसी नए प्रति-घंटा VPS, या आपके अपने सर्वर पर, हार्डन की गई systemd यूनिट के तहत चलाता है, बीच में न Docker और न कोई runtime।

जो रिलीज़ हेल्थ चेक पास करते हुए शुरू नहीं होती, उसे पिछली रिलीज़ पर रोलबैक कर दिया जाता है, और कई apps एक सर्वर साझा कर सकते हैं, हर एक अपने अलग पोर्ट पर। App के बारे में सब कुछ उसके root पर मौजूद `erpc.toml` में है, जिसमें कोई secret नहीं होता और जिसे commit किया जा सकता है।

## पूर्व-आवश्यकताएँ

- **एक ERPC account**, जिसमें इस मशीन पर `erpc login` के साथ लॉग इन किया गया हो ([लॉग इन और keys](https://erpc.global/hi/doc/erpc-cli/sign-in-and-keys/))।
- **ERPC Credit**, नए प्रति-घंटा VPS के लिए। प्रति-घंटा product का भुगतान ERPC Credit से होता है, जो पहले से खरीदा जाता है, और जिस start को credit कवर नहीं करता, वह अस्वीकार होता है। कीमतें [मूल्य](https://erpc.global/hi/price/) और [ERPC Web Dashboard](https://dashboard.erpc.global/hi) पर हैं।
- **एक SSH key** इस मशीन पर: `ssh-keygen -t ed25519`, या आपके पास पहले से मौजूद key के लिए `erpc config set ssh_key <path>.pub`।
- **Linux के लिए build करने का कोई तरीका।** Mac या Windows से: सर्वर का Rust target (`rustup target add x86_64-unknown-linux-gnu`), `zig` (macOS पर `brew install zig`) और `cargo-zigbuild` (`cargo install cargo-zigbuild --locked`)। सर्वर जैसी ही किस्म की Linux मशीन से (हर ERPC सर्वर x86-64 है), cargo के अलावा और कुछ नहीं। Cross-build tools के बिना, app इस मशीन के अपने toolchain से build होता है, और तब binary को वही glibc चाहिए जिसके साथ वह link हुआ था, जिसका नाम `build` और `deploy` बताते हैं। उनके साथ, वह glibc 2.31 और उससे नए के लिए build होता है।

## HelloWorld deploy करें

HelloWorld, Rust में एक छोटा HTTP API है जिसे न कोई key चाहिए, न कोई secret और न कोई डेटा लाइन। यह `GET /`, `GET /hello/{name}` और `GET /healthz` का जवाब देता है।

```bash
erpc worker init --template helloworld   # makes ./hello-world
erpc worker run hello-world              # here: curl http://127.0.0.1:3000/
erpc worker deploy hello-world           # your VPS, or a new hourly one (price asked first)
erpc worker api / --dir hello-world      # {"message":"Hello, World!",…} from the server
```

1. `init` app को `./hello-world` में, उसके `erpc.toml` के साथ बनाता है।
2. `run` app को build करता है और आपकी मशीन पर चलाता है, ताकि आप पहले उसे curl से call कर सकें।
3. `deploy` उसे सर्वर के लिए build करता है और deploy करता है। जिस चीज़ पर पैसा लगता है, वह पहले उसके प्रति घंटे के मूल्य, आपके balance और credit कितने समय चलेगा, इनके साथ दिखाई जाती है, और टर्मिनल पर वह सिर्फ़ "हाँ" के बाद शुरू होती है।
4. `api` आपकी मशीन से deploy किए गए app का API call करता है, जबकि API सर्वर के loopback पर ही रहता है।

`erpc worker check` बताता है कि app में क्या कमी है, और कुछ कमी हो तो `deploy` कुछ भी खरीदने से पहले ही अस्वीकार कर देता है। `erpc worker build` सिर्फ़ build चलाता है; सर्वर खरीदे जाने से पहले build की विफलता देखने का यही तरीका है।

## Template चुनें

`erpc worker init` एक ही बात पूछता है: क्या बनाना है, जिसे arrow keys से चुना जाता है।

- **HelloWorld** वह है जिससे शुरुआत करनी चाहिए।
- **HFT** और **pumpfun-bot** फ़िलहाल दोनों pumpfun template से बनते हैं: एक pump.fun (PumpSwap) trading bot, जिसे ValidatorsDAO/solana-stream से port किया गया है।

`--template hft` (या `helloworld`, `pumpfun-bot`, या कोई template id) picker को छोड़ देता है, और `--name` app का नाम रखता है। नाम के बिना, app का नाम चुनाव के अनुसार रखा जाता है (`hello-world`, `hft-bot`, `pumpfun-bot`)। जब उस नाम की directory पहले से मौजूद हो, तो चुनने वाले व्यक्ति को `-2`, `-3` आदि मिलते हैं, और किसी script (`--yes`, `--json`, कोई टर्मिनल नहीं) को error मिलता है। पूछने के लिए कोई न हो और `--template` भी न हो, तो HelloWorld बनाया जाता है।

Trading bot को चलने से पहले एक key और कुछ सेटिंग चाहिए। उसका क्रम:

```bash
erpc login                             # once per machine: the session in 1Password or the keychain
erpc worker init                       # pick with the arrow keys; makes ./<name> with erpc.toml
cd <name>
erpc worker key new                    # the trading key, in 1Password, the keychain or the keystore; prints the public key to fund
erpc worker secret put API_TOKEN --generate          # the bot's own API token, made for you and shown to nobody
erpc worker secret put ERPC_API_KEY --from-account   # the account's RPC key, read from your account (or SOLANA_RPC_ENDPOINT in [vars])
erpc worker check                      # what erpc.toml describes, and what is missing
erpc worker run --grpc --ip <IPV4>     # build and run here, with an hourly gRPC line letting this machine in
erpc worker run --check --grpc --ip <IPV4>   # the same, stopped once healthy
erpc worker deploy --new-vps --grpc    # a new hourly VPS and gRPC line, prices asked first
```

`init` अपने बनाए app के लिए यही क्रम छापता है। Key और secrets कहाँ रखे जाते हैं, यह [keys और secrets](https://erpc.global/hi/doc/erpc-cli/worker-secrets/) में बताया गया है।

## सर्वर चुनें

`deploy` इनमें से पहला इस्तेमाल करता है:

1. वह सर्वर जिसका नाम app का `[env.<name>]` पहले से लेता है;
2. `--vps <id>`, आपके account का कोई ERPC VPS;
3. `--new-vps`, इस मशीन के time zone के हिसाब से सबसे नज़दीकी region में सबसे सस्ता प्रति-घंटा VPS (`--region` और `--plan` से कुछ और चुना जाता है);
4. `--host <address>`, आपका अपना सर्वर: systemd, nftables, `sudo` और `/usr/bin/python3` पर Python 3 वाला Ubuntu या Debian, जिस तक root के रूप में या passwordless sudo वाले user के रूप में पहुँचा जाता है;
5. वरना, टर्मिनल पर, आपके account के चल रहे VPSs की सूची, जिसके अंत में "start a new one" होता है।

अपने खुद के सर्वर पर, worker का फ़ायरवॉल SSH और app के पोर्ट को छोड़कर हर आने वाला कनेक्शन ड्रॉप करता है, इसलिए जो सर्वर कुछ और भी serve करता है, वह इसके लिए सही सर्वर नहीं है।

## टर्मिनल पर किसी व्यक्ति के बिना deploy करें

किसी script के पास, या `erpc ai` जैसे एजेंट के पास, जवाब देने के लिए कोई टर्मिनल नहीं होता। दो flags फिर भी उसे यह काम करने देते हैं:

```bash
erpc worker deploy hello-world --new-vps --yes                     # no key: all the way, unattended
erpc worker deploy pump-sniper --new-vps --grpc --yes --prepare    # a bot: everything but its key
erpc worker deploy pump-sniper                                     # then you, at a terminal: the key, and the start
```

- **`--yes`** कमांड में नामित हर प्रति-घंटा product (`--new-vps`, `--grpc`, `--shreds`, `--unlimited`) के मूल्य का जवाब देता है। यह ऐसे सर्वर पर पहले लॉग इन का भी जवाब देता है जिसे erpc ने अभी तक key-only नहीं बनाया है, चाहे वह नया हो या `--vps <ID>` से नामित: erpc सर्वर के पासवर्ड से एक बार लॉग इन करता है, आपकी key डालता है और पासवर्ड से लॉग इन बंद कर देता है। `--yes` के बिना और टर्मिनल के बिना, start कुछ भी खरीदे जाने से पहले अस्वीकार होता है, एग्ज़िट कोड 3 के साथ।
- **अपने सर्वरों में से चुनने के लिए अब भी किसी व्यक्ति की ज़रूरत होती है।** सर्वर को `--new-vps`, `--vps <ID>` या `--host` से नामित करें।
- **`--prepare`** वह सब करता है जिसके लिए न trading key चाहिए न कोई secret, और न कुछ शुरू करता है, न रोकता है, न restart करता है। टर्मिनल पर अगला `erpc worker deploy` key और secrets सौंपता है और app शुरू करता है। Trading key सिर्फ़ टर्मिनल पर मौजूद व्यक्ति के लिए पढ़ी जाती है।

## अपने app को gRPC, Shreds और Unlimited RPC से जोड़ें

ERPC की प्रति-घंटा लाइनें सर्वर को उसके address से अंदर आने देती हैं और कोई token नहीं लेतीं। हर लाइन `deploy` पर अपने अलग flag से सर्वर के लिए शुरू होती है, और app को उसका endpoint एक सेटिंग के रूप में मिलता है:

| Flag | लाइन | App को मिलता है |
| --- | --- | --- |
| `--grpc` | Geyser gRPC | `GRPC_ENDPOINT` |
| `--shreds` | Shreds (Shredstream gRPC) | `SHREDS_ENDPOINT` |
| `--unlimited` | सर्वर के region में Unlimited RPC | `SOLANA_SEND_RPC_ENDPOINT` |

- हर लाइन अपने परिवार की सबसे सस्ती लाइन होती है, जब तक `--grpc-plan`, `--shreds-plan` या `--unlimited-plan` किसी और का नाम न दे।
- Unlimited RPC एक dedicated सर्वर पर चलता है, जिसे सेट होने में 45 मिनट तक लगते हैं। यह `sendTransaction` और reads की एक छोटी सूची serve करता है, `getProgramAccounts` या `getTokenAccountsByOwner` नहीं। इसका endpoint सादा HTTP है (TLS नहीं) और सिर्फ़ whitelist किए गए address को अंदर आने देता है।

### अपनी मशीन पर run के लिए लाइनें

`erpc worker run` भी `--grpc` और `--shreds` लेता है, ताकि app सर्वर पर जाने से पहले उसे यहाँ असली डेटा पर आज़माया जा सके।

- **Address:** लाइनें इस मशीन के public IPv4 address को अंदर आने देती हैं, जिसे आप `--ip` से देते हैं। erpc इसे खुद नहीं ढूँढता।
- **खरीदना:** नई लाइन सिर्फ़ टर्मिनल पर, उसका मूल्य दिखाए जाने के बाद खरीदी जाती है। `run` में `--yes` नहीं है।
- **समाप्त करना:** जब run समाप्त होता है, तो हर प्रति-घंटा लाइन पूछकर समाप्त की जाती है। `--keep-lines` उन्हें बनाए रखता है, और उनका शुल्क लगता रहता है। अगर run किसी और तरह समाप्त हो (टर्मिनल बंद हो गया, दूसरा Ctrl-C), तो लाइनें बनी रहती हैं और उनका शुल्क लगता है।
- **संख्याएँ:** app यहाँ जो मापता है, उसमें इस मशीन से लाइन तक की दूरी शामिल है, इसलिए यह उसी app से धीमा है जो लाइन के पास किसी सर्वर पर चलता है।

## अगले चरण

- [app इम्पोर्ट करें](https://erpc.global/hi/doc/erpc-cli/worker-import/): पहले से मौजूद अपना app deploy करें, किसी भी भाषा में।
- [keys और secrets](https://erpc.global/hi/doc/erpc-cli/worker-secrets/): trading key और secrets को सर्वर की डिस्क से दूर रखें।
- [फ़ायरवॉल और WAF](https://erpc.global/hi/doc/erpc-cli/worker-firewall-and-waf/): public API को WAF के पीछे रखें।
- [स्थिति और बिलिंग](https://erpc.global/hi/doc/erpc-cli/worker-status-and-billing/): app पर नज़र रखें और देखें कि प्रति घंटे उसकी लागत क्या है।
