$ aoox

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

Contoh project toko
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 projectYang 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, bukan db.

Membuat project

  1. Menu Projects → Project baru

    FieldKeterangan
    NamaMis. 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.
    DeskripsiOpsional, tampil di daftar project.
  2. 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 projectBoleh
adminSemua yang bisa developer + kelola anggota dan hapus project.
developerAplikasi, database, stack, domain, mount, jobs, backup.
viewerBaca 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.

PilihanIsi
Tanpa rahasiaDefault. Tautan set variabel diekspor menurut nama, tetapi nilai set, password database, dan secret tidak disertakan.
Dengan rahasiaHanya owner instance. Berisi set variabel yang dipakai project (beserta nilainya) dan password database apa adanya — perlakukan file seperti file rahasia.
  1. Impor di instance lain

    Projects → Impor project: pilih file, beri nama baru atau pakai nama dari file.

  2. 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.

Export/import memindahkan konfigurasi, bukan data. Untuk isi database dan volume, pakai backup & restore; untuk memindahkan seluruh panel, pakai backup instance.

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.

DataTidak dicentang (bawaan)Dicentang
Volume databaseDibiarkan. Muncul sebagai yatim di halaman Docker (Detail), tempat pembersihan bisa menghapusnya nanti.Dihapus.
Mount volume aplikasiDibiarkan, juga muncul sebagai yatim.Dihapus.
Volume yang dideklarasikan sendiri oleh file composeDibiarkan, tetapi tidak ditampilkan sebagai yatim. Hapus dari terminal dengan docker volume rm.Dihapus.
Mount compose yang Anda tambah di aooxDibiarkan, muncul sebagai yatim.Dihapus.
Backup database dan volume aplikasinyaDibiarkan: 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.
Tidak bisa dibatalkan
Aplikasi, database, dan stack dihapus permanen. Unduh dulu backup yang masih diperlukan: catatan backup ikut terhapus bersama project, dan dengan Hapus juga datanya berkas backup beserta salinan S3-nya ikut terhapus. Tanpa itu berkasnya dibiarkan, tetapi tidak ada lagi yang menampilkannya di dashboard; hapus manual bila sudah tidak diperlukan (misalnya 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

GejalaPenyebab & solusi
Referensi ${{database.x.url}} 400 padahal database adaDatabase di project lain. Referensi hanya dalam project yang sama.
Set variabel diubah, aplikasi tidak berubahContainer belum dibuat ulang. Deploy/rollback aplikasi yang menautkannya.
Tidak bisa menghapus environment atau set, atau berhenti membagikan setMasih ada aplikasi atau stack yang menautkannya (pesan menyebutnya). Lepas tautannya dulu.
Tidak bisa menampilkan nilai productionEnvironment terlindungi hanya untuk owner dan admin instance. Minta salah satunya, atau pakai environment yang tidak dilindungi.
Tidak bisa menghapus anggota timIa masih memiliki project. Hapus project itu, atau biarkan akunnya.
Project tidak terlihat oleh rekanIa belum ditambahkan sebagai anggota project (member instance hanya melihat project yang ditugaskan).
Impor: banyak peringatan referensiServer/registry/kredensial dengan nama itu belum ada di instance tujuan. Buat dulu, lalu sesuaikan aplikasi.
Container masih jalan setelah project dihapusSesuai perilaku saat ini — hapus manual lewat terminal (lihat atas).
Belum tersedia
Pindah kepemilikan project; menghentikan/menghapus container otomatis saat project dihapus; impor yang membawa data (bukan hanya konfigurasi).

Langkah berikutnya

Ada yang keliru? Edit halaman ini di GitHub ↗