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)। - ERPC Credit, नए प्रति-घंटा VPS के लिए। प्रति-घंटा product का भुगतान ERPC Credit से होता है, जो पहले से खरीदा जाता है, और जिस start को credit कवर नहीं करता, वह अस्वीकार होता है। कीमतें मूल्य और ERPC Web Dashboard पर हैं।
- एक 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
initapp को./hello-worldमें, उसकेerpc.tomlके साथ बनाता है।runapp को build करता है और आपकी मशीन पर चलाता है, ताकि आप पहले उसे curl से call कर सकें।deployउसे सर्वर के लिए build करता है और deploy करता है। जिस चीज़ पर पैसा लगता है, वह पहले उसके प्रति घंटे के मूल्य, आपके balance और credit कितने समय चलेगा, इनके साथ दिखाई जाती है, और टर्मिनल पर वह सिर्फ़ "हाँ" के बाद शुरू होती है।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
init अपने बनाए app के लिए यही क्रम छापता है। Key और secrets कहाँ रखे जाते हैं, यह keys और secrets में बताया गया है।सर्वर चुनें
deploy इनमें से पहला इस्तेमाल करता है:- वह सर्वर जिसका नाम app का
[env.<name>]पहले से लेता है; --vps <id>, आपके account का कोई ERPC VPS;--new-vps, इस मशीन के time zone के हिसाब से सबसे नज़दीकी region में सबसे सस्ता प्रति-घंटा VPS (--regionऔर--planसे कुछ और चुना जाता है);--host <address>, आपका अपना सर्वर: systemd, nftables,sudoऔर/usr/bin/python3पर Python 3 वाला Ubuntu या Debian, जिस तक root के रूप में या passwordless sudo वाले user के रूप में पहुँचा जाता है;- वरना, टर्मिनल पर, आपके account के चल रहे VPSs की सूची, जिसके अंत में "start a new one" होता है।
अपने खुद के सर्वर पर, worker का फ़ायरवॉल SSH और app के पोर्ट को छोड़कर हर आने वाला कनेक्शन ड्रॉप करता है, इसलिए जो सर्वर कुछ और भी serve करता है, वह इसके लिए सही सर्वर नहीं है।
टर्मिनल पर किसी व्यक्ति के बिना deploy करें
किसी script के पास, या
erpc ai जैसे एजेंट के पास, जवाब देने के लिए कोई टर्मिनल नहीं होता। दो flags फिर भी उसे यह काम करने देते हैं:bash
--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 deploykey और secrets सौंपता है और app शुरू करता है। Trading key सिर्फ़ टर्मिनल पर मौजूद व्यक्ति के लिए पढ़ी जाती है।
अपने app को gRPC, Shreds और Unlimited RPC से जोड़ें
ERPC की प्रति-घंटा लाइनें सर्वर को उसके address से अंदर आने देती हैं और कोई token नहीं लेतीं। हर लाइन
deploy पर अपने अलग flag से सर्वर के लिए शुरू होती है, और app को उसका 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 इम्पोर्ट करें: पहले से मौजूद अपना app deploy करें, किसी भी भाषा में।
- keys और secrets: trading key और secrets को सर्वर की डिस्क से दूर रखें।
- फ़ायरवॉल और WAF: public API को WAF के पीछे रखें।
- स्थिति और बिलिंग: app पर नज़र रखें और देखें कि प्रति घंटे उसकी लागत क्या है।






