---
title: "Despliega tu primera aplicación en un servidor con erpc worker"
description: "Crea la aplicación HelloWorld con erpc worker, ejecútala en tu máquina y despliégala en un ERPC VPS o en un servidor propio."
canonical: "https://erpc.global/es/doc/erpc-cli/worker-quickstart/"
locale: "es"
---

# Despliega tu primera aplicación en un servidor con erpc worker

Crea una pequeña API HTTP en Rust con `erpc worker`, ejecútala en tu máquina y despliégala en un servidor con cuatro comandos.

Esta página describe ERPC CLI `v0.1.0-rc.4`, una versión preliminar.

`erpc worker` (alias `erpc w`) compila tu aplicación en un binario nativo de Linux y la ejecuta en un ERPC VPS, en uno nuevo por horas o en un servidor propio, bajo una unidad systemd reforzada, sin Docker ni ningún runtime de por medio.

Una release que no arranca sana se revierte a la anterior, y varias aplicaciones pueden compartir un servidor, cada una en su propio puerto. Todo lo relativo a la aplicación está en `erpc.toml`, en su raíz; ese archivo no contiene ningún secreto y se puede incluir en un commit.

## Requisitos previos

- **Una cuenta de ERPC**, con la sesión iniciada en esta máquina mediante `erpc login` ([Inicio de sesión y claves](https://erpc.global/es/doc/erpc-cli/sign-in-and-keys/)).
- **ERPC Credit**, para un VPS nuevo por horas. Un producto por horas se paga con ERPC Credit, que se compra por adelantado, y se rechaza un inicio que el crédito no cubre. Los precios están en la página [Precios](https://erpc.global/es/price/) y en el [ERPC Web Dashboard](https://dashboard.erpc.global/es).
- **Una clave SSH** en esta máquina: `ssh-keygen -t ed25519`, o `erpc config set ssh_key <path>.pub` para una clave que ya tengas.
- **Una forma de compilar para Linux.** Desde un Mac o Windows, el target de Rust para el servidor (`rustup target add x86_64-unknown-linux-gnu`), `zig` (`brew install zig` en macOS) y `cargo-zigbuild` (`cargo install cargo-zigbuild --locked`). Desde una máquina Linux del mismo tipo que el servidor (x86-64 en todos los servidores de ERPC), basta con cargo. Sin las herramientas de compilación cruzada, la aplicación se compila con la toolchain de esta máquina, y el binario necesita entonces la glibc con la que se enlazó, que `build` y `deploy` indican. Con ellas, se compila para glibc 2.31 o superior.

## Desplegar HelloWorld

HelloWorld es una pequeña API HTTP en Rust que no necesita ninguna clave, ningún secreto ni ninguna línea de datos. Responde a `GET /`, `GET /hello/{name}` y `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` crea la aplicación en `./hello-world`, con su `erpc.toml`.
2. `run` compila la aplicación y la ejecuta en tu máquina, para que puedas llamarla primero con curl.
3. `deploy` la compila para el servidor y la despliega. Todo lo que cuesta dinero se muestra antes con su precio por hora, tu saldo y cuánto dura el crédito, y en un terminal solo se inicia tras un sí.
4. `api` invoca desde tu máquina la API de la aplicación desplegada, mientras la API sigue en el loopback del servidor.

`erpc worker check` enumera lo que le falta a la aplicación, y `deploy` se niega antes de comprar nada cuando falta algo. `erpc worker build` ejecuta solo la compilación: así puedes ver fallar una compilación antes de comprar un servidor.

## Elegir una plantilla

`erpc worker init` pregunta una sola cosa: qué crear, que eliges con las flechas.

- **HelloWorld** es la plantilla con la que empezar.
- **HFT** y **pumpfun-bot** se crean, por ahora, a partir de la plantilla pumpfun: un bot de trading de pump.fun (PumpSwap) portado desde ValidatorsDAO/solana-stream.

`--template hft` (o `helloworld`, `pumpfun-bot`, o un id de plantilla) omite el selector, y `--name` da nombre a la aplicación. Sin nombre, la aplicación recibe el nombre de la opción elegida (`hello-world`, `hft-bot`, `pumpfun-bot`). Cuando ya existe un directorio con ese nombre, una persona que elige obtiene `-2`, `-3`, etc., y un script (`--yes`, `--json`, sin terminal) obtiene un error. Sin nadie a quien preguntar y sin `--template`, se crea HelloWorld.

Un bot de trading necesita una clave y algunos ajustes antes de ejecutarse. Este es su orden:

```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` imprime este orden para la aplicación que ha creado. [Claves y secretos](https://erpc.global/es/doc/erpc-cli/worker-secrets/) explica dónde se guardan la clave y los secretos.

## Elegir el servidor

`deploy` usa la primera de estas opciones:

1. el servidor que ya indica el `[env.<name>]` de la aplicación;
2. `--vps <id>`, un ERPC VPS de tu cuenta;
3. `--new-vps`, el VPS por horas más barato de la región más cercana a esta máquina según su zona horaria (`--region` y `--plan` eligen otra cosa);
4. `--host <address>`, un servidor propio: Ubuntu o Debian con systemd, nftables, `sudo` y Python 3 en `/usr/bin/python3`, al que se accede como root o como un usuario con sudo sin contraseña;
5. si no, en un terminal, una lista de los VPS en ejecución de tu cuenta, con "start a new one" al final.

En un servidor propio, el firewall del worker descarta todas las conexiones entrantes excepto SSH y el puerto de la aplicación, así que un servidor que sirve cualquier otra cosa no es el adecuado.

## Desplegar sin una persona ante el terminal

Un script, o un agente como `erpc ai`, no tiene un terminal en el que responder. Dos opciones le permiten hacer el trabajo de todos modos:

```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`** responde a la pregunta del precio de cada producto por horas que indica el comando (`--new-vps`, `--grpc`, `--shreds`, `--unlimited`). También responde al primer inicio de sesión en un servidor que erpc aún no ha dejado con acceso solo por clave, ya sea uno nuevo o uno indicado con `--vps <ID>`: erpc inicia sesión una vez con la contraseña del servidor, añade tu clave y desactiva el inicio de sesión con contraseña. Sin `--yes` y sin terminal, un inicio se rechaza antes de comprar nada, con el estado de salida 3.
- **Elegir entre tus servidores sigue necesitando a una persona.** Indica el servidor con `--new-vps`, `--vps <ID>` o `--host`.
- **`--prepare`** hace todo lo que no necesita ni la clave de trading ni un secreto, y no inicia, detiene ni reinicia nada. El siguiente `erpc worker deploy` en un terminal entrega la clave y los secretos e inicia la aplicación. La clave de trading solo se lee para una persona ante el terminal.

## Conectar tu aplicación a gRPC, Shreds y Unlimited RPC

Las líneas por horas de ERPC admiten al servidor por su dirección y no aceptan ningún token. Cada línea se inicia para el servidor con su propia opción de `deploy`, y la aplicación recibe su endpoint como un ajuste:

| Opción | Línea | La aplicación recibe |
| --- | --- | --- |
| `--grpc` | Geyser gRPC | `GRPC_ENDPOINT` |
| `--shreds` | Shreds (Shredstream gRPC) | `SHREDS_ENDPOINT` |
| `--unlimited` | Unlimited RPC en la región del servidor | `SOLANA_SEND_RPC_ENDPOINT` |

- Cada línea es la más barata de su familia, salvo que `--grpc-plan`, `--shreds-plan` o `--unlimited-plan` indiquen otra.
- El Unlimited RPC se ejecuta en un servidor dedicado que tarda hasta 45 minutos en configurarse. Sirve `sendTransaction` y una lista corta de lecturas, no `getProgramAccounts` ni `getTokenAccountsByOwner`. Su endpoint es HTTP plano (sin TLS) y solo admite la dirección en la lista blanca.

### Líneas para una ejecución en tu máquina

`erpc worker run` también acepta `--grpc` y `--shreds`, para probar aquí la aplicación con datos reales antes de que pase a un servidor.

- **La dirección:** las líneas admiten la dirección IPv4 pública de esta máquina, que indicas con `--ip`. erpc no la busca por sí mismo.
- **La compra:** una línea nueva solo se compra en un terminal, después de que se muestre su precio. `run` no tiene `--yes`.
- **El final:** cuando termina la ejecución, cada línea por horas se finaliza tras preguntar. `--keep-lines` las mantiene, y se siguen cobrando. Si la ejecución termina de cualquier otra forma (se cierra el terminal, un segundo Ctrl-C), las líneas se mantienen y se cobran.
- **Las cifras:** lo que la aplicación mide aquí incluye la distancia de esta máquina a la línea, así que la aplicación es aquí más lenta que en un servidor cercano a la línea.

## Próximos pasos

- [Importar una aplicación](https://erpc.global/es/doc/erpc-cli/worker-import/): despliega una aplicación que ya tienes, en cualquier lenguaje.
- [Claves y secretos](https://erpc.global/es/doc/erpc-cli/worker-secrets/): mantén una clave de trading y los secretos fuera del disco del servidor.
- [Firewall y WAF](https://erpc.global/es/doc/erpc-cli/worker-firewall-and-waf/): pon una API pública detrás de un WAF.
- [Estado y facturación](https://erpc.global/es/doc/erpc-cli/worker-status-and-billing/): supervisa la aplicación y consulta cuánto cuesta por hora.
