Triển khai ứng dụng đầu tiên lên server bằng erpc worker
Tạo một HTTP API nhỏ bằng Rust với
erpc worker, chạy nó trên máy của bạn và triển khai lên một server bằng bốn lệnh.Trang này mô tả ERPC CLI
v0.1.0-rc.4, một bản pre-release.erpc worker (alias erpc w) biên dịch ứng dụng của bạn thành một binary Linux native và chạy nó trên một ERPC VPS, một VPS theo giờ mới, hoặc một server của riêng bạn, dưới một unit systemd đã được gia cố, không có Docker và không có runtime nào ở giữa.Một release không khởi động ở trạng thái khỏe mạnh sẽ được rollback về release trước đó, và nhiều ứng dụng có thể dùng chung một server, mỗi ứng dụng trên một cổng riêng. Mọi thứ về ứng dụng nằm trong
erpc.toml ở thư mục gốc của nó; tệp này không chứa secret nào và có thể được commit.Điều kiện tiên quyết
- Một tài khoản ERPC, đã đăng nhập trên máy này bằng
erpc login(Đăng nhập và khóa). - ERPC Credit, cho một VPS theo giờ mới. Sản phẩm theo giờ được thanh toán bằng ERPC Credit mua trước, và một lần kích hoạt mà credit không đủ chi trả sẽ bị từ chối. Giá được niêm yết tại Bảng giá và trên ERPC Web Dashboard.
- Một khóa SSH trên máy này:
ssh-keygen -t ed25519, hoặcerpc config set ssh_key <path>.pubcho một khóa bạn đã có. - Một cách để build cho Linux. Từ Mac hoặc Windows: target Rust cho server (
rustup target add x86_64-unknown-linux-gnu),zig(brew install zigtrên macOS) vàcargo-zigbuild(cargo install cargo-zigbuild --locked). Từ một máy Linux cùng loại với server (x86-64 với mọi server ERPC): không cần gì ngoài cargo. Nếu không có các công cụ cross-build, ứng dụng được build bằng toolchain của chính máy này, và khi đó binary cần phiên bản glibc đã dùng khi liên kết nó, phiên bản màbuildvàdeploysẽ nêu ra. Khi có các công cụ này, ứng dụng được build cho glibc 2.31 trở lên.
Triển khai HelloWorld
HelloWorld là một HTTP API nhỏ bằng Rust, không cần khóa, secret hay đường truyền dữ liệu nào. Nó trả lời
GET /, GET /hello/{name} và GET /healthz.bash
inittạo ứng dụng trong./hello-world, kèmerpc.tomlcủa nó.runbuild ứng dụng và chạy nó trên máy của bạn, để bạn có thể gọi thử bằng curl trước.deploybuild ứng dụng cho server và triển khai nó. Mọi thứ tốn tiền đều được hiển thị trước, kèm giá theo giờ, số dư của bạn và thời gian credit còn đủ dùng, và ở terminal, nó chỉ bắt đầu sau khi bạn đồng ý.apigọi API của ứng dụng đã triển khai từ máy của bạn, trong khi API vẫn nằm trên loopback của server.
erpc worker check liệt kê những gì ứng dụng còn thiếu, và deploy từ chối trước khi mua bất cứ thứ gì nếu còn thiếu. erpc worker build chỉ chạy bước build, là cách để thấy build thất bại trước khi mua server.Chọn template
erpc worker init hỏi một điều: tạo gì, chọn bằng các phím mũi tên.- HelloWorld là template nên dùng để bắt đầu.
- HFT và pumpfun-bot hiện tại đều được tạo từ template pumpfun: một trading bot cho pump.fun (PumpSwap) được port từ ValidatorsDAO/solana-stream.
--template hft (hoặc helloworld, pumpfun-bot, hoặc một template id) bỏ qua bước chọn, và --name đặt tên cho ứng dụng. Nếu không có tên, ứng dụng được đặt tên theo lựa chọn (hello-world, hft-bot, pumpfun-bot). Khi đã có thư mục mang tên đó, người đang chọn sẽ nhận -2, -3, v.v., còn script (--yes, --json, không có terminal) sẽ nhận lỗi. Khi không có ai để hỏi và không có --template, ứng dụng được tạo là HelloWorld.Một trading bot cần một khóa và vài thiết lập trước khi chạy. Thứ tự như sau:
bash
init in ra thứ tự này cho ứng dụng mà nó vừa tạo. Khóa và secret trình bày nơi lưu khóa và các secret.Chọn server
deploy dùng lựa chọn đầu tiên áp dụng được trong số sau:- server mà
[env.<name>]của ứng dụng đã chỉ định; --vps <id>, một ERPC VPS trong tài khoản của bạn;--new-vps, VPS theo giờ rẻ nhất ở khu vực gần máy này nhất, xác định theo múi giờ của máy (--regionvà--planchọn khác);--host <address>, một server của riêng bạn: Ubuntu hoặc Debian có systemd, nftables,sudovà Python 3 tại/usr/bin/python3, truy cập bằng root hoặc một người dùng có sudo không cần mật khẩu;- nếu không có các mục trên, ở terminal: danh sách các VPS đang chạy trong tài khoản của bạn, với "start a new one" ở cuối.
Trên một server của riêng bạn, tường lửa của worker loại bỏ mọi kết nối đến, trừ SSH và cổng của ứng dụng, nên một server đang phục vụ bất kỳ thứ gì khác không phải là server nên dùng.
Triển khai khi không có người ở terminal
Một script, hoặc một agent như
erpc ai, không có terminal để trả lời. Hai flag giúp nó vẫn làm được việc:bash
--yestrả lời câu hỏi về giá của từng sản phẩm theo giờ mà lệnh nêu tên (--new-vps,--grpc,--shreds,--unlimited). Nó cũng trả lời cho lần đăng nhập đầu tiên vào một server mà erpc chưa chuyển sang chỉ đăng nhập bằng khóa, dù là server mới hay server được chỉ định bằng--vps <ID>: erpc đăng nhập một lần bằng mật khẩu của server, đặt khóa của bạn vào và tắt đăng nhập bằng mật khẩu. Không có--yesvà không có terminal, một lần kích hoạt sẽ bị từ chối trước khi mua bất cứ thứ gì, với trạng thái thoát 3.- Việc chọn giữa các server của bạn vẫn cần có người. Hãy chỉ định server bằng
--new-vps,--vps <ID>hoặc--host. --preparelàm mọi việc không cần đến khóa trading lẫn secret, và không khởi động, dừng hay khởi động lại thứ gì. Lầnerpc worker deploytiếp theo ở terminal sẽ giao khóa và các secret rồi khởi động ứng dụng. Khóa trading chỉ được đọc khi có người ở terminal.
Kết nối ứng dụng với gRPC, Shreds và Unlimited RPC
Các đường truyền theo giờ của ERPC chấp nhận server theo địa chỉ của nó và không nhận token. Mỗi đường truyền được kích hoạt cho server bằng một flag trên
deploy, và ứng dụng nhận endpoint của đường truyền dưới dạng một thiết lập:- Mỗi đường truyền là gói rẻ nhất trong nhóm của nó, trừ khi
--grpc-plan,--shreds-planhoặc--unlimited-planchỉ định một gói. - Unlimited RPC chạy trên một server chuyên dụng, mất tối đa 45 phút để chuẩn bị. Nó phục vụ
sendTransactionvà một danh sách ngắn các lệnh đọc, không phục vụgetProgramAccountshaygetTokenAccountsByOwner. Endpoint của nó là HTTP thuần (không TLS) và chỉ chấp nhận địa chỉ đã được whitelist.
Đường truyền cho một lần chạy trên máy của bạn
erpc worker run cũng nhận --grpc và --shreds, để thử ứng dụng tại đây với dữ liệu thật trước khi đưa nó lên server.- Địa chỉ: các đường truyền chấp nhận địa chỉ IPv4 công khai của máy này, mà bạn truyền vào bằng
--ip. erpc không tự tra cứu địa chỉ này. - Mua: một đường truyền mới chỉ được mua ở terminal, sau khi giá của nó được hiển thị.
runkhông có--yes. - Kết thúc: khi lần chạy kết thúc, từng đường truyền theo giờ được kết thúc sau khi hỏi.
--keep-linesgiữ chúng lại, và chúng vẫn bị tính phí. Nếu lần chạy kết thúc theo cách khác (terminal bị đóng, Ctrl-C lần thứ hai), các đường truyền vẫn còn và bị tính phí. - Số liệu: những gì ứng dụng đo được tại đây bao gồm cả khoảng cách từ máy này đến đường truyền, nên chậm hơn so với cùng ứng dụng đó chạy trên một server ở gần đường truyền.
Bước tiếp theo
- Nhập ứng dụng: Triển khai một ứng dụng bạn đã có, viết bằng bất kỳ ngôn ngữ nào.
- Khóa và secret: Giữ khóa trading và các secret ngoài ổ đĩa của server.
- Tường lửa và WAF: Đặt một API công khai phía sau WAF.
- Trạng thái và thanh toán: Theo dõi ứng dụng và xem chi phí theo giờ.






