From f2cb2f37fe96ce2f662c7f80a7090e23c410d4e3 Mon Sep 17 00:00:00 2001 From: Dan Farrelly Date: Wed, 30 Aug 2023 14:50:29 -0400 Subject: [PATCH] Docs: Add Vercel bypass protection docs --- pages/docs/deploy/vercel.mdx | 23 ++++++++++++++++++ .../docs/deploy/vercel-protection-bypass.png | Bin 0 -> 26185 bytes 2 files changed, 23 insertions(+) create mode 100644 public/assets/docs/deploy/vercel-protection-bypass.png diff --git a/pages/docs/deploy/vercel.mdx b/pages/docs/deploy/vercel.mdx index 1b5a87fab..c3803a035 100644 --- a/pages/docs/deploy/vercel.mdx +++ b/pages/docs/deploy/vercel.mdx @@ -29,6 +29,29 @@ Installing [Inngest's official Vercel integraiton](https://vercel.com/integratio After you're installed, every new deploy to Vercel will update functions in [the Inngest dashboard](https://app.inngest.com/functions) within a few seconds! +## Bypassing Deployment Protection + +If you have Vercel's [Deployment Protection feature](https://vercel.com/docs/security/deployment-protection) enabled, _by default_, Inngest will not be able to send HTTP requests to your application's preview environments. To enable this, you will need to leverage Vercel's "[Protection Bypass for Automation](https://vercel.com/docs/security/deployment-protection#protection-bypass-for-automation)" feature. Access to this feature may be dependant on the Vercel plan that you're paying for (please see docs linked above). Here's how to set it up: + +1. Enable "Protection Bypass for Automation" on your Vercel project +2. Copy your secret +3. Goto [the Vercel integration settings page in the Inngest dashboard](https://app.inngest.com/settings/integrations/vercel) +4. For each project that you would like to enable this for, append the secret as a query string parameter to your Inngest serve route. e.g. `/api/inngest?x-vercel-protection-bypass=XYZ...` (see below). Inngest will now use this parameter to communicate with your application to bypass the deployment protection. +5. Trigger a re-deploy of your preview environment(s) (this re-deploys the functions to Inngest) + +A Vercel protection bypass secret appended as a query string in the Inngest dashboard + + + ⚠️ Warning - This URL is stored in the Inngest database as a plaintext value, so the bypass protection secret is not encrypted at rest in our database. In the future, we plan to store this value in a separate encrypted location. + + --- ### Manually registering functions diff --git a/public/assets/docs/deploy/vercel-protection-bypass.png b/public/assets/docs/deploy/vercel-protection-bypass.png new file mode 100644 index 0000000000000000000000000000000000000000..d871669f270c38308107c80f822876ac46e86ec5 GIT binary patch literal 26185 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 Cr@_1c literal 0 HcmV?d00001