Despliega una aplicación que ya tienes con erpc worker import

erpc worker import incorpora una aplicación que ya tienes, tal como está. Escribe el erpc.toml de la aplicación y no cambia nada de su código.
Esta página describe ERPC CLI v0.1.0-rc.4, una versión preliminar.

Importar y desplegar

La aplicación puede ser un bot que hoy se ejecuta con systemd o Docker, o un servicio en otro lenguaje. import lee el directorio de la aplicación y escribe el erpc.toml que ese directorio describe. No se escribe nada más en la aplicación, no se ejecuta nada de ella y su código no se cambia. erpc añade la aplicación a su propia lista, como hace init.
bash
cd my-bot                                   # a Cargo package
erpc worker import                          # writes erpc.toml from what is there
erpc worker check                           # what it describes, and what is missing
erpc worker deploy                          # your VPS, or a new hourly one

cd my-go-service && make linux              # any other toolchain: build the Linux binary your way
erpc worker import --binary dist/service --port 8080 --health /healthz
erpc worker deploy
  • Un paquete Cargo se compila con cargo build --release, igual que una aplicación creada con init. La aplicación recibe el nombre del paquete salvo que --name indique otro, y --bin elige el binario cuando el paquete tiene varios. La raíz de un workspace se rechaza: apunta import al paquete.
  • Un binario Linux compilado en cualquier sitio, en cualquier lenguaje, se despliega del mismo modo con --binary <PATH>, y se envía tal cual. erpc lee su cabecera y rechaza uno que un servidor no puede ejecutar: un binario de macOS o Windows, un script, una biblioteca compartida, un archivo truncado o uno de una arquitectura distinta de build.target. El binario debe ser estático, o estar enlazado contra glibc con su cargador en la ruta habitual. Es un archivo de la aplicación: se rechaza un enlace con ese nombre que lleve fuera del directorio de la aplicación. Un despliegue se detiene ante un binario inutilizable antes de comprar un servidor. Vuelve a compilar el binario antes de un despliegue que deba incluir un cambio.

Qué lee import

En el directorioQué hace import con ello
.env.example y archivos de ejemplo similaresCada nombre se convierte en un ajuste cuando puede serlo: se omite un nombre que no esté formado por mayúsculas, dígitos y _ (sin empezar por un dígito), o uno que erpc o el servidor fijan por sí mismos (ERPC_WORKER_…, LD_…). Uno simple va a [vars] con el valor del ejemplo. Uno que parece un secreto por su nombre, o cuyo valor contiene una credencial, se indica junto con el comando que lo guarda, y su valor no se copia
.envSolo se leen los nombres, excepto un número de puerto
PORT, API_PORT, el EXPOSE de un Dockerfilerun.port, salvo que lo indique --port. --health <PATH> añade la comprobación de salud en ese puerto
GRPC_ENDPOINT, SHREDS_ENDPOINT y otros ajustes que proporciona una línea de datosSe omiten en [vars]: los fija la opción de la línea en deploy
wallet.json, id.json, *keypair.jsonSe indican, con erpc worker key import <FILE> --wipe, que guarda la clave donde erpc worker la lee y borra el archivo
Un archivo compose con Redis o PostgreSQL[services], para que deploy los instale en el servidor
Dockerfile, el propio archivo composeNo se usan para ejecutar la aplicación: erpc worker ejecuta el binario por sí mismo, bajo una unidad systemd reforzada
import --chain indica la cadena para la que es la aplicación, solana por defecto.

Cómo lee import un directorio

El directorio puede ser uno que clonaste hace un minuto, así que import lo lee con cuidado.
  • erpc.toml se crea desde cero. Cuando hay algo en esa ruta, import se niega: nunca escribe sobre un archivo ni a través de un enlace.
  • Lee archivos normales dentro del directorio, de hasta 1 MiB cada uno. No se leen un enlace que lleve fuera del directorio, una tubería, un dispositivo, un archivo más grande ni un archivo que no esté en UTF-8, y se informa de cada uno.
  • No se copia ningún valor que tome por un secreto. Busca credenciales por su forma, así que la comprobación es una red, no una prueba: un secreto con una forma que no conoce se copia como cualquier otro valor. Te corresponde a ti leer erpc.toml antes de incluirlo en un commit.
  • erpc worker check avisa de menos tipos que los que import retiene. No dice nada de una URL de RPC con una clave en su ruta, ni de una frase de recuperación, en [vars]: guárdalas con erpc worker secret put.

Qué encuentra tu aplicación en el servidor

  • Los ajustes llegan como variables de entorno, tanto [vars] como [secrets]. No hay ningún .env en el servidor, y una aplicación que lee un archivo .env con una biblioteca dotenv sigue funcionando.
  • Su propio directorio es de solo lectura. Los archivos que escribe van bajo el directorio que indica ERPC_WORKER_STATE_DIR (también su HOME), que un despliegue conserva y del que erpc worker backup hace una copia de seguridad.
  • Una clave de trading llega por una tubería, no en un archivo: 64 bytes en el descriptor de archivo que indica ERPC_WORKER_KEY_FD, una sola vez, cuando se inicia la aplicación, con la clave pública en ERPC_WORKER_PUBKEY. Una aplicación que lee un archivo de clave tiene que cambiar esa única lectura; el src/wallet.rs de la plantilla pumpfun muestra cómo.
  • Es un binario y los archivos que enumera run.files. Cualquier otra cosa que abra en tiempo de ejecución tiene que estar en esa lista.

Próximos pasos