logo
icon

Multica

Manajemen tugas AI-native di mana agent coding adalah anggota tim sepenuhnya. Men-deploy PostgreSQL (pgvector), backend Go, dan aplikasi web Next.js.

template cover
Dideploy0 kali
Penerbitpseudoyu
Dibuat2026-07-31
Tag
Developer ToolsProject Management

Multica di Zeabur

Tiga layanan, tanpa perlu object storage eksternal. Lampiran disimpan di volume persisten pada backend.

Setelah deploy

  1. Buka domainmu. Masukkan email untuk meminta kode login.
  2. Kalau RESEND_API_KEY dibiarkan kosong, baca kodenya dari log layanan backend — cari Verification code.
  3. Buat workspace-mu.
  4. Kunci instance-nya: set ALLOW_SIGNUP=false dan DISABLE_WORKSPACE_CREATION=true di backend, lalu restart.

Menghubungkan runtime agent

Daemon berjalan di komputermu sendiri, bukan di Zeabur. Server Multica hanya berisi API, hub WebSocket, dan basis data.

brew install multica-ai/tap/multica
multica setup self-host \
  --server-url https://DOMAIN_API_KAMU \
  --app-url    https://DOMAIN_KAMU

Kedua URL sengaja dibuat berbeda. --app-url adalah aplikasi web tempat kamu login; --server-url adalah domain API, yang diperiksa CLI di /health sebelum menyimpan apa pun. Path itu tidak diteruskan oleh aplikasi web, jadi mengarahkan --server-url ke domain aplikasi membuat setup melaporkan server tidak terjangkau.

Browser tidak terpengaruh dalam kedua kasus — ia tetap berada di domain aplikasi untuk semuanya termasuk WebSocket, sehingga cookie tidak pernah lintas origin dan COOKIE_DOMAIN dibiarkan kosong.

Mengganti domain nanti

Sisi browser mengikuti host yang kamu buka: aplikasi web menyajikan /api, /auth, /uploads, dan /ws dari origin-nya sendiri, dan klien menurunkan wss:// dari window.location. Tidak ada yang dipaku ke domain di sisi ini, jadi UI dan WebSocket tetap jalan di domain baru tanpa konfigurasi.

Backend-lah yang tidak menyadarinya. Ia tidak pernah membaca host permintaan — setiap URL publik yang ia hasilkan berasal dari variabel lingkungan. Setelah memasang domain baru, perbarui ini di layanan backend lalu restart:

VariabelIsi denganYang rusak kalau basi
MULTICA_APP_URLorigin aplikasi baruOnboarding menampilkan host lama; email undangan dan kode login menaut ke sana
FRONTEND_ORIGINorigin aplikasi baruCadangan untuk yang di atas; pemeriksaan origin CSRF
CORS_ALLOWED_ORIGINSorigin aplikasi baruPanggilan lintas origin ditolak
MULTICA_PUBLIC_URLorigin API barumultica setup self-host memberi daemon URL lama

Sertakan skema, tanpa garis miring di akhir. Semuanya gagal secara diam-diam — aplikasi tetap termuat dan tampak baik-baik saja. Setelah mengubahnya, buka /api/config dan pastikan daemon_app_url dan daemon_server_url cocok dengan domain yang benar-benar kamu pakai.

Satu hal yang perlu diketahui sebelum memasang domain kustom: MULTICA_PUBLIC_URL dikirim sebagai ${ZEABUR_API_URL}, dan variabel bawaan itu tetap mengarah ke domain *.zeabur.app yang dibuat otomatis, bahkan setelah kamu memasang domain kustom di sampingnya. Ia tidak mengikuti domain kustom. Jadi begitu kamu memasang domainmu sendiri di backend, ganti ${ZEABUR_API_URL} dengan domain itu, ditulis lengkap.

Lalu jalankan ulang multica setup self-host dengan --server-url yang baru di setiap mesin yang menjalankan daemon — CLI menyimpan URL-nya, jadi daemon yang sudah ada akan terus memakai yang lama sampai kamu melakukannya.

Penyimpanan

S3_BUCKET dibiarkan kosong, jadi backend jatuh kembali ke disk lokal dan menulis ke volume /app/data/uploads. Untuk pindah ke penyimpanan kompatibel S3 nanti (R2, MinIO, B2), set S3_BUCKET, AWS_ENDPOINT_URL, AWS_ACCESS_KEY_ID, dan AWS_SECRET_ACCESS_KEY di backend. Tambahkan ATTACHMENT_DOWNLOAD_MODE=proxy bila endpoint-nya tidak terjangkau dari browser. Berkas yang sudah ada tidak dimigrasikan otomatis.

Catatan penskalaan

Volume uploads mengunci backend ke satu replika. Pindah ke S3 dulu kalau butuh lebih, dan tambahkan REDIS_URL — tanpa Redis, event realtime jatuh kembali ke memori dalam proses dan rate limiting autentikasi mati.

Lisensi dan atribusi

Multica dilisensikan di bawah Apache License 2.0 yang dimodifikasi dengan ketentuan tambahan yang mencakup penggunaan komersial hosted/embedded, branding, dan atribusi. Penggunaan internal dalam satu organisasi tidak memerlukan lisensi komersial; menawarkannya sebagai layanan ke pihak ketiga memerlukannya. Menghapus nama, logo, atau pemberitahuan hak cipta Multica dari UI memerlukan pengecualian branding tertulis.

Sumber: https://github.com/multica-ai/multica · Lisensi: https://github.com/multica-ai/multica/blob/main/LICENSE