---
title: "IP Blocking with Upstash"
description: "Template featuring IP Blocking at the edge using Upstash."
url: "https://vercel.com/templates/next.js/ip-blocking"
links:
  repository: "https://github.com/vercel/examples/tree/main/edge-middleware/ip-blocking"
  demo: "https://edge-functions-ip-blocking.vercel.app"
  deploy: "https://vercel.com/new/clone?demo-title=IP+Blocking+with+Upstash&demo-description=Template+featuring+IP+Blocking+at+the+edge+using+Upstash.&demo-url=https%3A%2F%2Fedge-functions-ip-blocking.vercel.app&project-name=ip-blocking&repository-name=ip-blocking&repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fexamples%2Ftree%2Fmain%2Fedge-middleware%2Fapi-rate-limit-and-tokens&env=UPSTASH_REST_API_DOMAIN%2CUPSTASH_REST_API_TOKEN&demo-image=%2F%2Fimages.ctfassets.net%2Fe5382hct74si%2F5cU4Eb3kbXevA3Lo8dCTOE%2Fcb3f0979bcd66c2da79e5e1d6365a8e7%2FCleanShot_2022-07-15_at_13.53.51.png"
---

# IP Blocking with Upstash

Template featuring IP Blocking at the edge using Upstash.

# IP Blocking with Upstash

This example features IP blocking at the edge with Redis using [Upstash](https://upstash.com/).

## Demo

https://edge-functions-ip-blocking.vercel.app

## How to Use

You can choose from one of the following two methods to use this repository:

### One-Click Deploy

Deploy the example using [Vercel](https://vercel.com?utm_source=github&utm_medium=readme):

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fexamples%2Ftree%2Fmain%2Fedge-middleware%2Fapi-rate-limit-and-tokens&env=UPSTASH_REST_API_DOMAIN,UPSTASH_REST_API_TOKEN&project-name=ip-blocking&repository-name=ip-blocking)

### Clone and Deploy

Execute [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) with [pnpm](https://pnpm.io/installation) to bootstrap the example:

```bash
pnpm create next-app --example https://github.com/vercel/examples/tree/main/edge-middleware/ip-blocking ip-blocking
```

You'll need to have an account with [Upstash](https://upstash.com/). Once that's done, copy the `.env.example` file in this directory to `.env.local` (which will be ignored by Git):

```bash
cp .env.example .env.local
```

Then open `.env.local` and set the environment variables to match the REST API of your database. It should look like this:

```bash
UPSTASH_REST_API_DOMAIN = "us1-shiny-firefly-12345.upstash.io"
UPSTASH_REST_API_TOKEN = "your-api-token"
```

Next, run Next.js in development mode:

```bash
pnpm dev
```

Deploy it to the cloud with [Vercel](https://vercel.com/new?utm_source=github&utm_medium=readme&utm_campaign=edge-middleware-eap) ([Documentation](https://nextjs.org/docs/deployment)).

## Related Templates

### [Bot Detection with Botd](https://vercel.com/templates/next.js/bot-protection-botd)

Botd is a browser library for bot detection. In this template we'll be using it alongside botd-integrations for bot detection at the edge.

### [Bot Protection with DataDome](https://vercel.com/templates/next.js/bot-protection-datadome)

DataDome can provide real-time bot protection and other security protections to any website. In this template we'll be using it at the edge.

### [IP Blocking with DataDome](https://vercel.com/templates/next.js/ip-blocking-datadome)

DataDome can provide real-time bot protection, ip blocking, custom rules protection and other security protections to any website.

---

## Additional documentation

The [Vercel Knowledge Base](https://vercel.com/kb) contains guides and answers to common questions about Vercel, including deployment, framework configuration, domains, caching, and troubleshooting.
