Разверните первое приложение на сервере с помощью erpc worker
Создайте небольшой HTTP API на Rust с помощью
erpc worker, запустите его на своей машине и разверните на сервере четырьмя командами.Эта страница описывает ERPC CLI
v0.1.0-rc.4 — пререлиз.erpc worker (псевдоним erpc w) компилирует ваше приложение в нативный бинарный файл Linux и запускает его на ERPC VPS, на новом почасовом VPS или на вашем собственном сервере — в усиленном юните systemd, без Docker и без какой-либо среды выполнения между ними.Релиз, который после запуска не прошёл проверку работоспособности, откатывается к предыдущему, а несколько приложений могут работать на одном сервере, каждое на своём порту. Всё, что касается приложения, находится в
erpc.toml в его корне: в этом файле нет ни одного секрета, и его можно закоммитить.Что понадобится
- Аккаунт ERPC, в который выполнен вход на этой машине с помощью
erpc login(Вход и ключи). - ERPC Credit — для нового почасового VPS. Почасовой продукт оплачивается из ERPC Credit, который покупается заранее, а запуск, который кредит не покрывает, отклоняется. Цены — на странице Цены и в ERPC Web Dashboard.
- SSH-ключ на этой машине:
ssh-keygen -t ed25519илиerpc config set ssh_key <path>.pubдля уже имеющегося ключа. - Возможность собирать под Linux. С Mac или Windows понадобятся Rust-таргет для сервера (
rustup target add x86_64-unknown-linux-gnu),zig(brew install zigна macOS) иcargo-zigbuild(cargo install cargo-zigbuild --locked). С машины Linux того же типа, что и сервер (у всех серверов ERPC — x86-64), не нужно ничего, кроме cargo. Без инструментов кросс-сборки приложение собирается собственным тулчейном этой машины, и тогда бинарному файлу нужна та glibc, с которой он был слинкован; её называютbuildиdeploy. С ними приложение собирается для glibc 2.31 и новее.
Развёртывание HelloWorld
HelloWorld — небольшой HTTP API на Rust, которому не нужны ни ключ, ни секрет, ни линия данных. Он отвечает на
GET /, GET /hello/{name} и GET /healthz.bash
initсоздаёт приложение в./hello-worldвместе с егоerpc.toml.runсобирает приложение и запускает его на вашей машине, чтобы сначала можно было вызвать его через curl.deployсобирает его для сервера и развёртывает. Всё, что стоит денег, сначала показывается с почасовой ценой, вашим балансом и тем, на сколько хватит кредита, а в терминале запускается только после ответа «да».apiвызывает API развёрнутого приложения с вашей машины, при этом API остаётся на loopback сервера.
erpc worker check показывает, чего не хватает приложению, а deploy, если чего-то не хватает, отказывается работать ещё до того, как что-либо купить. erpc worker build выполняет только сборку — так можно увидеть, что сборка не проходит, до покупки сервера.Выбор шаблона
erpc worker init спрашивает только одно: что создать; вариант выбирается клавишами со стрелками.- HelloWorld — шаблон, с которого стоит начать.
- HFT и pumpfun-bot пока оба создаются из шаблона pumpfun: это торговый бот для pump.fun (PumpSwap), перенесённый из ValidatorsDAO/solana-stream.
--template hft (или helloworld, pumpfun-bot, или ID шаблона) пропускает выбор, а --name задаёт имя приложения. Без имени приложение называется по выбранному варианту (hello-world, hft-bot, pumpfun-bot). Если каталог с таким именем уже существует, человек, который выбирает вариант, получает -2, -3 и так далее, а скрипт (--yes, --json, нет терминала) получает ошибку. Если спросить некого и --template не указан, создаётся HelloWorld.Торговому боту перед запуском нужны ключ и несколько настроек. Порядок действий:
bash
init выводит этот порядок для созданного приложения. Где хранятся ключ и секреты, описано на странице Ключи и секреты.Выбор сервера
deploy использует первый из этих вариантов:- сервер, который уже указан в
[env.<name>]приложения; --vps <id>— ERPC VPS вашего аккаунта;--new-vps— самый дешёвый почасовой VPS в регионе, ближайшем к этой машине по её часовому поясу (--regionи--planпозволяют выбрать иначе);--host <address>— ваш собственный сервер: Ubuntu или Debian с systemd, nftables,sudoи Python 3 в/usr/bin/python3, к которому подключаются под root или под пользователем с sudo без пароля;- в остальных случаях, в терминале, — список запущенных VPS вашего аккаунта, в конце которого стоит «start a new one».
На вашем собственном сервере брандмауэр воркера отбрасывает все входящие соединения, кроме SSH и порта приложения, поэтому сервер, который обслуживает что-то ещё, для этого не подходит.
Развёртывание без человека за терминалом
У скрипта или агента, например
erpc ai, нет терминала, в котором можно ответить. Два флага позволяют всё равно выполнить работу:bash
--yesотвечает на вопрос о цене каждого почасового продукта, который называет команда (--new-vps,--grpc,--shreds,--unlimited). Он также отвечает на запрос при первом входе на сервер, который erpc ещё не перевёл на вход только по ключу, — новый или указанный через--vps <ID>: erpc один раз входит с паролем сервера, добавляет ваш ключ и отключает вход по паролю. Без--yesи без терминала запуск отклоняется ещё до какой-либо покупки, с кодом завершения 3.- Выбор среди ваших серверов по-прежнему требует человека. Укажите сервер через
--new-vps,--vps <ID>или--host. --prepareделает всё, для чего не нужны ни торговый ключ, ни секрет, и ничего не запускает, не останавливает и не перезапускает. Следующийerpc worker deployв терминале передаёт ключ и секреты и запускает приложение. Торговый ключ читается только для человека за терминалом.
Подключение приложения к gRPC, Shreds и Unlimited RPC
Почасовые линии ERPC пропускают сервер по его адресу и не принимают никакого токена. Каждую линию для сервера запускает свой флаг в
deploy, а приложение получает её endpoint как настройку:- Каждая линия — самая дешёвая в своём семействе, если
--grpc-plan,--shreds-planили--unlimited-planне указывает другую. - Unlimited RPC работает на выделенном сервере, настройка которого занимает до 45 минут. Он обслуживает
sendTransactionи короткий список методов чтения, но неgetProgramAccountsи неgetTokenAccountsByOwner. Его endpoint — обычный HTTP (без TLS), и он пропускает только адрес, внесённый в allowlist.
Линии для запуска на вашей машине
erpc worker run тоже принимает --grpc и --shreds, чтобы можно было опробовать приложение здесь на реальных данных, прежде чем оно попадёт на сервер.- Адрес: линии пропускают публичный IPv4-адрес этой машины, который вы передаёте через
--ip. erpc сам его не определяет. - Покупка: новая линия покупается только в терминале, после того как показана её цена. У
runнет--yes. - Завершение: когда запуск заканчивается, каждая почасовая линия завершается после вопроса.
--keep-linesоставляет их, и они по-прежнему оплачиваются. Если запуск заканчивается иначе (терминал закрыт, повторное нажатие Ctrl-C), линии остаются и оплачиваются. - Цифры: то, что приложение измеряет здесь, включает расстояние от этой машины до линии, поэтому здесь оно работает медленнее, чем то же приложение на сервере рядом с линией.
Дальнейшие шаги
- Импорт приложения: разверните уже имеющееся приложение на любом языке.
- Ключи и секреты: храните торговый ключ и секреты вне диска сервера.
- Брандмауэр и WAF: поставьте публичный API за WAF.
- Статус и оплата: следите за приложением и смотрите, сколько оно стоит в час.






