Cara Install Convex Backend Secara Mandiri (Self-Hosted) di VPS Ubuntu
Pengantar
Seiring berkembangnya kebutuhan aplikasi modern, banyak pengembang mulai memanfaatkan layanan Backend as a Service (BaaS) untuk mempercepat proses pengembangan tanpa harus membangun backend dari nol. Salah satu platform yang cukup populer adalah Convex, yaitu backend modern yang menyediakan database real-time, server functions, sinkronisasi data, autentikasi, hingga dashboard untuk mengelola aplikasi.
Secara bawaan, Convex menggunakan layanan Convex Cloud, sehingga pengembang dapat langsung membangun aplikasi tanpa perlu mengelola server sendiri. Namun, pada beberapa kondisi, seperti kebutuhan keamanan data, kepatuhan terhadap regulasi, atau integrasi dengan infrastruktur internal, menjalankan Convex secara Self-Hosted menjadi pilihan yang lebih tepat.
Dengan Convex Self-Hosted, seluruh komponen backend dijalankan di VPS atau server milik sendiri. Hal ini memberikan kontrol yang lebih besar terhadap data, konfigurasi sistem, serta proses pemeliharaan aplikasi. Selain itu, pendekatan ini juga cocok bagi perusahaan yang ingin membangun lingkungan pengembangan secara mandiri tanpa bergantung sepenuhnya pada layanan cloud publik.
Pada artikel ini, Anda akan mempelajari cara install Convex Self-Hosted di Ubuntu 24.04 menggunakan Docker, mulai dari persiapan server, proses instalasi, hingga mengakses dashboard Convex melalui browser.
Mengenal Convex Self-Hosted
Convex Self-Hosted merupakan versi Convex yang dapat dijalankan pada server sendiri tanpa bergantung pada layanan Convex Cloud. Dengan pendekatan ini, seluruh komponen backend dikelola secara mandiri sehingga Anda memiliki kontrol penuh terhadap infrastruktur, data, maupun proses deployment.
Berbeda dengan Convex Cloud yang seluruh infrastrukturnya dikelola oleh pihak Convex, versi Self-Hosted memberikan kendali penuh terhadap:
- Backend Convex.
- Dashboard Convex.
- Database.
- Penyimpanan data.
- Infrastruktur server.
Dalam implementasinya, aplikasi Frontend akan mengirimkan request ke Convex Backend. Selanjutnya, backend akan memproses query, mutation, maupun function, kemudian menyimpan atau mengambil data dari database sebelum mengembalikan hasilnya ke aplikasi.
Frontend tetap dapat di-host di berbagai platform, seperti VPS, Netlify, Vercel, maupun layanan hosting lainnya. Sementara itu, Convex Backend, database, serta seluruh data aplikasi berjalan pada server yang Anda kelola sendiri, sehingga memberikan fleksibilitas lebih dalam pengaturan, keamanan, dan pengembangan aplikasi.
Persyaratan Sistem
Sebelum memulai instalasi, pastikan server telah memenuhi kebutuhan berikut.
- Ubuntu Server 24.04.
- CPU minimal 2 vCPU.
- RAM minimal 4 GB.
- Ruang penyimpanan kosong minimal 20 GB
- Docker Engine.
- Docker Compose.
- User dengan hak akses sudo.
- Koneksi internet.
Minimum Requirement:
CPU 2 vCPU, RAM 4 GB, Storage 20 GB SSD, Ubuntu Server 24.04, Docker Engine, dan Docker Compose.
Apabila Docker belum terpasang, lakukan instalasi terlebih dahulu disini sebelum melanjutkan ke tahap berikutnya.
Menyiapkan Docker Compose
- Membuat Direktori Kerja
Buat direktori yang akan digunakan untuk menyimpan file konfigurasi Convex Self-Hosted.
mkdir convex-selfhost cd convex-selfhost - Membuat File Docker Compose
Selanjutnya, buat file docker-compose.yml.
nano docker-compose.ymlMasukkan konfigurasi berikut ke dalam file tersebut.
services: backend: image: ghcr.io/get-convex/convex-backend:latest stop_grace_period: 10s stop_signal: SIGINT ports: - "${PORT:-3210}:3210" - "${SITE_PROXY_PORT:-3211}:3211" volumes: - data:/convex/data environment: - V8_ACTION_USER_TIMEOUT_SECS - NODE_ACTION_USER_TIMEOUT_SECS - APPLICATION_MAX_CONCURRENT_MUTATIONS=${APPLICATION_MAX_CONCURRENT_MUTATIONS:-16} - APPLICATION_MAX_CONCURRENT_NODE_ACTIONS=${APPLICATION_MAX_CONCURRENT_NODE_ACTIONS:-16} - APPLICATION_MAX_CONCURRENT_QUERIES=${APPLICATION_MAX_CONCURRENT_QUERIES:-16} - APPLICATION_MAX_CONCURRENT_V8_ACTIONS=${APPLICATION_MAX_CONCURRENT_V8_ACTIONS:-16} - AWS_ACCESS_KEY_ID - AWS_REGION - AWS_S3_DISABLE_CHECKSUMS - AWS_S3_DISABLE_SSE - AWS_S3_FORCE_PATH_STYLE - AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN - CONVEX_CLOUD_ORIGIN=${CONVEX_CLOUD_ORIGIN:-http://127.0.0.1:${PORT:-3210}} - CONVEX_RELEASE_VERSION_DEV - CONVEX_SITE_ORIGIN=${CONVEX_SITE_ORIGIN:-http://127.0.0.1:${SITE_PROXY_PORT:-3211}} - DATABASE_URL - DISABLE_BEACON - DISABLE_METRICS_ENDPOINT=${DISABLE_METRICS_ENDPOINT:-true} - DOCUMENT_RETENTION_DELAY=${DOCUMENT_RETENTION_DELAY:-172800} - DO_NOT_REQUIRE_SSL - HTTP_SERVER_TIMEOUT_SECONDS - INSTANCE_NAME - INSTANCE_SECRET - MYSQL_URL - POSTGRES_URL - REDACT_LOGS_TO_CLIENT - RUST_BACKTRACE - RUST_LOG=${RUST_LOG:-info} - S3_ENDPOINT_URL - S3_STORAGE_EXPORTS_BUCKET - S3_STORAGE_FILES_BUCKET - S3_STORAGE_MODULES_BUCKET - S3_STORAGE_SEARCH_BUCKET - S3_STORAGE_SNAPSHOT_IMPORTS_BUCKET healthcheck: test: curl -f http://localhost:3210/version interval: 5s start_period: 10s dashboard: image: ghcr.io/get-convex/convex-dashboard:latest stop_grace_period: 10s stop_signal: SIGINT ports: - "${DASHBOARD_PORT:-6791}:6791" environment: - NEXT_PUBLIC_DEPLOYMENT_URL=${NEXT_PUBLIC_DEPLOYMENT_URL:-http://127.0.0.1:${PORT:-3210}} - NEXT_PUBLIC_LOAD_MONACO_INTERNALLY depends_on: backend: condition: service_healthy volumes: data:Keterangan:
Konfigurasi di atas akan menjalankan dua layanan utama, yaitu Convex Backend dan Convex Dashboard. Volume data digunakan untuk menyimpan data secara persisten sehingga tidak hilang ketika container dibuat ulang.
Menjalankan Convex Self-Hosted
- Menjalankan Convex Self-Hosted
Masuk ke direktori tempat file docker-compose.yml berada, kemudian jalankan perintah berikut.
docker compose up -d
Docker akan mengunduh image yang diperlukan dan menjalankan seluruh layanan Convex secara otomatis.
Keterangan:
Pada instalasi pertama, proses ini mungkin memerlukan beberapa menit hingga seluruh image selesai diunduh. - Memastikan Container Berjalan
Setelah proses selesai, pastikan seluruh container telah berjalan dengan normal.
docker psApabila berhasil, container backend dan dashboard akan berstatus Up.
Keterangan:
Jika salah satu container tidak berjalan, periksa log menggunakan perintah docker compose logs untuk mengetahui penyebabnya.
Membuat Admin Key
- Membuat Admin Key
Setelah backend berhasil dijalankan, buat Admin Key yang digunakan untuk menghubungkan Convex CLI maupun Dashboard dengan backend Self-Hosted.
docker compose exec backend ./generate_admin_key.shSimpan Admin Key yang ditampilkan karena akan digunakan pada tahap konfigurasi berikutnya.
Catatan:
Jangan membagikan Admin Key kepada pihak lain karena memiliki hak akses penuh terhadap backend Convex.
Mengakses Dashboard Convex
- Mengakses Convex Dashboard
Setelah seluruh layanan Convex berhasil dijalankan, langkah berikutnya adalah mengakses Dashboard Convex Self-Hosted melalui browser.
Secara default, Convex menggunakan beberapa port berikut.
- Dashboard: 6791
- Backend API: 3210
- HTTP Actions: 3211
Apabila server memiliki alamat IP 192.168.1.10, buka browser kemudian akses Dashboard melalui alamat berikut.
http://192.168.1.10:6791Jika berhasil, halaman login Convex Dashboard akan ditampilkan seperti gambar berikut.

Pada kolom Deployment URL, secara default akan terisi http://127.0.0.1:3210. Apabila Dashboard diakses dari komputer lain, ubah alamat tersebut menjadi IP VPS, misalnya:
http://192.168.1.10:3210Selanjutnya, masukkan Admin Key yang telah dibuat pada langkah sebelumnya, kemudian klik tombol Log In.
Catatan:
Pastikan Admin Key dimasukkan secara lengkap, termasuk awalan convex-self-hosted|. Jika mengakses Dashboard langsung dari VPS, Anda dapat tetap menggunakan http://127.0.0.1:3210 sebagai Deployment URL.Tips:
Apabila Dashboard tidak dapat terhubung ke Backend, pastikan port 3210 telah dibuka pada firewall atau security group VPS. - Verifikasi Dashboard Convex Self-Hosted
Apabila proses login berhasil, Dashboard Convex Self-Hosted akan ditampilkan seperti gambar berikut.

Pada dashboard ini, Anda dapat mengelola deployment, melihat data aplikasi, serta memantau backend Convex yang berjalan pada server.
Keterangan:
Jika Dashboard berhasil ditampilkan, berarti Convex Self-Hosted telah berhasil dikonfigurasi dan siap digunakan untuk proses pengembangan maupun deployment aplikasi.
Menghubungkan Project dengan Convex Self-Hosted
- Menghubungkan Project ke Convex Self-Hosted
Masuk ke project Convex yang akan digunakan, kemudian buat atau ubah file .env.local.
nano .env.localTambahkan konfigurasi berikut.
CONVEX_SELF_HOSTED_URL="http://IP_SERVER:3210" CONVEX_SELF_HOSTED_ADMIN_KEY="ADMIN_KEY_ANDA"Ganti IP_SERVER dengan alamat IP VPS, kemudian ganti ADMIN_KEY_ANDA dengan Admin Key yang telah dibuat sebelumnya.
Penting:
Jangan menyimpan file .env.local ke repository Git karena berisi informasi sensitif, seperti URL backend dan Admin Key.
Menginstal Convex CLI
- Menghubungkan Project dengan Convex CLI
Pastikan project menggunakan Convex CLI versi terbaru dengan menjalankan perintah berikut.
npm install convex@latestSetelah proses instalasi selesai, sinkronkan project dengan backend Convex Self-Hosted.
npx convex devPerintah tersebut akan digunakan untuk:
- Mengirim function ke backend.
- Mengunggah schema.
- Menjalankan query.
- Mengimpor data.
- Menyinkronkan perubahan selama proses pengembangan.
Apabila ingin melihat daftar perintah yang tersedia pada Convex CLI, jalankan perintah berikut.
npx convex --helpKeterangan:
Jika proses sinkronisasi berhasil tanpa error, berarti project telah terhubung dengan backend Convex Self-Hosted dan siap digunakan untuk pengembangan aplikasi.
Tips
- Untuk proses pengembangan dan pengujian, database bawaan SQLite sudah cukup digunakan.
- Pada lingkungan production, disarankan menggunakan database seperti PostgreSQL atau MySQL agar lebih optimal dan mudah dikelola.
- Gunakan S3 Compatible Storage, seperti Amazon S3 atau MinIO, untuk menyimpan file, snapshot, dan data pendukung lainnya.
- Lakukan backup data dan volume Docker secara berkala untuk mengurangi risiko kehilangan data apabila terjadi masalah pada server.
- Apabila server diakses melalui internet, gunakan reverse proxy (Nginx atau Caddy) serta aktifkan HTTPS agar koneksi ke Dashboard dan Backend lebih aman.
Kesimpulan
Convex Self-Hosted merupakan solusi yang tepat bagi pengembang yang ingin menjalankan backend Convex pada infrastruktur milik sendiri tanpa bergantung sepenuhnya pada Convex Cloud. Dengan memanfaatkan Docker Compose, proses instalasinya dapat dilakukan dengan mudah, mulai dari menjalankan container, membuat Admin Key, hingga menghubungkan project menggunakan Convex CLI.
Melalui panduan ini, Anda telah mempelajari cara menginstal dan mengonfigurasi Convex Self-Hosted di Ubuntu 24.04 hingga backend siap digunakan untuk proses pengembangan aplikasi. Untuk kebutuhan production, Anda dapat melanjutkan konfigurasi dengan menggunakan PostgreSQL atau MySQL sebagai database, mengintegrasikan penyimpanan berbasis S3 Compatible Storage seperti Amazon S3 atau MinIO, serta mengamankan akses menggunakan reverse proxy dan HTTPS agar layanan lebih optimal dan aman.


