---
title: "Deploy aplikasi pertama Anda ke server dengan erpc worker"
description: "Buat aplikasi HelloWorld dengan erpc worker, jalankan di mesin Anda, lalu deploy ke ERPC VPS atau server milik Anda sendiri."
canonical: "https://erpc.global/id/doc/erpc-cli/worker-quickstart/"
locale: "id"
---

# Deploy aplikasi pertama Anda ke server dengan erpc worker

Buat HTTP API kecil dengan Rust menggunakan `erpc worker`, jalankan di mesin Anda, lalu deploy ke server dengan empat perintah.

Halaman ini menjelaskan ERPC CLI `v0.1.0-rc.4`, versi pra-rilis.

`erpc worker` (alias `erpc w`) mengompilasi aplikasi Anda menjadi biner Linux native dan menjalankannya di ERPC VPS, VPS per jam yang baru, atau server milik Anda sendiri, di bawah unit systemd yang diperketat tanpa Docker dan tanpa runtime di antaranya.

Rilis yang tidak berjalan dalam keadaan sehat di-rollback ke rilis sebelumnya, dan beberapa aplikasi dapat berbagi satu server, masing-masing di port-nya sendiri. Semua hal tentang aplikasi ada di `erpc.toml` di root-nya, yang tidak berisi secret dan dapat di-commit.

## Prasyarat

- **Akun ERPC**, yang sudah masuk di mesin ini dengan `erpc login` ([Masuk dan kunci](https://erpc.global/id/doc/erpc-cli/sign-in-and-keys/)).
- **ERPC Credit**, untuk VPS per jam yang baru. Produk per jam dibayar dari ERPC Credit, yang dibeli terlebih dahulu, dan aktivasi yang biayanya tidak tercukupi oleh kredit akan ditolak. Harga tercantum di [Harga](https://erpc.global/id/price/) dan di [ERPC Web Dashboard](https://dashboard.erpc.global/id).
- **Kunci SSH** di mesin ini: `ssh-keygen -t ed25519`, atau `erpc config set ssh_key <path>.pub` untuk kunci yang sudah Anda miliki.
- **Cara mem-build untuk Linux.** Dari Mac atau Windows: target Rust untuk server (`rustup target add x86_64-unknown-linux-gnu`), `zig` (`brew install zig` di macOS), dan `cargo-zigbuild` (`cargo install cargo-zigbuild --locked`). Dari mesin Linux yang sejenis dengan server (x86-64 untuk setiap server ERPC), cukup cargo saja. Tanpa tool cross-build, aplikasi di-build dengan toolchain milik mesin ini sendiri, dan biner tersebut dengan begitu memerlukan glibc yang dipakai saat linking, yang disebutkan oleh `build` dan `deploy`. Dengan tool tersebut, aplikasi di-build untuk glibc 2.31 ke atas.

## Deploy HelloWorld

HelloWorld adalah HTTP API kecil dengan Rust yang tidak memerlukan kunci, secret, maupun line data. Aplikasi ini menjawab `GET /`, `GET /hello/{name}`, dan `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` membuat aplikasi di `./hello-world`, beserta `erpc.toml` miliknya.
2. `run` mem-build aplikasi dan menjalankannya di mesin Anda, sehingga Anda dapat memanggilnya dengan curl terlebih dahulu.
3. `deploy` mem-build aplikasi untuk server lalu men-deploy-nya. Apa pun yang memerlukan biaya ditampilkan terlebih dahulu beserta harga per jam, saldo Anda, dan berapa lama kredit akan bertahan, dan di terminal prosesnya baru dimulai setelah jawaban "ya".
4. `api` memanggil API aplikasi yang sudah di-deploy dari mesin Anda, sementara API tetap berada di loopback server.

`erpc worker check` menampilkan apa yang masih kurang pada aplikasi, dan `deploy` menolak sebelum membeli apa pun jika ada yang kurang. `erpc worker build` hanya menjalankan build, yaitu cara untuk melihat build gagal sebelum server dibeli.

## Pilih template

`erpc worker init` menanyakan satu hal: apa yang akan dibuat, dipilih dengan tombol panah.

- **HelloWorld** adalah template untuk memulai.
- **HFT** dan **pumpfun-bot** untuk saat ini sama-sama dibuat dari template pumpfun: bot trading pump.fun (PumpSwap) yang di-port dari ValidatorsDAO/solana-stream.

`--template hft` (atau `helloworld`, `pumpfun-bot`, atau id template) melewati menu pilihan, dan `--name` memberi nama aplikasi. Tanpa nama, aplikasi dinamai sesuai pilihan (`hello-world`, `hft-bot`, `pumpfun-bot`). Jika direktori dengan nama tersebut sudah ada, orang yang memilih mendapatkan `-2`, `-3`, dan seterusnya, sedangkan skrip (`--yes`, `--json`, tanpa terminal) mendapatkan error. Jika tidak ada orang yang dapat ditanya dan tidak ada `--template`, yang dibuat adalah HelloWorld.

Bot trading memerlukan kunci dan beberapa pengaturan sebelum dapat berjalan. Urutannya:

```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` mencetak urutan ini untuk aplikasi yang dibuatnya. [Kunci dan secret](https://erpc.global/id/doc/erpc-cli/worker-secrets/) menjelaskan di mana kunci dan secret disimpan.

## Pilih server

`deploy` memakai yang pertama dari daftar berikut:

1. server yang sudah disebut oleh `[env.<name>]` milik aplikasi;
2. `--vps <id>`, ERPC VPS milik akun Anda;
3. `--new-vps`, VPS per jam termurah di region yang paling dekat dengan mesin ini berdasarkan zona waktunya (`--region` dan `--plan` memilih yang lain);
4. `--host <address>`, server milik Anda sendiri: Ubuntu atau Debian dengan systemd, nftables, `sudo`, dan Python 3 di `/usr/bin/python3`, yang diakses sebagai root atau sebagai pengguna dengan sudo tanpa kata sandi;
5. selain itu, di terminal, daftar VPS akun Anda yang sedang berjalan, dengan "start a new one" di bagian akhir.

Di server milik Anda sendiri, firewall worker men-drop setiap koneksi masuk kecuali SSH dan port aplikasi, jadi server yang melayani hal lain bukan server yang tepat untuk dipakai.

## Deploy tanpa orang di terminal

Skrip, atau agen seperti `erpc ai`, tidak memiliki terminal untuk menjawab. Dua flag memungkinkannya tetap menyelesaikan pekerjaan tersebut:

```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`** menjawab harga setiap produk per jam yang disebut oleh perintah (`--new-vps`, `--grpc`, `--shreds`, `--unlimited`). Flag ini juga menjawab login pertama ke server yang belum diatur erpc agar hanya dapat diakses dengan kunci, baik server baru maupun server yang disebut dengan `--vps <ID>`: erpc masuk sekali dengan kata sandi server, memasang kunci Anda, lalu menonaktifkan login dengan kata sandi. Tanpa `--yes` dan tanpa terminal, aktivasi ditolak sebelum apa pun dibeli, dengan status keluar 3.
- **Memilih di antara server Anda tetap memerlukan orang.** Sebutkan server dengan `--new-vps`, `--vps <ID>`, atau `--host`.
- **`--prepare`** melakukan semua hal yang tidak memerlukan kunci trading maupun secret, dan tidak memulai, menghentikan, atau me-restart apa pun. `erpc worker deploy` berikutnya di terminal menyerahkan kunci dan secret, lalu menjalankan aplikasi. Kunci trading hanya dibaca untuk orang yang berada di terminal.

## Hubungkan aplikasi Anda ke gRPC, Shreds, dan Unlimited RPC

Line per jam ERPC menerima server berdasarkan alamatnya dan tidak menerima token. Setiap line diaktifkan untuk server dengan satu flag pada `deploy`, dan aplikasi menerima endpoint line tersebut sebagai pengaturan:

| Flag | Line | Yang diterima aplikasi |
| --- | --- | --- |
| `--grpc` | Geyser gRPC | `GRPC_ENDPOINT` |
| `--shreds` | Shreds (Shredstream gRPC) | `SHREDS_ENDPOINT` |
| `--unlimited` | Unlimited RPC di region server | `SOLANA_SEND_RPC_ENDPOINT` |

- Setiap line adalah yang termurah dalam kelompoknya, kecuali `--grpc-plan`, `--shreds-plan`, atau `--unlimited-plan` menyebut salah satunya.
- Unlimited RPC berjalan di server dedicated yang memerlukan waktu hingga 45 menit untuk disiapkan. Server ini melayani `sendTransaction` dan sejumlah kecil method baca, bukan `getProgramAccounts` atau `getTokenAccountsByOwner`. Endpoint-nya adalah HTTP biasa (tanpa TLS) dan hanya menerima alamat yang di-whitelist.

### Line untuk menjalankan aplikasi di mesin Anda

`erpc worker run` juga menerima `--grpc` dan `--shreds`, untuk mencoba aplikasi di sini dengan data nyata sebelum aplikasi dipindahkan ke server.

- **Alamat:** line menerima alamat IPv4 publik mesin ini, yang Anda berikan dengan `--ip`. erpc tidak mencarinya sendiri.
- **Pembelian:** line baru hanya dibeli di terminal, setelah harganya ditampilkan. `run` tidak memiliki `--yes`.
- **Mengakhiri:** saat aplikasi yang dijalankan berhenti, setiap line per jam diakhiri setelah Anda ditanya. `--keep-lines` mempertahankannya, dan line tersebut tetap ditagih. Jika proses tersebut berakhir dengan cara lain (terminal ditutup, Ctrl-C kedua), line tetap ada dan tetap ditagih.
- **Angka:** apa yang diukur aplikasi di sini mencakup jarak dari mesin ini ke line, sehingga hasilnya lebih lambat daripada aplikasi yang sama di server yang dekat dengan line tersebut.

## Langkah Selanjutnya

- [Impor aplikasi](https://erpc.global/id/doc/erpc-cli/worker-import/): Deploy aplikasi yang sudah Anda miliki, dalam bahasa apa pun.
- [Kunci dan secret](https://erpc.global/id/doc/erpc-cli/worker-secrets/): Jauhkan kunci trading dan secret dari disk server.
- [Firewall dan WAF](https://erpc.global/id/doc/erpc-cli/worker-firewall-and-waf/): Tempatkan API publik di belakang WAF.
- [Status dan penagihan](https://erpc.global/id/doc/erpc-cli/worker-status-and-billing/): Pantau aplikasi dan lihat biayanya per jam.
