Server Kompilasi
Server kompilasi mengubah sketch menjadi firmware. Server ini adalah program Node.js kecil di folder server yang menjalankan arduino-cli dengan paket board yang dipasang oleh setup.bat.
Menjalankan
start.bat menjalankannya di jendela Circzy Server. Untuk menjalankannya secara manual:
cd E:\circzy
node server\index.mjs
Aplikasi menghubunginya melalui server pengembangan, yang meneruskan setiap permintaan di bawah /api ke http://localhost:3001.
Apa yang terjadi saat kamu menekan ▶
- Aplikasi mengirim sketch dan FQBN board ke
POST /api/compile. - Server memeriksa cache-nya. Sketch yang identik untuk board yang sama langsung dijawab.
- Jika tidak ada di cache, sketch dikompilasi di folder build sementara. Build memakai ulang core yang sudah dikompilasi untuk setiap board, jadi hanya kodemu yang dikompilasi.
- Firmware dikembalikan ke aplikasi: berkas Intel HEX untuk board AVR, image biner untuk Pico dan STM32, dan image flash untuk ESP32 dan ESP8266.
Jika kompilasi gagal, output kompiler dirapikan agar nama berkas dan nomor baris mengarah ke sketch.ino. Masalah pada server itu sendiri, misalnya paket board yang belum terpasang atau disk yang penuh, dilaporkan sebagai pesan singkat dalam bahasamu.
Pemanasan
Saat server mulai, ia mengompilasi program kecil untuk setiap board di latar belakang (sekitar 1–3 menit). Ini mengisi cache core sehingga kompilasi sungguhan pertamamu berjalan cepat. Folder build sisa yang sudah tidak dipakai (untuk worker tambahan atau board yang tidak dikenal) dihapus pada saat yang sama; folder lainnya disimpan dan dipakai ulang.
Build paralel dan antrean
Server mengompilasi beberapa sketch sekaligus: satu per dua inti CPU, maksimal empat. Jika semua worker sedang sibuk, permintaan baru menunggu di antrean dan aplikasi menampilkan posisinya (misalnya Antrean ke-2).
Memasang pustaka akan menjeda kompilasi sampai pemasangan selesai.
Konfigurasi
| Variabel lingkungan | Bawaan | Artinya |
|---|---|---|
PORT | 3001 | Port yang didengarkan server. |
CIRCZY_WORKERS | Setengah jumlah inti CPU, 1–4 | Jumlah kompilasi paralel. |
ARDUINO_CLI | tools\arduino-cli.exe jika ada, jika tidak arduino-cli di PATH | Path ke executable arduino-cli yang lain. |
Contoh:
set CIRCZY_WORKERS=2
node server\index.mjs
Menjalankan Circzy di server
Folder deploy berisi semua yang dibutuhkan untuk menjalankan Circzy secara online di VPS Ubuntu dengan Docker: aplikasi web di belakang Caddy dengan HTTPS otomatis, dan server compile dalam mode publik (CIRCZY_MODE=public). Panduan langkah demi langkah ada di deploy/README.md; versi singkatnya:
sudo bash deploy/install.sh # akses lewat http://IP_VPS
sudo bash deploy/install.sh domainkamu.com email@kamu.com # domain + HTTPS
Dalam mode publik, server compile:
- Hanya menerima permintaan dari domain yang diatur (
CIRCZY_ORIGINS). - Membatasi jumlah compile per pengunjung (
CIRCZY_RATE_LIMITper menit,CIRCZY_MAX_ACTIVEbersamaan) dan menjawab "sibuk" saat antrean penuh (CIRCZY_MAX_QUEUE). - Berjalan sebagai pengguna non-root, tanpa akses internet, dan dengan batas memori.
- Hanya menampilkan pustaka yang sudah terpasang di Library Manager; memasang dan mencari pustaka dimatikan.
Di server, browser berkomunikasi dengan Circzy API (folder api) yang menangani login, akun, proyek online, dan dashboard admin, lalu meneruskan kompilasi ke server compile beserta paket pengguna sehingga pengguna Pro didahulukan. Lihat Akun, Proyek Online & Pro.
API
| Metode dan path | Keterangan |
|---|---|
GET /api/health | Mengembalikan { "ok": true } saat server berjalan. |
GET /api/config | Mengembalikan { "public", "libraryInstall" }: apakah server berjalan dalam mode publik dan boleh memasang pustaka. |
POST /api/compile | Body { "code", "fqbn", "id" }. Mengembalikan { "hex" }, { "firmware" }, atau { "flash" }, atau { "error" } dengan status 400. |
GET /api/compile/status?id=… | Posisi antrean kompilasi dengan id tersebut. |
GET /api/libraries/installed | Pustaka yang sudah terpasang. |
GET /api/libraries/search?q=… | Mencari di indeks pustaka Arduino. |
POST /api/libraries/install | Body { "name" }. Memasang pustaka beserta dependensinya. |
Permintaan bisa mengirim X-Circzy-Language: en atau id untuk memilih bahasa pesan kesalahan.
Siap mencoba?
Masuk dengan Google, pilih board, dan jalankan simulasi pertamamu dalam dua menit. Gratis selama masa peluncuran.
Mulai simulasi gratis