DocsAplikasi
Project
Project adalah wadah untuk aplikasi, stack compose, dan managed database yang saling terkait. Variabel bersama berasal dari set variabel yang dibagikan kepadanya.
- Isi
- Aplikasi · Stack compose · Managed database
- Berbagi
- Referensi database + set variabel bersama
- Akses
- Daftar anggota + peran per project
Apa yang dikelompokkan project
toko/ ← project (memakai set variabel yang dibagikan kepadanya)
├── shop aplikasi Next.js, domain shop.example.com
├── worker aplikasi antrean, tanpa domain
├── app-db database PostgreSQL 16
├── cache database Redis 7
└── monitoring stack docker-compose (grafana + loki)| Yang dibagi dalam satu project | Yang tidak |
|---|---|
Referensi ${{database.<slug>…}} ke database di project yang sama, set variabel yang dibagikan ke project (${{vars.KEY}}), nama repository image <project>/<app> di registry. | Network Docker — semua container berada di network aoox yang sama, lintas project. Isolasi ada di lapisan akses (daftar anggota), bukan jaringan. |
Satu project atau banyak?
- Satu project per produk/lingkungan:
toko,toko-staging— database dan akses terpisah rapi. Tidak perlu project tambahan hanya untuk variabel development/staging — pakai environment dari sebuah set variabel. - Aplikasi yang berbagi database harus satu project agar bisa merujuknya lewat referensi.
- Slug database bersifat global (unik lintas project) — beri nama spesifik, mis.
toko-db, bukandb.
Membuat project
Menu Projects → Project baru
Field Keterangan Nama Mis. my-app. Versi slug-nya menjadi bagian nama image di registry (<registry>/<project>/<app>:<tag>); mengganti nama project setelah ada deployment membuat image berikutnya memakai repository baru — yang lama tetap ada.Deskripsi Opsional, tampil di daftar project. Halaman detail project
Tiga section — Aplikasi, Stack compose, Database — masing-masing dengan tombol tambah (Aplikasi baru, Stack compose baru / Dari template, Database baru) dan status ringkas tiap item. Tab Pengaturan untuk nama, deskripsi, anggota, set variabel yang dibagikan ke project, dan hapus project.
Variabel
Project tidak lagi punya environment sendiri. Variabel bersama berada di set variabel: owner atau admin instance membuat set (dengan environment seperti development, staging, dan production) lalu membagikannya ke semua project atau ke project tertentu. Aplikasi dan stack di project itu kemudian menautkan environment set, berurutan, di tab Environment masing-masing dan merujuk nilainya dengan ${{vars.KEY}}.
- Tab Pengaturan project menampilkan set yang dibagikan kepadanya dan aplikasi serta stack mana yang memakainya.
- Peran project-mu menentukan apa yang boleh kamu lakukan pada nilai sebuah set: developer dan admin project membuka dan mengubah environment yang tidak dilindungi, viewer hanya melihat nama, dan environment terlindungi untuk owner dan admin instance. Menautkan atau melepas environment terlindungi butuh peran admin project.
- Upgrade dari 0.1.0-alpha.9: project yang environment-nya berisi menjadi satu set bernama sesuai project, hanya dibagikan kepadanya; lihat catatan upgrade.
Anggota project
Tab Anggota di halaman project menentukan siapa yang melihat dan boleh mengubah project ini. Tambahkan dengan email akun yang sudah ada, lalu pilih perannya:
| Peran project | Boleh |
|---|---|
| admin | Semua yang bisa developer + kelola anggota dan hapus project. |
| developer | Aplikasi, database, stack, domain, mount, jobs, backup. |
| viewer | Baca saja — status, log, metrik, daftar backup. Tanpa password database, tanpa baris data database, tanpa ekspor atau unduh backup, tanpa URL atau secret webhook, tanpa isi file mount, dan tanpa variabel environment atau build args aplikasi dan stack (jadi tanpa ekspor project juga). |
- Pembuat project otomatis menjadi admin project; owner dan admin instance melihat semua project tanpa ditambahkan.
- Member instance lain hanya melihat project tempat ia ditambahkan — project lain menjawab 404. Detail di Pengguna & peran.
Export & import project
Tombol Ekspor konfigurasi (JSON) di halaman project mengunduh definisi portabel: aplikasi, database, stack compose beserta domain, mount, jobs, dan jadwal backup. Referensi ke hal di luar project (server, registry, kredensial Git, tujuan S3) dibawa berdasarkan nama. Aplikasi dan stack mempertahankan tautan set variabelnya (nama set dan environment, berurutan); saat impor, set yang namanya sudah ada dipakai ulang dan tidak pernah ditimpa. File dari 0.1.0-alpha.9 dan sebelumnya menjadi satu set variabel bernama sesuai project baru. Rinciannya di Variabel.
| Pilihan | Isi |
|---|---|
| Tanpa rahasia | Default. Tautan set variabel diekspor menurut nama, tetapi nilai set, password database, dan secret tidak disertakan. |
| Dengan rahasia | Hanya owner instance. Berisi set variabel yang dipakai project (beserta nilainya) dan password database apa adanya — perlakukan file seperti file rahasia. |
Impor di instance lain
Projects → Impor project: pilih file, beri nama baru atau pakai nama dari file.
Periksa peringatan
Slug dipakai ulang bila masih bebas; port host atau domain yang bentrok dan referensi yang tidak ditemukan dilaporkan sebagai Perlu diperiksa — bukan gagal. Database di-provision di latar; jobs dan jadwal backup langsung didaftarkan.
Di Dashboard
Dashboard menampilkan ringkasan: jumlah project yang punya sesuatu yang running (aplikasi, database, atau stack) dan daftar project terbaru dengan tautan Lihat semua.
Kepemilikan & akses
- Project mencatat pembuatnya, dan ia selalu menjadi admin project. Siapa lagi yang melihatnya ditentukan daftar anggota di atas — lihat Pengguna & peran.
- Pengguna yang masih memiliki project tidak bisa dihapus dari tim — hapus project-nya dulu (kepemilikan belum bisa dipindahkan dari UI).
- Semua perubahan project tercatat di audit log.
Menghapus project
Menghapus project menghapus semua isinya: aplikasi, stack compose, dan database dihentikan dan container-nya dihapus (sehingga domainnya berhenti berfungsi), lalu catatan, riwayat backup, dan project-nya sendiri dihapus. Dialog hapus punya kotak centang Hapus juga datanya, tidak dicentang secara bawaan.
| Data | Tidak dicentang (bawaan) | Dicentang |
|---|---|---|
| Volume database | Dibiarkan. Muncul sebagai yatim di halaman Docker (Detail), tempat pembersihan bisa menghapusnya nanti. | Dihapus. |
| Mount volume aplikasi | Dibiarkan, juga muncul sebagai yatim. | Dihapus. |
| Volume yang dideklarasikan sendiri oleh file compose | Dibiarkan, tetapi tidak ditampilkan sebagai yatim. Hapus dari terminal dengan docker volume rm. | Dihapus. |
| Mount compose yang Anda tambah di aoox | Dibiarkan, muncul sebagai yatim. | Dihapus. |
| Backup database dan volume aplikasinya | Dibiarkan: berkasnya tetap di volume aoox_backups di server (salinan S3 tetap di tujuan). Tidak lagi tampil di dashboard. | Dihapus: berkas lokal beserta salinan S3-nya. |
docker run --rm -v aoox_backups:/backups busybox:stable rm -rf /backups/<folder>).Jika aoox tidak bisa menjangkau daemon Docker (atau server remote) saat menghapus sesuatu, penghapusan berhenti dengan galat yang menyebut namanya. Project dan yang belum terhapus tetap ada, jadi Anda bisa memperbaiki koneksi lalu menghapus lagi. Hanya admin project yang bisa menghapus project.
Menghapus satu aplikasi juga menghapus container kandidat blue/green-nya, dan ditolak (aplikasi tetap ada) bila daemon Docker-nya tidak terjangkau, bukan membiarkan container tetap berjalan.
Jebakan umum
| Gejala | Penyebab & solusi |
|---|---|
| Referensi ${{database.x.url}} 400 padahal database ada | Database di project lain. Referensi hanya dalam project yang sama. |
| Set variabel diubah, aplikasi tidak berubah | Container belum dibuat ulang. Deploy/rollback aplikasi yang menautkannya. |
| Tidak bisa menghapus environment atau set, atau berhenti membagikan set | Masih ada aplikasi atau stack yang menautkannya (pesan menyebutnya). Lepas tautannya dulu. |
| Tidak bisa menampilkan nilai production | Environment terlindungi hanya untuk owner dan admin instance. Minta salah satunya, atau pakai environment yang tidak dilindungi. |
| Tidak bisa menghapus anggota tim | Ia masih memiliki project. Hapus project itu, atau biarkan akunnya. |
| Project tidak terlihat oleh rekan | Ia belum ditambahkan sebagai anggota project (member instance hanya melihat project yang ditugaskan). |
| Impor: banyak peringatan referensi | Server/registry/kredensial dengan nama itu belum ada di instance tujuan. Buat dulu, lalu sesuaikan aplikasi. |
| Container masih jalan setelah project dihapus | Sesuai perilaku saat ini — hapus manual lewat terminal (lihat atas). |
Langkah berikutnya
Ada yang keliru? Edit halaman ini di GitHub ↗