Files
discord-webhook-proxy/README.md
T

105 lines
2.7 KiB
Markdown
Raw Normal View History

2026-04-29 00:02:58 +02:00
# Overseerr Webhook Proxy
A lightweight Spring Boot proxy that receives [Overseerr](https://overseerr.dev/) /
[Jellyseerr](https://github.com/Fallenbagel/jellyseerr) webhook notifications and
forwards them to **multiple Discord servers**, with per-notification-type routing.
## How it works
```
Overseerr ──POST /webhook──► Proxy ──► Discord Server A (Admins)
──► Discord Server B (General)
──► Discord Server C (Film fans)
```
Each Discord embed is colour-coded by notification type and includes the media
title, requester name, and media type.
---
## Quick start
### 1. Clone & configure
```bash
git clone https://github.com/yourname/overseerr-webhook-proxy
cd overseerr-webhook-proxy
mkdir config
cp src/main/resources/application.yml config/application.yml
```
Edit `config/application.yml` and replace the placeholder webhook URLs with your
real Discord webhook URLs.
### 2. Run with Docker Compose
```bash
docker compose up -d
```
### 3. Configure Overseerr
In Overseerr → **Settings → Notifications → Webhook**:
| Field | Value |
|-------|-------|
| Webhook URL | `http://<your-server-ip>:8080/webhook` |
| JSON payload | *(leave as default)* |
Click **Test** to send a test notification and verify it arrives in Discord.
---
## Configuration reference (`application.yml`)
```yaml
proxy:
routes:
MEDIA_APPROVED:
- https://discord.com/api/webhooks/ID1/TOKEN1 # admins
- https://discord.com/api/webhooks/ID2/TOKEN2 # general
MEDIA_AVAILABLE:
- https://discord.com/api/webhooks/ID2/TOKEN2 # general only
MEDIA_FAILED:
- https://discord.com/api/webhooks/ID1/TOKEN1 # admins only
default: # catch-all
- https://discord.com/api/webhooks/ID1/TOKEN1
```
### Supported notification types
| Type | Description |
|------|-------------|
| `MEDIA_PENDING` | New request submitted |
| `MEDIA_APPROVED` | Request approved |
| `MEDIA_DECLINED` | Request declined |
| `MEDIA_AVAILABLE` | Media is now available |
| `MEDIA_FAILED` | Download/processing failed |
| `TEST_NOTIFICATION` | Test from Overseerr settings |
| `default` | Catches any type not listed above |
---
## Building without Docker
Requirements: Java 21, Maven 3.9+
```bash
mvn package -DskipTests
java -jar target/overseerr-webhook-proxy-1.0.0.jar \
--spring.config.additional-location=file:./config/application.yml
```
---
## Endpoints
| Method | Path | Description |
|--------|------|-------------|
| `POST` | `/webhook` | Receives Overseerr notifications |
| `GET` | `/health` | Simple liveness check |
| `GET` | `/actuator/health` | Spring Boot Actuator health |