$ aoox

DocsStack & database

Template one-click

Katalog aplikasi siap pakai yang dijalankan sebagai stack compose dalam beberapa klik.

Katalog
15 template, dibundel di dalam aoox
Hasil
Stack compose (source: template)
Rahasia
Password/secret di-generate otomatis

Katalog

TemplateVersiUntuk apaHarus diisiService (port)
wordpress6.8CMS/blog + MySQL—wordpress :80
ghost5Platform publishingURL publikghost :2368
n8n1.xAutomasi workflowHost publik; protokol & zona waktu punya defaultn8n :5678
uptime-kuma1Monitoring uptime—uptime-kuma :3001
rustfs1.0Object storage S3 (Apache-2.0) — bisa jadi tujuan backup— (access key dan secret key dibuat otomatis); untuk tujuan backup beri domain pada service apa punConsole :9001 · API S3 :9000
gitea1.24Git hosting ringanURL publikgitea :3000
vaultwarden1.37Password manager (kompatibel Bitwarden)URL publik (HTTPS)vaultwarden :80
umami2.20Analitik web ramah privasi + PostgreSQL—umami :3000
grafana13.0Dashboard metrik & logURL publikgrafana :3000
metabase0.63Business intelligence + PostgreSQLURL publikmetabase :3000
directus12.4Headless CMS / API data + PostgreSQLURL publik, email admindirectus :8055
mattermost11.11Chat tim + PostgreSQLURL publikmattermost :8065
nextcloud32File & kolaborasi + PostgreSQL, Redis, cronDomainnextcloud :80
odoo19.0ERP / bisnis all-in-one (Community) + PostgreSQL— (master password di-generate)odoo :8069
excalidrawlatest (dikunci digest)Whiteboard / diagram sketsa tangan kolaboratif (open source, MIT)—excalidraw :80

Katalog ditulis di dalam kode aoox — tidak diambil dari internet saat runtime, jadi tetap jalan offline dan isinya tidak bisa diganti pihak lain. Semua password, secret, dan key di-generate otomatis (alfanumerik) bila dikosongkan.

Catatan per template

Template yang memakai database membawa PostgreSQL sendiri di dalam stack (bukan managed database), dengan volume bernama untuk data dan health check agar aplikasi baru start setelah database siap. Versi image dipin ke tag tertentu, bukan latest. Lisensi tiap proyek berbeda; cek di situs proyeknya sebelum dipakai untuk keperluan komersial.

TemplateIsi stack & hal yang perlu diketahui
vaultwardenSatu container, data di SQLite. Web vault butuh HTTPS (kecuali localhost) — isi URL publik dengan https://…. Token /admin di-generate; matikan pendaftaran (SIGNUPS_ALLOWED=false) setelah akun dibuat.
umamiUmami + PostgreSQL. Login awal bawaan Umami admin / umami — ganti segera.
grafanaSatu container (SQLite bawaan). Username dan password admin ada di env stack.
metabaseMetabase + PostgreSQL untuk data aplikasinya (bukan data yang kamu analisis). Berbasis Java, jadi start pertama beberapa menit dan memakai RAM cukup besar. Kunci enkripsi kredensial di-generate; jangan diganti setelah dipakai.
directusDirectus + PostgreSQL. Akun admin pertama dibuat dari email yang kamu isi dan password di env stack; KEY dan SECRET di-generate.
mattermostMattermost Team Edition + PostgreSQL. Akun pertama dibuat lewat web dan otomatis jadi admin sistem.
nextcloudNextcloud (Apache) + PostgreSQL + Redis (cache dan file locking) + container cron untuk tugas latar. Isi domain tanpa https://. Protokol publik default https; http hanya untuk uji lokal. Install pertama lebih lama dan paling berat di antara template.
odooOdoo Community 19.0 (LGPLv3; tanpa modul Enterprise, yang proprietary) + PostgreSQL 16. Buka situsnya: halaman awal meminta Master Password, nama database, email, dan password admin. Master password dibuat otomatis; lihat di halaman stack, tab Pengaturan, bagian environment, Tampilkan nilai (variabel MASTER_PASSWORD). Berjalan satu proses tanpa worker (workers = 0), cukup untuk pemakaian kecil; banyak worker dengan jalur websocket terpisah belum disiapkan. proxy_mode menyala agar skema https dan pengalihan benar di belakang Traefik. Daftar database tetap terbuka supaya database pertama bisa dibuat lewat web; master password melindungi pembuatan, penyalinan, backup, dan penghapusan database. Setelah database dibuat, amankan /web/database/manager: edit compose stack (tab Pengaturan), tambahkan list_db = False dan dbfilter = ^nama_db$ pada bagian konfigurasi Odoo, lalu deploy ulang. Image memakai tag bertanggal (19.0-20260926) agar tidak bergeser tiap malam; untuk pembaruan keamanan, ganti tag-nya dan deploy ulang. Data ada di volume odoo_data (filestore) dan database.
excalidrawExcalidraw (MIT), whiteboard untuk sketsa dan diagram bergaya tulisan tangan. Satu container klien statis di port 80, tanpa database dan tanpa isian. Gambar tersimpan di browser (local storage) dan bisa diekspor ke PNG, SVG, atau berkas. Kolaborasi live tidak termasuk: butuh server kolaborasi terpisah yang tidak disiapkan template ini. Image resminya tidak punya tag versi (hanya latest yang bergulir), jadi dikunci pada digest image; untuk memperbarui, ganti digest di file compose stack secara manual.

Men-deploy template

  1. Menu Templates → pilih template

    Atau dari halaman project klik Dari template agar project sudah terpilih. Ada kotak pencarian untuk katalog.

  2. Isi dialog deploy

    BagianKeterangan
    Project & NamaNama jadi slug stack; project compose = aoox-<slug>.
    Hostname per service + HTTPSSatu baris per service yang bisa diekspos (mis. RustFS punya dua: Console dan API). Kosongkan bila tidak ingin domain.
    Port host per serviceAlternatif tanpa domain: stack langsung bisa dibuka lewat <ip-server>:<port>. Bentrokan port ditolak saat menyimpan — lihat Akses stack.
    VariabelField dengan label dan hint dari template. Yang bertanda wajib harus diisi (mis. URL publik untuk Ghost/Gitea/Grafana, Host publik untuk n8n). Sisanya: kosong = default / di-generate.
    URL publik harus sama dengan domain
    Ghost, Gitea, n8n, Grafana, Metabase, Directus, Mattermost, Vaultwarden, dan Nextcloud memakai URL/host publik untuk membangun tautan dan webhook-nya sendiri. Isi persis sesuai hostname yang kamu pasang, termasuk skema (https://blog.example.com) — kalau berbeda, halaman admin/tautan akan salah arah.
  3. Deploy

    Kamu diarahkan ke halaman stack compose yang baru. Deploy berjalan di latar (pull image bisa beberapa menit); pantau Log aksi terakhir sampai status running.

  4. Verifikasi

    Buka hostname yang dipasang. Untuk kredensial admin awal (mis. access key dan secret key RustFS, DB password) lihat env stack di tab Pengaturan — nilai yang di-generate tersimpan di sana.

Contoh: WordPress dengan domain

Dialog deploy
Project     : toko
Nama        : blog
Service     : wordpress → blog.example.com  [HTTPS ✓]
Variabel    : DB_PASSWORD (kosong → di-generate)
              DB_ROOT_PASSWORD (kosong → di-generate)

Setelah running, buka https://blog.example.com dan selesaikan wizard WordPress. Database MySQL ada di dalam stack (bukan managed database) — backup-nya jadi tanggung jawab plugin/skrip kamu, atau pindahkan ke managed database dengan mengedit compose.

Setelah deploy

  • File compose tersimpan di aoox dan bisa diedit di tab Pengaturan stack (textarea), lalu deploy ulang — mis. menambah service, mengubah image tag, atau menunjuk managed database.
  • Env stack berisi nilai variabel (termasuk yang di-generate); ubah lalu deploy ulang bila perlu.
  • Domain per service bisa ditambah/diubah lewat kartu Domain; saran service diambil dari katalog.
  • Stop / Start / Hapus sama seperti stack compose lain — Hapus menghapus volume data.

Jebakan umum

GejalaPenyebab & solusi
400: variabel wajib kosongURL/Host/Domain publik atau email admin (Directus) belum diisi.
Tautan admin mengarah ke localhost / httpURL publik tidak sama dengan domain, atau protokol n8n masih http. Perbaiki env stack, deploy ulang.
Deploy lama di deployingPull image pertama kali. Tunggu; cek Log aksi terakhir untuk progres.
RustFS tidak bisa dipakai sebagai tujuan backupBeri stack sebuah domain pada service apa pun (konsol boleh) agar masuk ke network aoox, lalu pakai http://<nama container>:9000 sebagai endpoint (path-style aktif, bucket dibuat dulu). Port yang terikat ke 127.0.0.1 tidak terjangkau dari container; port host publik bisa tetapi membuka S3 ke internet.
Belum tersedia
Template dari repo/URL kustom; upgrade versi template yang sudah di-deploy; ikon template saat offline. Batasan stack compose lainnya berlaku — lihat Stack compose.

Langkah berikutnya

Ada yang keliru? Edit halaman ini di GitHub ↗