Deploy aplikasi pertama Anda ke server dengan erpc worker

Buat HTTP API kecil dengan Rust menggunakan erpc worker, jalankan di mesin Anda, lalu deploy ke server dengan empat perintah.
Halaman ini menjelaskan ERPC CLI v0.1.0-rc.4, versi pra-rilis.
erpc worker (alias erpc w) mengompilasi aplikasi Anda menjadi biner Linux native dan menjalankannya di ERPC VPS, VPS per jam yang baru, atau server milik Anda sendiri, di bawah unit systemd yang diperketat tanpa Docker dan tanpa runtime di antaranya.
Rilis yang tidak berjalan dalam keadaan sehat di-rollback ke rilis sebelumnya, dan beberapa aplikasi dapat berbagi satu server, masing-masing di port-nya sendiri. Semua hal tentang aplikasi ada di erpc.toml di root-nya, yang tidak berisi secret dan dapat di-commit.

Prasyarat

  • Akun ERPC, yang sudah masuk di mesin ini dengan erpc login (Masuk dan kunci).
  • ERPC Credit, untuk VPS per jam yang baru. Produk per jam dibayar dari ERPC Credit, yang dibeli terlebih dahulu, dan aktivasi yang biayanya tidak tercukupi oleh kredit akan ditolak. Harga tercantum di Harga dan di ERPC Web Dashboard.
  • Kunci SSH di mesin ini: ssh-keygen -t ed25519, atau erpc config set ssh_key <path>.pub untuk kunci yang sudah Anda miliki.
  • Cara mem-build untuk Linux. Dari Mac atau Windows: target Rust untuk server (rustup target add x86_64-unknown-linux-gnu), zig (brew install zig di macOS), dan cargo-zigbuild (cargo install cargo-zigbuild --locked). Dari mesin Linux yang sejenis dengan server (x86-64 untuk setiap server ERPC), cukup cargo saja. Tanpa tool cross-build, aplikasi di-build dengan toolchain milik mesin ini sendiri, dan biner tersebut dengan begitu memerlukan glibc yang dipakai saat linking, yang disebutkan oleh build dan deploy. Dengan tool tersebut, aplikasi di-build untuk glibc 2.31 ke atas.

Deploy HelloWorld

HelloWorld adalah HTTP API kecil dengan Rust yang tidak memerlukan kunci, secret, maupun line data. Aplikasi ini menjawab GET /, GET /hello/{name}, dan 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 membuat aplikasi di ./hello-world, beserta erpc.toml miliknya.
  2. run mem-build aplikasi dan menjalankannya di mesin Anda, sehingga Anda dapat memanggilnya dengan curl terlebih dahulu.
  3. deploy mem-build aplikasi untuk server lalu men-deploy-nya. Apa pun yang memerlukan biaya ditampilkan terlebih dahulu beserta harga per jam, saldo Anda, dan berapa lama kredit akan bertahan, dan di terminal prosesnya baru dimulai setelah jawaban "ya".
  4. api memanggil API aplikasi yang sudah di-deploy dari mesin Anda, sementara API tetap berada di loopback server.
erpc worker check menampilkan apa yang masih kurang pada aplikasi, dan deploy menolak sebelum membeli apa pun jika ada yang kurang. erpc worker build hanya menjalankan build, yaitu cara untuk melihat build gagal sebelum server dibeli.

Pilih template

erpc worker init menanyakan satu hal: apa yang akan dibuat, dipilih dengan tombol panah.
  • HelloWorld adalah template untuk memulai.
  • HFT dan pumpfun-bot untuk saat ini sama-sama dibuat dari template pumpfun: bot trading pump.fun (PumpSwap) yang di-port dari ValidatorsDAO/solana-stream.
--template hft (atau helloworld, pumpfun-bot, atau id template) melewati menu pilihan, dan --name memberi nama aplikasi. Tanpa nama, aplikasi dinamai sesuai pilihan (hello-world, hft-bot, pumpfun-bot). Jika direktori dengan nama tersebut sudah ada, orang yang memilih mendapatkan -2, -3, dan seterusnya, sedangkan skrip (--yes, --json, tanpa terminal) mendapatkan error. Jika tidak ada orang yang dapat ditanya dan tidak ada --template, yang dibuat adalah HelloWorld.
Bot trading memerlukan kunci dan beberapa pengaturan sebelum dapat berjalan. Urutannya:
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 mencetak urutan ini untuk aplikasi yang dibuatnya. Kunci dan secret menjelaskan di mana kunci dan secret disimpan.

Pilih server

deploy memakai yang pertama dari daftar berikut:
  1. server yang sudah disebut oleh [env.<name>] milik aplikasi;
  2. --vps <id>, ERPC VPS milik akun Anda;
  3. --new-vps, VPS per jam termurah di region yang paling dekat dengan mesin ini berdasarkan zona waktunya (--region dan --plan memilih yang lain);
  4. --host <address>, server milik Anda sendiri: Ubuntu atau Debian dengan systemd, nftables, sudo, dan Python 3 di /usr/bin/python3, yang diakses sebagai root atau sebagai pengguna dengan sudo tanpa kata sandi;
  5. selain itu, di terminal, daftar VPS akun Anda yang sedang berjalan, dengan "start a new one" di bagian akhir.
Di server milik Anda sendiri, firewall worker men-drop setiap koneksi masuk kecuali SSH dan port aplikasi, jadi server yang melayani hal lain bukan server yang tepat untuk dipakai.

Deploy tanpa orang di terminal

Skrip, atau agen seperti erpc ai, tidak memiliki terminal untuk menjawab. Dua flag memungkinkannya tetap menyelesaikan pekerjaan tersebut:
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 menjawab harga setiap produk per jam yang disebut oleh perintah (--new-vps, --grpc, --shreds, --unlimited). Flag ini juga menjawab login pertama ke server yang belum diatur erpc agar hanya dapat diakses dengan kunci, baik server baru maupun server yang disebut dengan --vps <ID>: erpc masuk sekali dengan kata sandi server, memasang kunci Anda, lalu menonaktifkan login dengan kata sandi. Tanpa --yes dan tanpa terminal, aktivasi ditolak sebelum apa pun dibeli, dengan status keluar 3.
  • Memilih di antara server Anda tetap memerlukan orang. Sebutkan server dengan --new-vps, --vps <ID>, atau --host.
  • --prepare melakukan semua hal yang tidak memerlukan kunci trading maupun secret, dan tidak memulai, menghentikan, atau me-restart apa pun. erpc worker deploy berikutnya di terminal menyerahkan kunci dan secret, lalu menjalankan aplikasi. Kunci trading hanya dibaca untuk orang yang berada di terminal.

Hubungkan aplikasi Anda ke gRPC, Shreds, dan Unlimited RPC

Line per jam ERPC menerima server berdasarkan alamatnya dan tidak menerima token. Setiap line diaktifkan untuk server dengan satu flag pada deploy, dan aplikasi menerima endpoint line tersebut sebagai pengaturan:
FlagLineYang diterima aplikasi
--grpcGeyser gRPCGRPC_ENDPOINT
--shredsShreds (Shredstream gRPC)SHREDS_ENDPOINT
--unlimitedUnlimited RPC di region serverSOLANA_SEND_RPC_ENDPOINT
  • Setiap line adalah yang termurah dalam kelompoknya, kecuali --grpc-plan, --shreds-plan, atau --unlimited-plan menyebut salah satunya.
  • Unlimited RPC berjalan di server dedicated yang memerlukan waktu hingga 45 menit untuk disiapkan. Server ini melayani sendTransaction dan sejumlah kecil method baca, bukan getProgramAccounts atau getTokenAccountsByOwner. Endpoint-nya adalah HTTP biasa (tanpa TLS) dan hanya menerima alamat yang di-whitelist.

Line untuk menjalankan aplikasi di mesin Anda

erpc worker run juga menerima --grpc dan --shreds, untuk mencoba aplikasi di sini dengan data nyata sebelum aplikasi dipindahkan ke server.
  • Alamat: line menerima alamat IPv4 publik mesin ini, yang Anda berikan dengan --ip. erpc tidak mencarinya sendiri.
  • Pembelian: line baru hanya dibeli di terminal, setelah harganya ditampilkan. run tidak memiliki --yes.
  • Mengakhiri: saat aplikasi yang dijalankan berhenti, setiap line per jam diakhiri setelah Anda ditanya. --keep-lines mempertahankannya, dan line tersebut tetap ditagih. Jika proses tersebut berakhir dengan cara lain (terminal ditutup, Ctrl-C kedua), line tetap ada dan tetap ditagih.
  • Angka: apa yang diukur aplikasi di sini mencakup jarak dari mesin ini ke line, sehingga hasilnya lebih lambat daripada aplikasi yang sama di server yang dekat dengan line tersebut.

Langkah Selanjutnya