---
title: "Despliega una aplicación que ya tienes con erpc worker import"
description: "erpc worker import lee el directorio de una aplicación y escribe su erpc.toml; un paquete Cargo o binario Linux en cualquier lenguaje se despliega sin cambios."
canonical: "https://erpc.global/es/doc/erpc-cli/worker-import/"
locale: "es"
---

# 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 directorio | Qué hace `import` con ello |
| --- | --- |
| `.env.example` y archivos de ejemplo similares | Cada 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 |
| `.env` | Solo se leen los nombres, excepto un número de puerto |
| `PORT`, `API_PORT`, el `EXPOSE` de un Dockerfile | `run.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 datos | Se omiten en `[vars]`: los fija la opción de la línea en `deploy` |
| `wallet.json`, `id.json`, `*keypair.json` | Se 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 compose | No 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

- [Claves y secretos](https://erpc.global/es/doc/erpc-cli/worker-secrets/): guarda los ajustes que `import` retuvo y la clave de trading.
- [Firewall y WAF](https://erpc.global/es/doc/erpc-cli/worker-firewall-and-waf/): elige quién puede llegar a la aplicación.
- [La guía del worker](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/worker.md): todos los archivos que lee `import` y las formas de credencial que busca.
