---
type: explanation
title: Pasang gerbang di depan seluruh situs pada reverse proxy-mu
summary: Apa itu gerbang proxy, untuk siapa ia, dan bagaimana seorang pengunjung menyelesaikan satu game untuk memperoleh pass berumur pendek yang meloloskan permintaannya, agar kamu bisa melindungi app yang tak bisa disisipi widget.
---

Cara normal memakai Caputchin adalah menyisipkan [widget](/docs/site-keys/embedding-the-widget) di sebuah halaman dan memverifikasi token dari backend-mu. Itu butuh tempat untuk menaruh widget dan backend untuk memeriksa token. Gerbang proxy tak butuh keduanya. Ia menempatkan verifikasi satu halaman penuh di depan seluruh situs atau rute pada **reverse proxy**-mu: seorang pengunjung menyelesaikan satu game, memperoleh pass berumur pendek, dan menjelajahi situs sampai pass itu kedaluwarsa. App yang dilindungi tak pernah disentuh.

Karena tak ada yang ditambahkan ke app itu sendiri, inilah cara melindungi host yang tak bisa kamu sisipi skrip, sebuah portal login mono-halaman terkompilasi, sebuah appliance, atau sebuah alat internal yang duduk di balik proxy autentikasi.

<Callout type="info">
Gerbang proxy ada mulai paket Alpha ke atas, diaktifkan per kunci situs. Caputchin menghosting tantangan dan menerbitkan pass; kamu mengarahkan reverse proxy-mu yang ada (nginx, Traefik, Caddy, atau apa pun yang berada di depan app-mu) ke sana.
</Callout>

## Untuk siapa ia

Raih gerbang saat widget inline tak cocok:

- **App tak punya tempat untuk widget.** Sebuah portal login tersegel (seperti Authelia), sebuah appliance vendor, atau UI apa pun yang tak bisa kamu edit.
- **Kamu ingin memasang gerbang pada seluruh permukaan, bukan satu formulir.** "Buktikan kamu manusia sebelum mencapai situs ini" ketimbang pemeriksaan pada satu pengiriman tunggal.
- **Kamu tak punya backend untuk memverifikasi token.** Proxy yang menegakkan aturan; tak ada panggilan `/siteverify` untuk ditulis.

Untuk halaman atau formulir normal yang kamu kendalikan, sisipkan [widget](/docs/site-keys/embedding-the-widget) saja, ia lebih ringan dan tak mengalihkan pengunjung. Jika kamu punya formulir tapi tak punya backend, [verifikasi terhosting](/docs/hosted-verification/overview) lebih pas.

## Bagaimana ia bekerja

Satu penyelesaian membeli banyak permintaan. Pengunjung memainkan game sekali; setelah itu sebuah cookie pihak-pertama meloloskan permintaannya sampai kedaluwarsa.

```mermaid
sequenceDiagram
    participant V as Pengunjung
    participant P as Reverse proxy-mu
    participant C as Caputchin
    V->>P: minta URL bergerbang
    P->>C: cek authz (meneruskan cookie cpt_gate)
    C-->>P: 401, belum ada pass sah
    P-->>V: 302 ke tantangan terhosting
    V->>C: mainkan game
    C-->>V: pass, auto-POST ke callback-mu
    V->>P: POST pass ke /__cpt/callback
    P-->>V: set cookie cpt_gate, alihkan balik
    V->>P: minta lagi (cookie ada)
    P->>C: cek authz
    C-->>P: 204 izinkan
    P-->>V: app-mu merespons
```

Proxy membuat panggilan **otorisator** kecil ke Caputchin di tiap permintaan. Saat permintaan tak membawa pass sah, Caputchin menjawab `401` dan proxy mengalihkan pengunjung ke tantangan terhosting. Saat pass ada dan sah, Caputchin menjawab `204` dan proxy meloloskan permintaan ke app-mu.

## Cookie izin lewat

Pass hidup dalam sebuah cookie pihak-pertama bernama `cpt_gate`, di-set pada domain-mu sendiri oleh sebuah callback kecil yang kamu hosting. Ia adalah token bertanda tangan berumur pendek, tak terikat ke perangkat, jadi keamanannya datang sepenuhnya dari atribut cookie (`HttpOnly`, `Secure`, `SameSite=Lax`) dan TTL pendek yang kamu pilih. Karena ia men-set cookie pada pengunjungmu, ungkapkan itu di kebijakan cookie-mu. [Panduan penyiapan](/docs/proxy-page-gate/set-up) menelusuri callback dan atribut yang diperlukan.

## Apa yang sengaja ditinggalkan

- **Tanpa gerbang swahosting.** Caputchin menghosting tantangan dan memverifikasi pass; kamu tak menjalankan verifikator. Proxy-mu hanya meneruskan cookie dan mengikuti pengalihan.
- **Pemeriksaan per permintaan, bukan validasi token lokal.** Proxy bertanya ke Caputchin di tiap permintaan. **Mode gagal** yang kamu pilih (terbuka atau tertutup) menentukan apa yang terjadi jika Caputchin sesaat tak terjangkau.
- **Izin lewat per kunci situs, berskop cookie.** Sebuah pass meloloskan satu origin, bukan seluruh akun atau beberapa domain, karena ia cookie pihak-pertama biasa.
- **Bukan sesi atau login.** Gerbang membuktikan seorang manusia mencapai situs; app-mu tetap mengurus autentikasi dan batas laju-nya sendiri. Keduanya bertumpuk.

## Lihat juga

- [Siapkan gerbang proxy](/docs/proxy-page-gate/set-up): aktifkan dan sambungkan proxy-mu ujung ke ujung.
- [Resep reverse proxy](/docs/proxy-page-gate/reverse-proxy-recipes): nginx, Traefik, Caddy, dan contoh terpecahkan Authelia.
- [Statistik gerbang proxy](/docs/proxy-page-gate/statistics): baca rasio lolos langsung terhadap tantangan.
- [Verifikasi terhosting](/docs/hosted-verification/overview): opsi tanpa backend saat kamu memang punya formulir untuk diarahkan ke kami.
