Docker

Info

Docker is a tool that is used to automate the deployment of applications in lightweight containers so that applications can work efficiently in different environments in isolation.
- from Wikipedia

The official Docker image for tinyfeed is thebigroomxxl/tinyfeed

Running with pipelining

Warning

You will not be able to use pipelining if you don't use Docker's -i flag (interactive mode).

In this mode, you pass the feeds as arguments to the command and redirect the output using pipelining. This method is simpler because it does not require mounting a volume.

Single feed:

docker run -i thebigroomxxl/tinyfeed https://lovergne.dev/rss  > index.html

Multiple feeds from a file :

cat feeds.txt | docker run -i thebigroomxxl/tinyfeed > index.html

Running with input/output files as a volume

Warning

Files for the --input and --output flags won't be available if you don't mount them.

This mounts an entire directory where your input (feeds.txt) and output (index.html) files are located. If you want to bind only the input/output files instead, you will need to use bind mounts.

docker run -v /your/path:/app thebigroomxxl/tinyfeed -i feeds.txt -o index.html

Docker Compose equivalent:

services:
  tinyfeed:
    image: thebigroomxxl/tinyfeed
    command: -i feeds.txt -o index.html
    volumes:
      - /path/to/your/feeds/:/app

Running as a service (daemon mode)

tinyfeed has a daemon mode where it continuously runs and periodically updates the output file. To use it, pass the --daemon flag and set it to restart automatically using Docker's --restart unless-stopped.

This is the previous example adapted to run as a service:

docker run --restart unless-stopped -v /your/path:/app thebigroomxxl/tinyfeed --daemon -i feeds.txt -o index.html

Docker Compose equivalent:

services:
  tinyfeed:
    image: thebigroomxxl/tinyfeed
    command: --daemon -i feeds.txt -o index.html
    volumes:
      - /path/to/your/feeds/:/app
    restart: unless-stopped

As always, tinyfeed only produces an HTML page—it does not run a web server. It's up to you to serve the generated HTML file with a secondary service like Caddy or NGINX. Here is an example with Caddy (I prefer it because it is simpler to configure and handles HTTPS for you automatically):

services:
  tinyfeed:
    image: thebigroomxxl/tinyfeed
    command: --daemon -i feeds.txt -o index.html
    volumes:
      - /path/to/your/feeds/:/app
    restart: unless-stopped

  http-server:
    image: caddy
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - /path/to/your/caddyfile:/etc/caddy/Caddyfile
      - /path/to/your/feeds/:/srv/feed
    restart: unless-stopped

With you caddy file being someting like:

feeds.example.com {
    rewrite * index.html
    root * /srv/feed
    file_server
}