Distribuisci la tua prima app su un server con erpc worker
Crea una piccola API HTTP in Rust con
erpc worker, eseguila sulla tua macchina e distribuiscila su un server con quattro comandi.Questa pagina descrive ERPC CLI
v0.1.0-rc.4, una versione pre-release.erpc worker (alias erpc w) compila la tua app in un binario Linux nativo e la esegue su un ERPC VPS, su un nuovo VPS orario o su un server tuo, sotto un'unità systemd con hardening, senza Docker e senza alcun runtime nel mezzo.Una release che all'avvio non risulta integra subisce il rollback alla release precedente, e più app possono condividere un server, ciascuna su una porta propria. Tutto ciò che riguarda l'app si trova in
erpc.toml nella sua radice, che non contiene alcun secret e può essere incluso in un commit.Prerequisiti
- Un account ERPC, con l'accesso effettuato su questa macchina tramite
erpc login(Accesso e chiavi). - ERPC Credit, per un nuovo VPS orario. Un prodotto orario si paga con ERPC Credit, acquistato in anticipo, e un avvio che il credito non copre viene rifiutato. I prezzi sono su Prezzi e nella ERPC Web Dashboard.
- Una chiave SSH su questa macchina:
ssh-keygen -t ed25519, oppureerpc config set ssh_key <path>.pubper una chiave che hai già. - Un modo per compilare per Linux. Da un Mac o da Windows, il target Rust del server (
rustup target add x86_64-unknown-linux-gnu),zig(brew install zigsu macOS) ecargo-zigbuild(cargo install cargo-zigbuild --locked). Da una macchina Linux dello stesso tipo del server (x86-64 per ogni server ERPC), non serve altro che cargo. Senza gli strumenti di cross-build, l'app viene compilata con la toolchain di questa macchina, e il binario richiede poi la glibc con cui è stato collegato, chebuildedeployindicano. Con questi strumenti, viene compilata per glibc 2.31 e versioni successive.
Distribuire HelloWorld
HelloWorld è una piccola API HTTP in Rust che non ha bisogno di nessuna chiave, nessun secret e nessuna linea dati. Risponde a
GET /, GET /hello/{name} e GET /healthz.bash
initcrea l'app in./hello-world, con il suoerpc.toml.runcompila l'app e la esegue sulla tua macchina, così puoi prima chiamarla con curl.deployla compila per il server e la distribuisce. Tutto ciò che costa denaro viene mostrato prima, con il prezzo orario, il tuo saldo e quanto dura il credito, e in un terminale parte solo dopo un sì.apichiama l'API dell'app distribuita dalla tua macchina, mentre l'API resta sul loopback del server.
erpc worker check elenca ciò che manca all'app, e deploy si rifiuta di procedere prima di acquistare qualsiasi cosa quando manca qualcosa. erpc worker build esegue solo la compilazione: è il modo per vedere una compilazione fallire prima che venga acquistato un server.Scegliere un template
erpc worker init chiede una sola cosa: che cosa creare, da scegliere con i tasti freccia.- HelloWorld è quello da cui partire.
- HFT e pumpfun-bot sono entrambi creati, per ora, dal template pumpfun: un trading bot per pump.fun (PumpSwap) portato da ValidatorsDAO/solana-stream.
--template hft (oppure helloworld, pumpfun-bot o l'id di un template) salta la selezione, e --name dà il nome all'app. Senza un nome, l'app prende il nome della scelta (hello-world, hft-bot, pumpfun-bot). Quando esiste già una directory con quel nome, una persona che sceglie ottiene -2, -3 e così via, mentre uno script (--yes, --json, nessun terminale) riceve un errore. Senza nessuno a cui chiedere e senza --template, viene creato HelloWorld.Un trading bot ha bisogno di una chiave e di alcune impostazioni prima di essere eseguito. Ecco l'ordine:
bash
init stampa questo ordine per l'app che ha creato. Chiavi e secret spiega dove vengono conservati la chiave e i secret.Scegliere il server
deploy usa la prima di queste opzioni:- il server che
[env.<name>]dell'app indica già; --vps <id>, un ERPC VPS del tuo account;--new-vps, il VPS orario più economico nella regione più vicina a questa macchina in base al suo fuso orario (--regione--planscelgono diversamente);--host <address>, un server tuo: Ubuntu o Debian con systemd, nftables,sudoe Python 3 in/usr/bin/python3, raggiunto come root o come un utente con sudo senza password;- altrimenti, in un terminale, un elenco dei VPS in esecuzione del tuo account, con "start a new one" in fondo.
Su un server tuo, il firewall del worker scarta ogni connessione in entrata tranne SSH e la porta dell'app, quindi un server che serve qualsiasi altra cosa non è quello da usare.
Distribuire senza una persona al terminale
Uno script, o un agente come
erpc ai, non ha un terminale da cui rispondere. Due flag gli permettono di fare comunque il lavoro:bash
--yesrisponde al prezzo di ogni prodotto orario che il comando nomina (--new-vps,--grpc,--shreds,--unlimited). Risponde anche al primo login su un server che erpc non ha ancora reso accessibile solo con chiave, uno nuovo o uno indicato con--vps <ID>: erpc accede una volta con la password del server, inserisce la tua chiave e disattiva i login con password. Senza--yese senza un terminale, un avvio viene rifiutato prima che venga acquistata qualsiasi cosa, con stato di uscita 3.- Scegliere tra i tuoi server richiede ancora una persona. Indica il server con
--new-vps,--vps <ID>o--host. --preparefa tutto ciò che non richiede né la chiave di trading né un secret, e non avvia, arresta né riavvia nulla. Il successivoerpc worker deployin un terminale consegna la chiave e i secret e avvia l'app. La chiave di trading viene letta solo per una persona al terminale.
Collegare la tua app a gRPC, Shreds e Unlimited RPC
Le linee orarie di ERPC ammettono il server in base al suo indirizzo e non accettano alcun token. Ciascuna linea viene avviata per il server da un flag proprio su
deploy, e l'app riceve l'endpoint della linea come impostazione:- Ogni linea è la più economica della sua famiglia, a meno che
--grpc-plan,--shreds-plano--unlimited-plannon ne indichi una. - L'Unlimited RPC gira su un server dedicato che richiede fino a 45 minuti per essere configurato. Serve
sendTransactione un breve elenco di letture, nongetProgramAccountsnégetTokenAccountsByOwner. Il suo endpoint è HTTP semplice (senza TLS) e ammette solo l'indirizzo in whitelist.
Linee per un'esecuzione sulla tua macchina
Anche
erpc worker run accetta --grpc e --shreds, per provare l'app qui con dati reali prima che passi su un server.- L'indirizzo: le linee ammettono l'indirizzo IPv4 pubblico di questa macchina, che passi con
--ip. erpc non lo ricava da solo. - L'acquisto: una nuova linea si acquista solo in un terminale, dopo che ne è stato mostrato il prezzo.
runnon ha--yes. - La chiusura: quando l'esecuzione termina, ogni linea oraria viene terminata dopo una richiesta di conferma.
--keep-linesle mantiene, e l'addebito continua. Se l'esecuzione termina in un altro modo (il terminale chiuso, un secondo Ctrl-C), le linee restano e vengono addebitate. - I numeri: ciò che l'app misura qui include la distanza tra questa macchina e la linea, quindi risulta più lenta della stessa app su un server vicino alla linea.
Prossimi passi
- Importare un'app: distribuisci un'app che hai già, in qualsiasi linguaggio.
- Chiavi e secret: tieni la chiave di trading e i secret lontano dal disco del server.
- Firewall e WAF: metti un'API pubblica dietro un WAF.
- Stato e fatturazione: tieni d'occhio l'app e vedi quanto costa all'ora.






