Giter Site home page Giter Site logo

docker-hub-rss's Introduction

Docker Hub RSS

Build Status Docker Pulls

RSS feed for Docker Hub images

Why?

Docker Hub doesn't provide notifications for new image releases, so Docker Hub RSS turns image tags into an RSS feed for easy consumption. Subscribe using Slack RSS, Feedly, or any other RSS feed reader to get notified when a new image is published.

Quickstart

Run with Docker by executing: docker run -d -p 3000:3000 --name=docker-hub-rss theconnman/docker-hub-rss:latest

To use point an RSS feed reader to http://<url>:3000/<docker-hub-user>/<docker-hub-repo>.atom. The easiest way to create a publicly accessible endpoint for an RSS reader is to use Localtunnel to proxy a public location to your local Docker Hub RSS instance.

Local Development

To develop locally run the following:

npm i -g vercel
git clone https://github.com/TheConnMan/docker-hub-rss.git
cd docker-hub-rss
yarn install
vercel dev

Environment Variables

  • FLUENTD_HOST (Optional) Fluent host for logging
  • FLUENTD_TAGS (Optional) Add FluentD context tags (format is tag:value,tag2:value2)
  • TAGS_FETCH_LIMIT (Optional) Fetch only the given number of tags (before being filtered). Useful for reducing traffic and avoiding possible time-outs.
  • PORT (Default: 3000) Port to run the service on

Info Endpoint

/info is helper endpoint which provides additional information about the environment including:

  • version: The version number of this Docker Hub RSS instance

docker-hub-rss's People

Contributors

baklap4 avatar brot avatar craue avatar curudel avatar dependabot[bot] avatar italypaleale avatar jhollowe avatar jmechnich avatar juniorjpdj avatar oliverisaac avatar theconnman avatar thegreatestjannet avatar visit1985 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

docker-hub-rss's Issues

How to get a feed of the official feed?

Currently you have to specify a user and a repository to get a feed however offical repo's like rabbitmq don't have a user.. so how would we be able to add those feeds?

image

Hit Docker rate limits?

Unfortunately it seems like using this hosted in a docker on my system caused my IP to get flagged for a rate limit. Now when I go to hub.docker.com and I'm not logged in, searches come back with no results and if I try to go directly to a repository I know exists, I get a 404. It only happens when I'm 1) not logged in and 2) only from my IP. I tested this from my cell phone while connected to wifi and then after disconnecting from wifi. Trying to reach a known repository while connected to wifi resulted in a 404. I disconnected the wifi and went to the same URL and it worked fine.

I have 11 different RSS feeds I use to check for new images and I believe my RSS server refreshes every 15 minutes. Guess that was too much for Dockers liking.

Container crashed with let detailDefined = typeof body.detail !== 'undefined' error

I realized today that the container crashed after 2 months+ of good service.

/app/node_modules/docker-hub-api/src/api.js:1310
            let detailDefined = typeof body.detail !== 'undefined';
                                            ^

TypeError: Cannot read properties of undefined (reading 'detail')
    at Object.bodyHasError (/app/node_modules/docker-hub-api/src/api.js:1310:45)
    at Object.<anonymous> (/app/node_modules/docker-hub-api/src/api.js:1359:38)
    at Request.self.callback (/app/node_modules/request/request.js:185:22)
    at Request.emit (node:events:513:28)
    at Request.<anonymous> (/app/node_modules/request/request.js:1154:10)
    at Request.emit (node:events:513:28)
    at IncomingMessage.<anonymous> (/app/node_modules/request/request.js:1076:12)
    at Object.onceWrapper (node:events:627:28)
    at IncomingMessage.emit (node:events:525:35)
    at endReadableNT (node:internal/streams/readable:1358:12)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Any idea what could have caused this ?

Thanks for the great tool!

SyntaxError: Unexpected token ...

I use this container for months, automatic updating with ouroboros without any problem. Today I played a little with traefik (using v1, tried to set up v2), and I just realized my dockerhubrss container is down. I tried to start the container and I got the following:

docker-hub-rss    | 2020-05-12T06:44:31.983821306Z yarn start v0.24.6
docker-hub-rss    | 2020-05-12T06:44:32.112275766Z $ node index.js 
docker-hub-rss    | 2020-05-12T06:44:32.624243495Z /app/node_modules/docker-hub-api/src/api.js:549
docker-hub-rss    | 2020-05-12T06:44:32.624348082Z                         ...details,
docker-hub-rss    | 2020-05-12T06:44:32.624364167Z                         ^^^
docker-hub-rss    | 2020-05-12T06:44:32.624376341Z 
docker-hub-rss    | 2020-05-12T06:44:32.624387770Z SyntaxError: Unexpected token ...
docker-hub-rss    | 2020-05-12T06:44:32.624399507Z     at createScript (vm.js:74:10)
docker-hub-rss    | 2020-05-12T06:44:32.624410824Z     at Object.runInThisContext (vm.js:116:10)
docker-hub-rss    | 2020-05-12T06:44:32.624422844Z     at Module._compile (module.js:533:28)
docker-hub-rss    | 2020-05-12T06:44:32.624433934Z     at Object.Module._extensions..js (module.js:580:10)
docker-hub-rss    | 2020-05-12T06:44:32.624445265Z     at Module.load (module.js:503:32)
docker-hub-rss    | 2020-05-12T06:44:32.624456178Z     at tryModuleLoad (module.js:466:12)
docker-hub-rss    | 2020-05-12T06:44:32.624467530Z     at Function.Module._load (module.js:458:3)
docker-hub-rss    | 2020-05-12T06:44:32.624478810Z     at Module.require (module.js:513:17)
docker-hub-rss    | 2020-05-12T06:44:32.624490141Z     at require (internal/module.js:11:18)
docker-hub-rss    | 2020-05-12T06:44:32.624501304Z     at Object.<anonymous> (/app/index.js:1:82)
docker-hub-rss    | 2020-05-12T06:44:32.630063891Z error Command failed with exit code 1.

For reference, this is my docker-compose.yml, nothing fancy:

version: "3.7"

services:
  docker-hub-rss:
    image: theconnman/docker-hub-rss
    container_name: docker-hub-rss
    restart: always
    networks:
      - traefik-network
    labels:
      - "com.ouroboros.enable=true"
      - "com.centurylinklabs.watchtower.enable=true"
      - "traefik.enable=true"
      - "traefik.backend=dockerhubrss"
      - "traefik.frontend.rule=Host:dockerhubrss.${DOMAINNAME}"
      - "traefik.port=3000"
      - "traefik.docker.network=traefik-network"
      - "traefik.frontend.headers.SSLRedirect=true"
      - "traefik.frontend.headers.STSSeconds=315360000"
      - "traefik.frontend.headers.browserXSSFilter=true"
      - "traefik.frontend.headers.contentTypeNosniff=true"
      - "traefik.frontend.headers.forceSTSHeader=true"
      - "traefik.frontend.headers.SSLHost=example.com"
      - "traefik.frontend.headers.STSIncludeSubdomains=true"
      - "traefik.frontend.headers.STSPreload=true"
      - "traefik.frontend.headers.frameDeny=true"

networks:
  traefik-network:
    external: true

I tried to pull the latest image, but no new image, I use the latest.

REPOSITORY                  TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
theconnman/docker-hub-rss   latest              sha256:9c7f74d19be4c091c553ea1155475b11101b68092794a63bb80ca9a15e40fd6e   3c304cc754df        2 days ago          109MB

rss.p.theconnman.com is down

I stumbled upon this project while I was looking for a way to keep the software we use up to date. I used the service you provided at your website to keep track of the versions and it is really helpful! But it seems to be down for a couple of days. Do you plan to bring it back up?

After an hour or so, I got some results displayed, but the page still seems to be down.

TypeError: Cannot read properties of undefined (reading 'detail')

Had this bug that exited the container. If it can help. Not sure about the initial request though.

TypeError: Cannot read properties of undefined (reading 'detail')
    at Object.bodyHasError (/app/node_modules/docker-hub-api/src/api.js:1310:45)
    at Object.<anonymous> (/app/node_modules/docker-hub-api/src/api.js:1359:38)
    at Request.self.callback (/app/node_modules/request/request.js:185:22)
    at Request.emit (node:events:513:28)
    at Request.<anonymous> (/app/node_modules/request/request.js:1154:10)
    at Request.emit (node:events:513:28)
    at IncomingMessage.<anonymous> (/app/node_modules/request/request.js:1076:12)
    at Object.onceWrapper (node:events:627:28)
    at IncomingMessage.emit (node:events:525:35)
    at endReadableNT (node:internal/streams/readable:1358:12)
error Command failed with exit code 1.

Add notification via POST

How about that:

A option to send a POST notification to an endpoint every time a tag get updated. This would make us able to trigger a Docker Automated Build (in Docker Hub) using the external trigger.

image

Cannot save subscription http://localhost:3000/r/dfinity/rosetta-api

I successfully get the repo up and running. I can see all the feeds when I subscribe to dfinity/rosetta-api in the browser. It also says Subscribe to this feed: http://localhost:3000/dfinity/rosetta-api.atom or http://localhost:3000/r/dfinity/rosetta-api.

So I input and enter /feed subscribe http://localhost:3000/dfinity/rosetta-api.atom in the slack chat like I usually did, it returns Cannot save subscription(http://localhost:3000/r/dfinity/rosetta-api).

I also tried to subscribe to the link in the rss app in the slack app directory. It only returns Error fetching RSS feed. without more details.

Any ideas what I did wrong here?

how to determine running version?

I'm running this in docker, and I'm wondering what's a reliable way to determine the exact version currently running? Either an endpoint, a command to be run in the container or similar possibility welcome.

Feature Request: RSS feed item description

I want to have image digest in RSS feed item description, for archiving and convenience.

For sake of simplicity, the JSON object for each tag can be used as item description directly. And make it optional as an extra switch.

Something like

{
    "creator": 7,
    "full_size": 36059464,
    "id": 99483,
    "image_id": null,
    "images": [
        {
            "architecture": "arm",
            "digest": "sha256:223205794793b82b45b49ddf0cd86c1d53c105702e6de08c27937b4cedfd9c70",
            "features": "",
            "os": "linux",
            "os_features": "",
            "os_version": null,
            "size": 31067038,
            "variant": "v7"
        },
        {
            "architecture": "amd64",
            "digest": "sha256:4ba575efa3b82a7f54b9fe342e3e2fa342584b819ffe3d57201df2e0d311a98b",
            "features": "",
            "os": "linux",
            "os_features": "",
            "os_version": null,
            "size": 36059464,
            "variant": null
        },
        {
            "architecture": "ppc64le",
            "digest": "sha256:c4f3561c32beddfee4efdcc938f27b1877befbb7264c1124a9f1abce2d744bcf",
            "features": "",
            "os": "linux",
            "os_features": "",
            "os_version": null,
            "size": 39726181,
            "variant": null
        },
        {
            "architecture": "arm",
            "digest": "sha256:f1aff18a7013dece1ddcb7d5de7432fb942ec04d316918116e8f4e85841fd2c1",
            "features": "",
            "os": "linux",
            "os_features": "",
            "os_version": null,
            "size": 28148471,
            "variant": "v5"
        },
        {
            "architecture": "386",
            "digest": "sha256:a98f0bf1cbc104a156eafcf49461ca86f5fdf0eb34faf3254218fb87dffa5a81",
            "features": "",
            "os": "linux",
            "os_features": "",
            "os_version": null,
            "size": 36472394,
            "variant": null
        },
        {
            "architecture": "arm64",
            "digest": "sha256:d1e9615412683ffd03f17a205cf6189eddebd93bf6890d4eceaa989df0c0178f",
            "features": "",
            "os": "linux",
            "os_features": "",
            "os_version": null,
            "size": 34617292,
            "variant": "v8"
        },
        {
            "architecture": "s390x",
            "digest": "sha256:3bc942e43c2439f437ac1a805e1d8255c4d76688c1da90e9d2a9a42077c989d0",
            "features": "",
            "os": "linux",
            "os_features": "",
            "os_version": null,
            "size": 34169792,
            "variant": null
        }
    ],
    "last_updated": "2019-12-23T19:58:18.970793Z",
    "last_updater": 1156886,
    "last_updater_username": "doijanky",
    "name": "latest",
    "repository": 109121,
    "v2": true
}

support just hostname change

Hi,
I'm interested in feature like that:
I just go to dockerhub and replace hub.docker.com with my.own.hostname.com in URL.
Eg. https://hub.docker.com/r/rssbridge/rss-bridge would change to https://docker-hub-rss.now.sh/r/rssbridge/rss-bridge
It could be just normal http redirection to your urls

ARM Docker image

Would it be possible to have an ARM docker image so that users on raspberry pi or other ARM boards could install and run it?

Include or exclude by regex or glob

It would be great to be able to filter or exclude tags by pattern. Some images have a tag per Git commit which gets old very quickly, or several variants of snapshot, latest for different flavours and branches. I'd like to, for example, include only 'v*' or similar tags that match released versions.

High CPU and RAM usage

Hey there,

I'm using the latest docker image and run into a strange behavior. After the container is running for a few minutes, the consumed ressources are going up. So, the glances is showing me, that the container uses 1/3 of the available CPU and roughly 1GB of RAM.

This seems to be very high for "just" an RSS service.

When freshly restarted, the container consumes only very little ressources (< 1% CPU, 60MB RAM).

Expose port 80 in container in order to increase compatibility with RSS aggregators

Hi! Let me start with thanking you for creating this extremely useful piece of software.

In my setup, I have added this container to the docker-compose file for deploying tt-rss.
By running the container in the same network as the RSS reader software, I don't have to expose the port to the host network at all.
However, tt-rss only works with the standard ports 80 and 443 for http and https, respectively.
There seems to be a good reason for that (see https://community.tt-rss.org/t/problem-subscribing-to-feed-on-custom-port/4203), so I am not expecting any changes on that end, and possibly there are comparable issues with other clients.

In my fork at https://github.com/jmechnich/docker-hub-rss, I have changed the port from 3000 to 80 and adapted the README accordingly, so that in practice, docker-hub-rss can still be used as before when running standalone (or using a reverse proxy or localtunnel).

I would be happy to open a PR here but first wanted to "test the waters" if this is something that might be considered useful.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.