$ aoox

DocsAplikasi

Membuat aplikasi

Menghubungkan repo Git atau image siap pakai ke sebuah project dan mengatur bagaimana container-nya dijalankan.

Waktu
± 3 menit + durasi build
Butuh
Registry lokal (sumber Git) atau image
Hasil
Container berjalan dari branch pilihanmu

Prasyarat

  • Untuk aplikasi dari repo Git: registry lokal sudah di-provision — image hasil build di-push ke sana. Tanpa ini deploy pertama gagal.
  • Sudah ada project tempat aplikasi ini akan tinggal.
  • Untuk repo privat: kredensial Git sudah ditambahkan di Settings.
  • Aplikasi listen di port yang tetap dan menerima koneksi dari 0.0.0.0, bukan hanya localhost.

Dua sumber aplikasi

SumberYang diisiAlur deploy
Git repositoryURL repo, branch, kredensial (bila privat), cara buildClone → build (Dockerfile / Nixpacks / statis) → push ke registry → jalankan.
Image siap pakai (di-pull)Referensi image (ghcr.io/acme/api:1.4) dan, bila privat, registry eksternal yang menyimpan kredensialnyaTanpa build: image ditarik lalu dijalankan. Bisa update otomatis saat digest tag berubah.

Registry lokal hanya wajib untuk sumber Git (tempat image hasil build disimpan). Aplikasi dari image tidak memerlukannya.

Langkah

  1. Di halaman project, klik Aplikasi baru

    Isi form. Sebagian besar bisa diubah lagi nanti di tab Pengaturan.

    FieldKeterangan
    NamaJadi slug unik (app_name); nama container = aoox-app-<slug>.
    Git repositoryURL https repo. Tanpa user:token di URL — pakai select Kredensial Git untuk repo privat.
    BranchBranch yang di-build. Webhook hanya bereaksi pada push ke branch ini.
    Kredensial GitTidak ada (repo publik) atau salah satu kredensial tersimpan.
    Cara buildDockerfile atau Nixpacks — lihat Cara build.
    Port containerPort yang di-listen aplikasi di dalam container (mis. 3000).
    Port hostOpsional. Isi kalau mau akses lewat IP:port tanpa domain. Kosongkan bila memakai domain — blue/green butuh port host kosong.
    Health check pathOpsional tapi disarankan, mis. /health. Menentukan sukses/gagal deploy dan mengaktifkan blue/green.
    ServerHost aoox (default) atau server remote. Hanya tampil bila ada server terdaftar.
    Mode deploycontainer (default) atau service dengan replika bila Swarm aktif — beserta penempatan node dan setelan rolling update.
    Update otomatisHanya untuk sumber image: cek digest tag secara berkala dan deploy saat berubah.
    Batas CPU / memoriOpsional. Lihat Monitoring.
    Contoh pengisian — aplikasi Next.js di repo publik
    Nama
    shop
    Git repository
    https://github.com/acme/shop
    Branch
    main
    Kredensial Git
    Tidak ada (repo publik)
    Cara build
    Nixpacks
    Port container
    3000
    Port host
    (kosong — pakai domain)
    Health check path
    /health
  2. Simpan, lalu isi Environment variables (bila perlu)

    Tab Pengaturan → editor env, satu KEY=VALUE per baris. Nilai diterapkan saat container dibuat, bukan saat build — lihat Environment variables.

  3. Buka tab Deploy dan klik Deploy

    Yang terjadi, dan terlihat di log realtime:

    queued    deployment dibuat
    building  daemon Docker clone repo → build image
    pushing   image → registry lokal   (dilewati di server remote)
    starting  container baru dibuat, tunggu healthy
    success   container lama diganti · status aplikasi Running

    Deploy berikutnya menolak (409) selama masih ada deployment aktif. Gagal build/push tidak menyentuh container yang sedang berjalan. Detail di Deploy & rollback.

Verifikasi

  • Deployment pertama berakhir success dan badge status aplikasi Running.
  • Log container (tab Deploy) menampilkan output aplikasi, mis. Listening on :3000.
  • Bila memakai port host: curl http://<ip-server>:<port-host>/ menjawab. Bila memakai domain: lanjut ke Proxy & domain.

Tab di halaman aplikasi

TabIsi
DeployTombol Deploy/Stop/Start, daftar deployment, log deployment & log container streaming, metrik, Rollback.
PengaturanForm yang sama dengan saat membuat, plus Environment variables dan Build args.
DomainHostname untuk aplikasi + toggle HTTPS + cek DNS.
MountVolume, bind, file — dan backup volume.
JobsPerintah terjadwal.
WebhookURL webhook, secret, dan preview pull request.

Jebakan umum

GejalaPenyebab & solusi
Deploy gagal di tahap pushingRegistry lokal belum di-provision, atau REGISTRY_PUBLIC_HOST bukan localhost tanpa TLS.
Build gagal: repository not foundRepo privat tanpa Kredensial Git, atau token tidak punya akses baca.
Pull gagal: unauthorized (sumber image)Image privat tanpa registry eksternal terpilih, atau token registry kedaluwarsa.
Health check tidak pernah healthyPort container tidak cocok dengan port yang di-listen, aplikasi hanya listen di 127.0.0.1, path tidak menjawab 2xx, atau image tidak punya wget/curl/node/python3.
Running tapi domain 404Container belum healthy, atau DNS belum mengarah — pakai tombol cek DNS di tab Domain.
Env baru tidak berlakuEnv diterapkan saat container dibuat — deploy (atau rollback) sekali lagi.
Server remote punya batasan
Aplikasi di server remote di-build di daemon server itu, tanpa push ke registry dan tanpa domain/Traefik — akses lewat port host. Detail di Server remote.

Langkah berikutnya

Ada yang keliru? Edit halaman ini di GitLab ↗