$ aoox

DocsInfrastruktur

Konfigurasi proxy (middleware)

Tulis middleware Traefik sendiri (autentikasi, header, pembatas laju, allowlist IP, redirect) dan pasang per domain tanpa menyentuh server.

Kelola
Infrastruktur → Reverse proxy → Konfigurasi dinamis (owner; admin hanya lihat)
Pasang
Aplikasi → tab Domain → Middleware → Atur
Cakupan
Konfigurasi dinamis Traefik per proxy (host atau server remote)

Cara kerja

Traefik membaca konfigurasi dinamis dari sebuah direktori dan memuat ulang tiap berkas berubah, tanpa restart. aoox menyimpan berkas YAML buatanmu di database (sumber kebenaran) dan menulisnya ke proxy sebagai user-<nama>.yml. Berkas ini terpisah dari sertifikat kustom: aoox tidak pernah mengubah certs.yml atau berkas sertifikat, dan sertifikat tidak pernah menyentuh berkas user-.

  • Satu daftar berkas per proxy: pilih Host aoox atau salah satu server remote di bagian atas kartu.
  • Hanya bagian http yang diterima: middlewares, routers, services, serversTransports. tls (sertifikat dikelola di Sertifikat SSL), tcp, udp, dan kunci lain ditolak dengan pesan jelas.
  • Nama middleware, router, dan service hanya huruf kecil, angka, dan -, dan harus unik per proxy (lintas berkas aktif).
  • Maksimal 64 KB per berkas. Berkas yang dinonaktifkan tetap tersimpan di aoox tetapi dihapus dari proxy.

Membuat berkas

  1. Infrastruktur → Reverse proxy → Konfigurasi dinamis

    Hanya owner yang bisa mengubah; admin bisa membaca daftar dan isi berkas.

  2. Dari preset atau tulis sendiri

    Dari preset membuka formulir kecil dan menghasilkan YAML siap simpan di editor (kamu masih bisa mengubahnya):

    PresetIsi
    Basic authUsername dan password. Yang disimpan hanya hash bcrypt; password tidak pernah ada di berkas atau audit log.
    Security headersHSTS (hanya lewat HTTPS), nosniff, frame deny, referrer policy.
    Rate limitRata-rata, burst, dan periode per IP sumber.
    IP allowlistDaftar alamat/CIDR yang divalidasi; selain itu 403.
    Redirect wwwAlihkan www ke non-www atau sebaliknya (301). Pasang ke domain yang diarahkan (www.contoh.com untuk ke non-www, contoh.com untuk ke www).

    Atau Berkas baru untuk menulis YAML sendiri, mis.:

    http:
      middlewares:
        header-aoox:
          headers:
            customResponseHeaders:
              X-Powered-By: aoox
  3. Simpan

    aoox memeriksa struktur YAML, menulis berkas ke proxy, menunggu beberapa detik, lalu membaca log Traefik. Bila Traefik melaporkan galat tentang berkas itu, perubahan dibatalkan otomatis (versi sebelumnya dipulihkan) dan galatnya ditampilkan apa adanya.

Memasang ke domain

Di tab Domain aplikasi, tiap domain punya baris Middleware dengan tombol Atur. Pilih middleware dari berkas aktif di proxy yang melayani aplikasi itu (nama dalam bentuk nama@file). Urutan memilih adalah urutan menjalankan. Butuh peran developer ke atas; viewer hanya melihat. Menyimpan membuat ulang container aplikasi dengan label baru (tanpa build), seperti mengganti sertifikat.

  • Middleware dipasang di router HTTPS domain itu, dan di router HTTP untuk domain yang dilayani lewat HTTP. Pengalihan otomatis http→https tidak memakainya.
  • Domain dengan daftar middleware yang sama berbagi satu router; daftar berbeda dipisah otomatis, jadi middleware satu domain tidak memengaruhi domain lain.
  • Middleware yang dipakai domain tidak bisa dinonaktifkan, dihapus, atau diganti namanya (409, domainnya disebut). Lepas dari domain dulu.
  • Nama yang tidak ada di berkas aktif pada proxy aplikasi itu ditolak (400).

Proxy dari aoox versi lama

Proxy yang dibuat aoox versi lama belum membaca direktori konfigurasi dinamis. Saat berkas pertama diaktifkan, container proxy dibuat ulang satu kali: beberapa detik tanpa layanan untuk semua domain di proxy itu; sertifikat dan rute lain tetap. aoox meminta konfirmasi lebih dulu dan tidak menanyakannya lagi sesudahnya. Proxy baru tidak perlu dibuat ulang.

Terapkan ulang

Tombol Terapkan ulang menulis ulang semua berkas aktif ke proxy dan membersihkan berkas user-* yang sudah tidak ada di aoox. Pakai setelah restore instance (restore memulihkan isi berkas di database tetapi tidak menulis volume proxy), setelah proxy atau server dipasang ulang, atau bila berkas di volume berubah di luar aoox.

Batas waktu baca dan unggahan besar

aoox tidak membatasi ukuran body request di Traefik (tanpa middleware buffering), jadi unggahan 55 MB tidak ditolak karena ukurannya. Yang bisa memutusnya adalah readTimeout pada entrypoint Traefik: waktu terlama yang boleh dipakai klien untuk mengirim satu request utuh, termasuk body. Bawaan Traefik 60 detik; koneksi lambat yang butuh lebih lama diputus sebelum aplikasi menerima body selengkapnya.

  • Atur Batas waktu baca proxy di Infrastruktur → Environment (owner), atau PROXY_READ_TIMEOUT di .env.dist: detik utuh (300) atau durasi (300s, 5m), 1 sampai 86400. Kosong berarti bawaan Traefik; nilai yang tidak valid diabaikan dengan peringatan di log API.
  • Ini konfigurasi statis proxy, jadi baru berlaku setelah proxy dipasang ulang: pakai Pasang ulang proxy di halaman Reverse proxy (beberapa detik tanpa layanan; sertifikat dan rute tetap). Halaman itu menampilkan nilai yang dipakai proxy yang berjalan dan memperingatkan bila berbeda dari pengaturan.
  • Pengaturan ini milik panel dan diterapkan ke setiap proxy yang dipasang aoox, termasuk di server remote (pasang ulang dari Server remote).
  • Sesuatu di depan Traefik punya batas sendiri. Misalnya domain lewat proxy Cloudflare (awan oranye) membatasi ukuran body menurut paket dan menyerah menunggu respons sekitar 100 detik, berapa pun nilai di sini.

Batas

  • Hanya konfigurasi dinamis. Opsi statis Traefik (entrypoint, level log, IP tepercaya) tidak bisa diubah dari sini, kecuali batas waktu baca di atas.
  • aoox hanya menangkap galat yang dicatat Traefik. Nilai yang keliru tetapi tidak dilaporkan (mis. URL service yang tidak valid) lolos, jadi uji hasilnya setelah menyimpan.
  • Konfigurasi yang valid tetap bisa mengubah perutean semua domain di proxy itu (router buatanmu bisa bertabrakan dengan rute aplikasi). Karena itu hanya owner yang boleh menulis.
  • Server remote: ditulis lewat jalur yang sama, tetapi belum diuji pada server sungguhan; pastikan berkas yang dibutuhkan ada di proxy server tujuan sebelum memindahkan aplikasi.
  • Berkas bersifat per proxy dan tidak ikut ekspor/impor project; domain hasil impor tidak punya middleware (impor tetap berhasil bila sumbernya memakainya).
  • Memindahkan aplikasi ke server lain membersihkan middleware domainnya: hanya yang namanya didefinisikan berkas aktif di proxy tujuan yang dipertahankan, sisanya dibuang (dicatat di log API; respons PATCH aplikasi memuat droppedMiddlewares bila ada yang dibuang). Berkasnya sendiri tidak ikut pindah.

Jebakan umum

GejalaPenyebab & solusi
400: Traefik rejected the fileTraefik menolak isi berkas (opsi tidak dikenal, tipe salah, router merujuk middleware yang tidak ada, rule rusak). Versi sebelumnya sudah dipulihkan; perbaiki sesuai kutipan galat.
400: sudah dideklarasikan di berkas lainNama middleware/router/service harus unik per proxy. Ganti nama atau hapus yang lain.
409: masih dipakai domainLepas middleware dari domain (tab Domain) sebelum menonaktifkan, menghapus, atau mengganti namanya.
409: proxy akan dibuat ulangProxy lama; konfirmasi pembuatan ulang satu kali (beberapa detik tanpa layanan).
Middleware terpasang tetapi tidak berlakuDomain belum menyimpan perubahan (container dibuat ulang saat disimpan), atau proxy belum berjalan; lihat peringatan setelah menyimpan.
Basic auth selalu 401Password salah, atau ada proxy lain (mis. Cloudflare) di depan yang menambah header Authorization.

Langkah berikutnya

Ada yang keliru? Edit halaman ini di GitHub ↗