---
title: "Uw eerste app uitrollen naar een server met erpc worker"
description: "Maak de HelloWorld-app met erpc worker, draai die op uw machine en rol die uit naar een ERPC VPS of een eigen server."
canonical: "https://erpc.global/nl/doc/erpc-cli/worker-quickstart/"
locale: "nl"
---

# Uw eerste app uitrollen naar een server met erpc worker

Maak met `erpc worker` een kleine HTTP API in Rust, draai die op uw machine en rol die met vier commando's uit naar een server.

Deze pagina beschrijft ERPC CLI `v0.1.0-rc.4`, een pre-release.

`erpc worker` (alias `erpc w`) compileert uw app tot een native Linux-binary en draait die op een ERPC VPS, een nieuwe VPS per uur of een eigen server, onder een geharde systemd-unit, zonder Docker en zonder runtime ertussen.

Een release die niet gezond opkomt, wordt teruggedraaid naar de vorige release, en meerdere apps kunnen één server delen, elk op een eigen poort. Alles over de app staat in `erpc.toml` in de root van de app; dat bestand bevat geen secret en kan worden gecommit.

## Vereisten

- **Een ERPC-account**, op deze machine ingelogd met `erpc login` ([Inloggen en sleutels](https://erpc.global/nl/doc/erpc-cli/sign-in-and-keys/)).
- **ERPC Credit**, voor een nieuwe VPS per uur. Een product per uur wordt betaald met ERPC Credit, dat u vooraf koopt, en een start die het credit niet dekt, wordt geweigerd. De prijzen staan op de pagina [Prijzen](https://erpc.global/nl/price/) en in het [ERPC Web Dashboard](https://dashboard.erpc.global/nl).
- **Een SSH-sleutel** op deze machine: `ssh-keygen -t ed25519`, of `erpc config set ssh_key <path>.pub` voor een sleutel die u al hebt.
- **Een manier om voor Linux te bouwen.** Vanaf een Mac of Windows: het Rust-target voor de server (`rustup target add x86_64-unknown-linux-gnu`), `zig` (`brew install zig` op macOS) en `cargo-zigbuild` (`cargo install cargo-zigbuild --locked`). Vanaf een Linux-machine van dezelfde soort als de server (x86-64 voor elke ERPC-server) is niets meer nodig dan cargo. Zonder de cross-buildtools wordt de app gebouwd met de eigen toolchain van deze machine, en heeft de binary daarna de glibc nodig waartegen hij is gelinkt; `build` en `deploy` noemen die. Met die tools wordt hij gebouwd voor glibc 2.31 en hoger.

## HelloWorld uitrollen

HelloWorld is een kleine HTTP API in Rust die geen sleutel, geen secret en geen datalijn nodig heeft. De API beantwoordt `GET /`, `GET /hello/{name}` en `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` maakt de app in `./hello-world`, met de bijbehorende `erpc.toml`.
2. `run` bouwt de app en draait die op uw machine, zodat u hem eerst met curl kunt aanroepen.
3. `deploy` bouwt de app voor de server en rolt hem uit. Alles wat geld kost, wordt eerst getoond met de uurprijs, uw saldo en hoe lang het credit toereikend is, en aan een terminal begint het pas na een ja.
4. `api` roept vanaf uw machine de API van de uitgerolde app aan, terwijl de API op de loopback van de server blijft.

`erpc worker check` toont wat er aan de app ontbreekt, en `deploy` weigert voordat het iets koopt als er iets ontbreekt. `erpc worker build` voert alleen de build uit; zo ziet u een build mislukken voordat er een server wordt gekocht.

## Een sjabloon kiezen

`erpc worker init` vraagt één ding: wat u wilt maken, te kiezen met de pijltjestoetsen.

- **HelloWorld** is het sjabloon om mee te beginnen.
- **HFT** en **pumpfun-bot** worden voorlopig allebei gemaakt van het pumpfun-sjabloon: een trading bot voor pump.fun (PumpSwap), overgezet van ValidatorsDAO/solana-stream.

`--template hft` (of `helloworld`, `pumpfun-bot` of een sjabloon-id) slaat de keuzelijst over, en `--name` geeft de app een naam. Zonder naam krijgt de app de naam van de keuze (`hello-world`, `hft-bot`, `pumpfun-bot`). Als er al een map met die naam bestaat, krijgt iemand die kiest `-2`, `-3` enzovoort, en krijgt een script (`--yes`, `--json`, geen terminal) een fout. Als er niemand is om te vragen en er geen `--template` is, wordt HelloWorld gemaakt.

Een trading bot heeft een sleutel en een paar instellingen nodig voordat hij draait. De volgorde:

```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` drukt deze volgorde af voor de app die het heeft gemaakt. [Sleutels en secrets](https://erpc.global/nl/doc/erpc-cli/worker-secrets/) beschrijft waar de sleutel en de secrets worden bewaard.

## De server kiezen

`deploy` gebruikt de eerste van deze mogelijkheden:

1. de server die de `[env.<name>]` van de app al noemt;
2. `--vps <id>`, een ERPC VPS van uw account;
3. `--new-vps`, de goedkoopste VPS per uur in de regio die op basis van de tijdzone het dichtst bij deze machine ligt (`--region` en `--plan` kiezen iets anders);
4. `--host <address>`, een eigen server: Ubuntu of Debian met systemd, nftables, `sudo` en Python 3 op `/usr/bin/python3`, met toegang als root of als een gebruiker met sudo zonder wachtwoord;
5. anders, aan een terminal, een lijst met de draaiende VPS'en van uw account, met "start a new one" aan het eind.

Op een eigen server verwerpt de firewall van de worker elke inkomende verbinding behalve SSH en de poort van de app, dus een server die iets anders bedient, is niet de juiste keuze.

## Uitrollen zonder iemand aan de terminal

Een script, of een agent zoals `erpc ai`, heeft geen terminal om op te antwoorden. Met twee opties kan het het werk toch doen:

```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`** beantwoordt de vraag naar de prijs van elk product per uur dat het commando noemt (`--new-vps`, `--grpc`, `--shreds`, `--unlimited`). Het beantwoordt ook de eerste login op een server waarop erpc inloggen nog niet tot alleen sleutels heeft beperkt, een nieuwe of een die met `--vps <ID>` is genoemd: erpc logt één keer in met het wachtwoord van de server, zet uw sleutel erop en schakelt inloggen met een wachtwoord uit. Zonder `--yes` en zonder terminal wordt een start geweigerd voordat er iets wordt gekocht, met exitstatus 3.
- **Kiezen tussen uw servers vereist nog steeds een persoon.** Noem de server met `--new-vps`, `--vps <ID>` of `--host`.
- **`--prepare`** doet alles waarvoor noch de tradingsleutel noch een secret nodig is, en start, stopt en herstart niets. De volgende `erpc worker deploy` aan een terminal draagt de sleutel en de secrets over en start de app. De tradingsleutel wordt alleen gelezen voor iemand aan de terminal.

## Uw app verbinden met gRPC, Shreds en Unlimited RPC

De lijnen per uur van ERPC laten de server toe op basis van zijn adres en accepteren geen token. Elke lijn start voor de server met een eigen optie op `deploy`, en de app krijgt het endpoint als instelling:

| Optie | Lijn | Wat de app krijgt |
| --- | --- | --- |
| `--grpc` | Geyser gRPC | `GRPC_ENDPOINT` |
| `--shreds` | Shreds (Shredstream gRPC) | `SHREDS_ENDPOINT` |
| `--unlimited` | Unlimited RPC in de regio van de server | `SOLANA_SEND_RPC_ENDPOINT` |

- Elke lijn is de goedkoopste van zijn familie, tenzij `--grpc-plan`, `--shreds-plan` of `--unlimited-plan` er een noemt.
- De Unlimited RPC draait op een dedicated server waarvan de inrichting tot 45 minuten duurt. Die bedient `sendTransaction` en een korte lijst met leesaanroepen, niet `getProgramAccounts` of `getTokenAccountsByOwner`. Het endpoint gebruikt gewoon HTTP (geen TLS) en laat alleen het adres op de whitelist toe.

### Lijnen voor een run op uw machine

`erpc worker run` accepteert ook `--grpc` en `--shreds`, om de app hier met echte data te proberen voordat hij naar een server gaat.

- **Het adres:** de lijnen laten het publieke IPv4-adres van deze machine toe, dat u met `--ip` meegeeft. erpc zoekt het niet zelf op.
- **Kopen:** een nieuwe lijn wordt alleen aan een terminal gekocht, nadat de prijs ervan is getoond. `run` heeft geen `--yes`.
- **Beëindigen:** als de run eindigt, wordt elke lijn per uur na een bevestigingsvraag beëindigd. `--keep-lines` houdt ze aan, en ze worden nog steeds in rekening gebracht. Als de run op een andere manier eindigt (de terminal gesloten, een tweede Ctrl-C), blijven de lijnen bestaan en worden ze in rekening gebracht.
- **De cijfers:** wat de app hier meet, omvat de afstand van deze machine tot de lijn, dus is de app hier trager dan dezelfde app op een server dicht bij de lijn.

## Volgende stappen

- [Een app importeren](https://erpc.global/nl/doc/erpc-cli/worker-import/): rol een app uit die u al hebt, in elke taal.
- [Sleutels en secrets](https://erpc.global/nl/doc/erpc-cli/worker-secrets/): houd een tradingsleutel en secrets weg van de schijf van de server.
- [Firewall en WAF](https://erpc.global/nl/doc/erpc-cli/worker-firewall-and-waf/): zet een publieke API achter een WAF.
- [Status en facturering](https://erpc.global/nl/doc/erpc-cli/worker-status-and-billing/): houd de app in de gaten en zie wat die per uur kost.
