@midrepo/cli
v0.1.12
Published
Cross-platform CLI for MIDREPO production API
Maintainers
Readme
MIDREPO CLI
CLI berbasis Node.js untuk MIDREPO Production API (https://midrepo.com/api/v1), termasuk deploy VPS dan free hosting dengan flow yang setara web.
Syarat
- Node.js 18 atau lebih baru.
- Akun MIDREPO yang sudah login.
- Untuk VPS: kredensial SSH password atau OpenSSH private key.
- Untuk upload source: file
.zipproject yang lolos validasi keamanan backend.
Install
Instalasi global langsung dari npm registry, tanpa clone repository:
npm install -g @midrepo/cliPerintah tersebut membuat midrepo tersedia secara global pada komputer yang menjalankannya, sehingga dapat dipakai dari direktori mana pun:
cd ~
midrepo ping
midrepo deploy helpCLI ini adalah klien tipis yang berkomunikasi dengan MIDREPO Production API melalui HTTPS. Paket npm hanya berisi file klien (bin/hello.mjs, bin/deploy.mjs, bin/prompts.mjs, package.json, dan README.md); kode server dan konfigurasi tidak disertakan.
Setelah terpasang, cukup jalankan:
midrepoJika dijalankan di terminal interaktif tanpa argumen, CLI membuka menu bernomor untuk Login, Register, profil, deploy VPS, deploy free hosting, uninstall, status job, domain, dan logout. Anda hanya memilih angka lalu mengisi nilai yang diminta; password tidak ditampilkan saat diketik.
Command manual seperti midrepo vps deploy ... tetap tersedia untuk otomasi/CI. Gunakan exit untuk keluar atau 0 untuk kembali pada sub-menu.
Update CLI
Untuk versi CLI yang sudah mendukung command update, jalankan:
midrepo updateCommand tersebut menjalankan npm install -g @midrepo/cli@latest, sehingga versi global lama otomatis diganti dengan versi terbaru. Alias berikut juga tersedia:
midrepo upgradeJika Anda masih memakai versi lama seperti 0.1.3, command midrepo update belum tersedia. Lakukan upgrade pertama secara manual:
npm install -g @midrepo/cli@latestTidak perlu uninstall terlebih dahulu. Jika ingin melakukan instalasi bersih, gunakan:
npm uninstall -g @midrepo/cli
npm install -g @midrepo/cli@latestKompatibilitas command lama hello midrepo tetap tersedia.
Login
midrepo login [email protected] password
midrepo meSession bearer token disimpan pada:
~/.midrepo-cli/session.jsonGunakan midrepo logout untuk menghapus session lokal.
Command dasar
midrepo help
midrepo ping
midrepo docs
midrepo me
midrepo domains
midrepo job <jobId>
midrepo postman collection
midrepo logout
midrepo updateDeploy VPS
Semua deploy VPS mengikuti flow web yang sama:
- Koneksi SSH dan menerima
sessionId. - Upload ZIP source ke VPS bila memakai
--zip. - Kirim build/deploy job ke API.
- CLI memantau job hingga selesai secara default.
Deploy satu perintah
Dengan password SSH:
midrepo vps deploy 203.0.113.10 root /var/www react-vite \
--password 'password-vps' \
--zip ./project.zip \
--app-name landing-page \
--domain app.example.com \
--web-server nginxDengan private key:
midrepo vps deploy 203.0.113.10 deploy /var/www nodejs \
--private-key ~/.ssh/id_ed25519 \
--zip ./project.zip \
--app-name api-appDengan source GitHub publik:
midrepo vps deploy 203.0.113.10 deploy /var/www react-vite \
--private-key ~/.ssh/id_ed25519 \
--github https://github.com/acme/landing-page \
--app-name landing-pageDengan IP publik sebagai target HTTP (tanpa SSL, default --web-server nginx):
midrepo vps deploy 203.0.113.10 root /var/www react-vite \
--password 'password-vps' \
--zip ./project.zip \
--host-name 203.0.113.10 \
--web-server nginxJika Anda hanya ingin deploy ke port aplikasi tanpa web server, hilangkan --web-server (atau set none) dan biarkan --domain/--host-name kosong. URL akan berbentuk http://<host>:<port>.
Flow VPS bertahap
Koneksi dan dapatkan session:
midrepo vps connect 203.0.113.10 root --password 'password-vps'Upload ZIP:
midrepo vps upload <sessionId> /var/www ./project.zipBuild/deploy dari ZIP (CLI upload ZIP otomatis):
midrepo vps build <sessionId> /var/www react-vite \
--zip ./project.zip \
--app-name landing-page \
--domain app.example.com \
--web-server nginxBuild/deploy dari GitHub:
midrepo vps build <sessionId> /var/www react-vite \
--github https://github.com/acme/landing-page \
--app-name landing-pageUpdate aplikasi yang sudah terdeploy:
midrepo vps update <sessionId> /var/www/landing-page react-vite \
--zip ./project-baru.zipUpdate dari GitHub:
midrepo vps update <sessionId> /var/www/landing-page react-vite \
--github https://github.com/acme/landing-pageUninstall project VPS (samadengan flow web: full cleanup VPS bila ini satu-satunya project, selain itu hanya hapus project):
midrepo vps uninstall <sessionId> /var/www react-vite landing-page --yesTemplate harus sesuai dengan template yang didukung API: auto, react-vite, react, next-js, bun-hono, python, php, codeigniter, atau laravel. API menolak template lain dengan pesan error yang dapat dibaca di job step.
Saat hanya IP publik yang tersedia, SSL Certbot akan otomatis dilewati; gunakan domain + Certbot terpisah (--web-server domain --web-server ssl) bila nanti nama domain sudah aktif. Deploy HTTP ke IP tetap dipublikasikan lewat Nginx/Apache pada port 80.
Free hosting
Free hosting menggunakan domain root yang dikonfigurasi server. Source dapat berasal dari ZIP atau GitHub publik. Stack yang tersedia saat ini: auto, react-vite, react, dan next-js.
Deploy ZIP:
midrepo free-hosting deploy portfolio react-vite --zip ./project.zipDeploy GitHub:
midrepo free-hosting deploy portfolio react-vite \
--github https://github.com/acme/portfolioLihat konfigurasi domain dan DNS yang akan digunakan:
midrepo free-hosting configure portfolio react-vitePantau satu job free hosting:
midrepo free-hosting status <jobId>Hapus free-hosting domain milik akun yang sedang login:
midrepo free-hosting cleanup portfolio --yesPerintah --yes wajib dipakai pada uninstall/cleanup untuk mencegah eksekusi destruktif tanpa konfirmasi. Menu interaktif midrepo sudah meminta konfirmasi eksplisit sebelum mengirim request cleanup.
Opsi
| Opsi | Keterangan |
| --- | --- |
| --zip <file> | ZIP source project; CLI mengunggahnya otomatis. |
| --github <url> | URL GitHub publik sebagai source. Tidak dapat dipakai bersama --zip. |
| --password <password> | Password SSH VPS. |
| --private-key <file> | Lokasi OpenSSH private key. |
| --passphrase <value> | Passphrase private key jika diperlukan. |
| --port <number> | Port SSH, default 22. |
| --app-name <name> | Nama aplikasi untuk direktori deploy VPS. |
| --domain <domain> | Domain aplikasi VPS. |
| --host-name <host> | Hostname untuk konfigurasi deploy VPS. |
| --web-server <mode> | Mode web server, contohnya nginx. Default none. |
| --migration-mode <mode> | Mode migrasi Laravel: default, skip, atau run. |
| --webhook <json> | Konfigurasi webhook job, sebagai JSON valid. |
| --no-wait | Kirim job tanpa polling; CLI mencetak job ID. |
| --poll-seconds <number> | Interval polling job, default 2 detik. |
| --timeout-seconds <number> | Batas waktu polling, default 1800 detik. |
Contoh deploy tanpa menunggu job selesai:
midrepo free-hosting deploy portfolio react-vite \
--zip ./project.zip \
--no-waitLalu pantau dengan:
midrepo free-hosting status <jobId>Konfigurasi endpoint
Semua request secara default mengarah ke production. Untuk development atau staging, set environment variable berikut:
MIDREPO_CLI_BASE_URL=http://localhost:3000 midrepo pingJangan menyimpan password VPS, private key, atau bearer token dalam source code maupun shell history yang dibagikan.
