2026-04-29 00:02:58 +02:00
2026-04-29 00:02:58 +02:00
2026-04-29 00:02:58 +02:00
2026-04-29 00:02:58 +02:00
2026-04-29 00:02:58 +02:00
2026-04-29 00:02:58 +02:00
2026-04-29 00:02:58 +02:00
2026-04-29 00:02:58 +02:00
2026-04-29 00:02:58 +02:00

Overseerr Webhook Proxy

A lightweight Spring Boot proxy that receives Overseerr / 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

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

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)

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+

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
S
Description
A simple tool to receive discord webhooks and share them across different servers
Readme 52 KiB
Languages
Java 96.6%
Dockerfile 3.4%