$ aoox

DocsInfrastruktur

DNS Cloudflare

Buat record DNS domain aplikasi secara otomatis dan dapatkan sertifikat wildcard lewat DNS-01, memakai API token Cloudflare.

Hubungkan
Integrasi → Penyedia DNS (owner/admin)
Per domain
Aplikasi → tab Domain: Record DNS, mode sertifikat
Wildcard
Infrastruktur → Reverse proxy → Sertifikat DNS-01 (owner)

Apa yang dilakukan

Biasanya Anda membuat record DNS domain sendiri dan aoox hanya memeriksanya. Dengan koneksi Cloudflare ada dua tambahan opsional:

  • Record DNS: saat Anda menambah domain ke aplikasi, aoox membuat record A (atau AAAA bila alamat server berupa IPv6) di zona Cloudflare Anda, mengarah ke IP yang sama dengan yang diharapkan cek DNS.
  • Sertifikat DNS-01: proxy membuktikan kepemilikan domain lewat API Cloudflare, bukan port 80, sehingga sertifikat wildcard menjadi mungkin (misalnya satu sertifikat untuk semua preview pull request).

Keduanya opsional. Tanpa koneksi, tidak ada yang berubah: DNS dan sertifikat tetap Anda kelola seperti biasa. Untuk saat ini hanya Cloudflare yang didukung.

Membuat API token

  1. Di Cloudflare: My Profile, API Tokens, Create Token

    Pilih token kustom dengan dua izin, dibatasi ke zona yang Anda pakai:

    • Zone:Zone:Read
    • Zone:DNS:Edit
  2. Salin tokennya

    Cloudflare hanya menampilkannya sekali. Token milik akun (bukan pengguna) juga membutuhkan ID akun, lihat di bawah.

Menambah koneksi

  1. Integrasi → Penyedia DNS

    Owner dan admin melihatnya. Klik tambah; dialognya bernama Koneksi Cloudflare baru.

  2. Isi nama dan token

    Beri nama (harus unik), tempel API token, dan isi ID akun (opsional) hanya untuk token milik akun. Token disimpan terenkripsi dan tidak dapat dilihat lagi.

  3. Uji

    Tombol uji memverifikasi token dan menampilkan zona yang bisa dilihatnya, misalnya “3 zona”. Token yang dibatasi ke satu sub-zona juga bisa: aoox mencari zona yang paling panjang cocok untuk tiap host.

Menghapus koneksi ditolak (409) selama masih ada domain atau proxy yang memakainya, karena aoox tidak lagi bisa membersihkan record yang pernah dibuatnya. Semua anggota project bisa melihat nama koneksi (untuk memilih pada domain); hanya owner dan admin yang menambah, menguji, atau menghapus.

Record DNS untuk sebuah domain

Di tab Domain aplikasi, form tambah punya pilihan Record DNS: Saya atur DNS sendiri (default) atau Cloudflare: <nama koneksi>. Tiap domain yang sudah ada punya pilihan yang sama di barisnya, dengan lencana status, tombol sinkronkan, dan pesan terakhir. Developer ke atas bisa mengubahnya; viewer hanya melihat.

OpsiArti
Proxied (awan oranye)Mati secara default. Proxy perlu melihat host asli dan menjawab tantangan sertifikat sendiri. Nyalakan hanya bila Anda memang ingin Cloudflare di depan; mode SSL-nya lalu harus Full (strict) (lihat Bagaimana HTTPS bekerja).
Ganti record yang sudah ada dengan isi berbedaMati secara default. Lihat aturan di bawah.

Perlakuan aoox terhadap record yang sudah ada

SituasiYang dilakukan aoox
Belum ada record untuk nama ituMembuatnya (TTL otomatis, komentar “Managed by aoox”).
Record buatan aoox sebelumnya telah berubahMemperbaruinya di tempat.
Ada record dengan isi lainDibiarkan dan dilaporkan sebagai peringatan. Bila Ganti record yang sudah ada… aktif, aoox memperbarui dan mengambil alih record itu.
Ada record identik yang bukan buatan aooxDibiarkan apa adanya dan tidak dilacak, jadi tidak akan pernah dihapus nanti.
Ada CNAME pada nama ituTidak membuat apa pun dan memberi peringatan.
Tidak ada zona yang cocok dengan host, atau Cloudflare tidak terjangkauMemberi peringatan; domainnya tetap ditambahkan.
  • DNS tidak pernah menggagalkan permintaan. Domain tetap ditambahkan dan masalahnya muncul sebagai peringatan (“Domain ditambahkan, tetapi DNS perlu diperiksa”) plus lencana Peringatan DNS atau DNS gagal di barisnya. Perbaiki penyebabnya lalu tekan tombol sinkronkan untuk mencoba lagi; DNS ok berarti record sudah ada.
  • aoox hanya menghapus record yang dibuatnya sendiri, berdasarkan id yang tersimpan, saat Anda menghapus domain, menghapus aplikasi, atau mengembalikan domain ke Saya atur DNS sendiri. Ia tidak pernah mendaftar atau menghapus hal lain di zona Anda.
  • Record ditulis sebelum container dibuat ulang, jadi permintaan sertifikat pertama sudah menemukan namanya.
  • Menghapus seluruh project hanya menghapus barisnya: record di Cloudflare tetap ada.
  • Ekspor project menyimpan nama koneksi dan flag proxied, tidak pernah token atau id record. Impor tidak membuat record: pakai tombol sinkronkan.

DNS-01 pada proxy

Sertifikat memakai HTTP-01 kecuali Anda mengaktifkan ini. Fitur ini menambah resolver ACME kedua di Traefik yang menjawab tantangan lewat Cloudflare.

  1. Atur email ACME pada proxy dulu

    DNS-01 memakai email akun ACME yang sama, jadi proxy harus sudah punya satu (Aktifkan reverse proxy).

  2. Infrastruktur → Reverse proxy → kartu Sertifikat DNS-01

    Pilih proxy (Host aoox atau server remote), pilih Koneksi DNS, lalu klik Aktifkan DNS-01. Owner yang bisa mengubahnya; admin bisa melihat.

  3. Konfirmasi pembuatan ulang

    Pada proxy yang berjalan muncul dialog Buat ulang proxy?: proxy dibuat ulang, beberapa detik tanpa layanan untuk semua domain di dalamnya. Sertifikat dan rute lain tetap ada. Lanjutkan dengan Buat ulang dan lanjutkan.

Kartu menampilkan status: Aktif, Mati, Belum diterapkan (tersimpan, proxy belum dibuat ulang) atau Proxy tidak berjalan, beserta apa yang bergantung padanya. Tombol Nonaktifkan ditolak (409) selama masih ada domain atau preview yang memakai DNS-01; kembalikan dulu ke otomatis.

Token terlihat di mesin itu
Token diteruskan ke container proxy sebagai variabel lingkungan, sehingga siapa pun yang bisa menjalankan docker inspect di mesin itu dapat membacanya, seperti rahasia lain yang aoox berikan ke container. Pakai token yang dibatasi ke zona yang diperlukan.

Mode sertifikat

Setelah proxy punya DNS-01, domain HTTPS mendapat pilihan Mode sertifikat di tab Domain (tanpa DNS-01 hanya muncul keterangan bahwa DNS-01 belum diaktifkan pada proxy ini):

ModeSertifikat
Otomatis (HTTP-01)Default: diminta saat host pertama kali diakses, butuh port 80.
DNS-01 untuk host iniSatu sertifikat untuk host itu, dibuktikan lewat DNS.
Wildcard DNS-01 (*.example.com)Satu sertifikat untuk domain induk host (app.example.com menjadi *.example.com), dipakai bersama oleh semua host di bawahnya.
  • Hanya untuk domain HTTPS, dan tidak bersama sertifikat yang diunggah (API menjawab 400).
  • Bila domain meminta DNS-01 tetapi proxy-nya tidak lagi punya resolver, ia kembali ke HTTP-01 dengan peringatan, bukan gagal.
  • Impor project mempertahankan mode DNS-01 hanya bila proxy tujuan punya DNS-01; jika tidak, domain memakai HTTP-01 dan laporan mencatatnya.

Sertifikat wildcard untuk preview

Preview pull request biasanya mendapat sertifikat per host preview. Di tab Webhook aplikasi, kartu preview punya Sertifikat wildcard untuk preview: satu sertifikat DNS-01 untuk *.<domain preview>, bukan satu per pull request. Perlu DNS-01 pada proxy dan domain preview; sakelarnya nonaktif beserta penjelasan sampai keduanya ada.

Record DNS wildcard tetap Anda buat sendiri
aoox tidak membuat record untuk wildcard preview. Tambahkan *.preview.example.com sendiri, seperti pada prasyarat preview.

Batasan

  • Hanya Cloudflare. Penyedia DNS lain belum didukung.
  • Record dibuat hanya untuk domain aplikasi. Domain stack compose dan host UI admin database tetap DNS manual.
  • Tidak ada cek DNS ke Cloudflare sendiri; cek DNS biasa tetap membandingkan DNS publik dengan IP yang diharapkan.
  • Penerbitan sertifikat DNS-01 yang sebenarnya dan proxy di server remote belum dicoba dengan akun Cloudflare sungguhan; uji dulu dengan ACME staging.

Jebakan umum

GejalaPenyebab & solusi
Uji menjawab 403 atau tidak ada zonaToken tidak punya Zone:Zone:Read atau Zone:DNS:Edit, atau dibatasi ke zona lain. Buat token baru.
Peringatan: tidak ada zona untuk hostToken tidak bisa melihat zona yang memuat host itu. Tambahkan zonanya ke token.
Peringatan: record sudah adaAda record lain dengan isi berbeda pada nama itu. Ubah sendiri, atau pakai Ganti record yang sudah ada….
Browser menolak sertifikat saat Proxied aktifMode SSL Cloudflare harus Full (strict); atau matikan Proxied.
Aktifkan DNS-01 meminta email ACMEProxy belum punya email ACME; atur dulu.
Koneksi tidak bisa dihapus atau DNS-01 tidak bisa dinonaktifkan (409)Masih ada domain, preview, atau proxy yang memakainya. Lepaskan dulu.

Langkah berikutnya

Ada yang keliru? Edit halaman ini di GitHub ↗