Sign inSign up

waazaafr/release-feeds-to-discord

By waazaafr

β€’Updated 10 months ago

Relays new Docker image release announcements from RSS feeds directly to Discord.

Image
Developer tools
0

6.9K

waazaafr/release-feeds-to-discord repository overview

⁠🐳 release-feeds-to-discord

release-feeds-to-discord is a Python application that relays new Docker image release announcements from RSS feeds directly to Discord.


β πŸ”§ Features

  • Supports global or per-feed Discord webhooks
  • Customizable check interval between feed scans
  • Configurable maximum number of releases to announce
  • Option to include or exclude nightly builds

β πŸš€ How It Works

You provide a list of RSS feed URLs to monitor.
The application checks them regularly and sends new entries to Discord, based on your configuration.


β βž• Adding New RSS Feeds

To add a new feed, simply specify the name of a Docker image.
The application will try to automatically:

  • Locate the corresponding RSS feed
  • Fetch the logo (if available)

β πŸš€ Getting Started


⁠🐳 Run with Docker (CLI)
docker run -it --rm --name release-feeds-to-discord \
  -e TZ=Europe/Paris \
  -e APP_PASSWORD=password \
  -e APP_SECRET_KEY=thisisabsolutelyfantastichetohaveamogwaiathome \
  -e LOG_LEVEL=info \
  -v ./config:/config \
  -v ./logs:/logs \
  -p 6544:6543 \
  waazaafr/release-feeds-to-discord:latest
⁠🐳 Build with Docker (CLI)
  1. Build the image:
git clone https://codeberg.org/waazaa/release-feeds-to-discord.git .
docker build -t release-feeds-to-discord .
  1. Run the container:
docker run -it --rm --name release-feeds-to-discord \
  -e TZ=Europe/Paris \
  -e APP_PASSWORD=password \
  -e APP_SECRET_KEY=thisisabsolutelyfantastichetohaveamogwaiathome \
  -e LOG_LEVEL=info \
  -v ./config:/config \
  -v ./logs:/logs \
  -p 6544:6543 \
  release-feeds-to-discord

⁠🐳 Run with Docker Compose
services:
  release_feeds_to_discord:
    image: waazaafr/release-feeds-to-discord:latest
    container_name: release-feeds-to-discord
    ports:
      - 6543:6543
    environment:
      - TZ=Europe/Paris
      - APP_PASSWORD=password
      - APP_SECRET_KEY=thisisabsolutelyfantastichetohaveamogwaiathome
      - LOG_LEVEL=info
    volumes:
      - ./config:/config
      - ./logs:/logs
⁠🐳 Build with Docker Compose
git clone https://codeberg.org/waazaa/release-feeds-to-discord.git .
services:
  release_feeds_to_discord:
    build: .
    image: release-feeds-to-discord
    container_name: release-feeds-to-discord
    ports:
      - 6543:6543
    environment:
      - TZ=Europe/Paris
      - APP_PASSWORD=password
      - APP_SECRET_KEY=thisisabsolutelyfantastichetohaveamogwaiathome
      - LOG_LEVEL=info
    volumes:
      - ./config:/config
      - ./logs:/logs

⁠🌍 Access the Web Interface

Visit: http://your-ip:6543

πŸ›‘οΈ Default login password: password

β βš™οΈ Configuration Example

The configuration is done in the webui but if you want to setup directly on config file this is the structure.

Sample configuration file (config.json):

{
  "global_interval": 10,
  "default_webhook": "https://discord.com/api/webhooks/1149304764908175410/8uA3U3bBXmJ82rAmxf6I2ozCh5-3kxHMYviNfQJ5EcgBikzJPA74X5VZJeeMvkhgJbVL",
  "feeds": [
    {
      "url": "https://github.com/immich-app/immich/releases.atom",
      "name": "immich-app/immich",
      "avatar": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/immich.png",
      "allow_nightly": false,
      "webhook": "",
      "max_announcements": 5
    }
  ]
}
β πŸ“ Field Explanation
KeyDescription
global_intervalInterval between two feed checks, in minutes (e.g. 10 = check every 10 minutes).
default_webhookThe Discord webhook URL used when a feed doesn’t specify its own webhook.
feedsA list of RSS feeds to monitor. Each feed object supports the following fields:
β πŸ” Feed Object Fields
FieldDescription
urlThe RSS or Atom feed URL to monitor for new releases.
nameA human-readable name for the feed, typically the Docker image or repository name.
avatar(Optional) URL of an image/icon to use as the avatar in the Discord notification.
allow_nightlyIf false, the app will skip releases containing "nightly" in their title.
webhook(Optional) A specific Discord webhook URL for this feed. If empty, default_webhook is used.
max_announcementsThe maximum number of releases to announce for this feed per check (only the most recent ones).

This setup will monitor the immich-app/immich GitHub releases feed every 10 minutes and post up to 5 new releases (excluding nightly builds) to the configured Discord channel, using the provided avatar image.

β πŸ”— How to Get an RSS Feed from a GitHub Project

When visiting a GitHub project that has a Releases page,
you can easily get the RSS feed by adding the .atom suffix.

β πŸ“˜ Example

If the release page is:

https://github.com/name/project/releases

Then the corresponding RSS feed URL will be:

https://github.com/name/project/releases.atom

You can use this .atom URL in your configuration under the url field of a feed.

β πŸ”— How to Get an RSS Feed from Docker Hub

Docker Hub does not provide RSS feeds for images,
but you can easily generate them using the docker-hub-rss container (https://github.com/TheConnMan/docker-hub-rss⁠).

β πŸ“˜ Example (Single Image)

Run the container (replace library/nginx with the image you want to track):

docker run -d \
  -p 8080:3000 \
  theconnman/docker-hub-rss

Then open in your browser:

http://localhost:8080/library/nginx.atom

This will display the RSS feed for library/nginx, which you can use in your configuration under the url field.


β πŸ“˜ Example (Multiple Images)

You can track multiple images by setting the IMAGES environment variable (comma-separated):

docker run -d \
  -p 8080:3000 \
  -e IMAGES="library/nginx,library/redis,myuser/myimage" \
  theconnman/docker-hub-rss

Then access each feed individually:

http://localhost:8080/library/nginx.atom
http://localhost:8080/library/redis.atom
http://localhost:8080/myuser/myimage.atom

β πŸ“˜ Example (docker-compose)

Minimal docker-compose.yml file:

services:
  docker-hub-rss:
    image: theconnman/docker-hub-rss:latest
    container_name: docker-hub-rss
    ports:
      - "8080:3000"
    restart: unless-stopped

Start the service:

docker-compose up -d

β πŸ› οΈ Useful Tips
  • To make it accessible only from your local machine: -p 127.0.0.1:8080:8080.
  • To change the port, adjust the -p mapping and the URL (e.g., -p 9000:8080 β†’ http://localhost:9000/library/nginx).
  • Use the generated URLs (http://<host>:<port>/<namespace>/<repo>) directly in your RSS configuration’s url field.

Made with ❀️ for Docker community

================================================================

Discord: https://discord.gg/p9xkjEw8ts⁠

Buy me coffee:

https://buymeacoffee.com/waazaa⁠

https://ko-fi.com/waazaa⁠

UnRAID: https://unraid.net/pricing?via=4c3f80⁠

Tag summary

Content type

Image

Digest

sha256:3d32d7df2…

Size

90.3 MB

Last updated

11 months ago

docker pull waazaafr/release-feeds-to-discord