RSS-Bridge#

Docker#

See also

  • Docker Installation - RSS-Bridge [1]

  • Whitelisting - RSS-Bridge [2]

  • A self-hosted RSS setup // steve gattuso - Converting Social Networks to RSS [3]

  1. follow the Docker instructions

  2. create the jobs directories

    mkdir -p /home/jobs/scripts/by-user/root/docker/rssbridge
    cd /home/jobs/scripts/by-user/root/docker/rssbridge
    
  3. create the whitelist file and enable the modules you want to use. If you use the asterisk character (*) all modules will be enabled

    mkdir config
    echo '*' > config/whilelist.txt
    
  4. create a Docker compose file

    /home/jobs/scripts/by-user/root/docker/rssbridge/docker-compose.yml#
     1version: '2.4'
     2
     3services:
     4  rssbridge:
     5    image: rssbridge/rss-bridge:latest
     6    restart: always
     7    ports:
     8      - 127.0.0.1:4008:80
     9    networks:
    10      - mynetwork
    11    volumes:
    12      - ./config/whitelist.txt:/app/whitelist.txt
    
  5. create a Systemd unit file. See also the Docker compose services section

    /home/jobs/services/by-user/root/docker-compose.rssbridge.service#
     1[Unit]
     2Requires=docker.service
     3Requires=network-online.target
     4After=docker.service
     5After=network-online.target
     6
     7## Run
     8## docker-compose up --detach --force-recreate
     9## to reload configuration.
    10
    11[Service]
    12# https://community.hetzner.com/tutorials/docker-compose-as-systemd-service
    13Type=simple
    14WorkingDirectory=/home/jobs/scripts/by-user/root/docker/rssbridge
    15
    16ExecStart=/usr/bin/docker-compose up --remove-orphans
    17ExecStop=/usr/bin/docker-compose down --remove-orphans
    18
    19Restart=always
    20
    21[Install]
    22WantedBy=multi-user.target
    
  6. fix the permissions

    chmod 700 /home/jobs/scripts/by-user/root/docker/rssbridge
    chmod 700 -R /home/jobs/services/by-user/root
    
  7. run the deploy script

  8. serve the files via HTTP by creating a new Apache virtual host. Replace FQDN with the appropriate domain and include this file from the Apache configuration

    /etc/apache2/rssbridge-docker.apache.conf#
     1<IfModule mod_ssl.c>
     2<VirtualHost *:80>
     3    ServerName ${FQDN}
     4
     5    # Force https.
     6    UseCanonicalName on
     7    RewriteEngine on
     8    RewriteCond %{SERVER_NAME} =${FQDN}
     9
    10    # Ignore rewrite rules for 127.0.0.1
    11    RewriteCond %{HTTP_HOST} !=127.0.0.1
    12    RewriteCond %{REMOTE_ADDR} !=127.0.0.1
    13
    14    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    15</VirtualHost>
    16</IfModule>
    17
    18##############
    19# rss-bridge #
    20##############
    21<IfModule mod_ssl.c>
    22<VirtualHost *:443>
    23    UseCanonicalName on
    24
    25    Keepalive On
    26    RewriteEngine on
    27
    28    ServerName ${FQDN}
    29
    30    SSLCompression off
    31
    32    RequestHeader set X-Forwarded-Proto "https"
    33    RequestHeader set X-Forwarded-Port "443"
    34    RequestHeader set X-Forwarded-Host "${FQDN}"
    35
    36    # You can restrict access to RSS-Bridge to LAN
    37    # or Docker containers only by adding this.
    38    <Proxy *>
    39        # Localhost.
    40        Require ip 127.0.0.1
    41
    42        # LAN.
    43        Require ip 192.168.0.
    44
    45        # Docker containers.
    46        Require ip 172.16.
    47    </Proxy>
    48
    49    ProxyPass / http://127.0.0.1:4008/
    50    ProxyPassReverse / http://127.0.0.1:4008/
    51
    52    Include /etc/letsencrypt/options-ssl-apache.conf
    53    SSLCertificateFile /etc/letsencrypt/live/${FQDN}/fullchain.pem
    54    SSLCertificateKeyFile /etc/letsencrypt/live/${FQDN}/privkey.pem
    55</VirtualHost>
    56</IfModule>
    
  9. restart Apache

    systemctl restart apache2.service
    

Bare metal#

  1. install the dependencies

    apt-get install rss-bridge php7.4-fpm
    
  2. create the whitelist file and enable the modules you want to use. If you use the asterisk character (*) all modules will be enabled

    echo '*' > /usr/share/rss-bridge/whitelist.txt
    
  3. start and enable the php-fpm service

    systemctl enable --now php7.4-fpm.service
    
  4. enable the php7.4-fpm module for Apache

    a2enmod php7.4
    
  5. serve the files via HTTP by creating a new Apache virtual host. Replace FQDN with the appropriate domain and include this file from the Apache configuration

    /etc/apache2/rssbridge-bare_metal.apache.conf#
     1##############
     2# rss-bridge #
     3##############
     4<VirtualHost *:80>
     5    ServerName ${FQDN}
     6
     7    # Force https.
     8    UseCanonicalName on
     9    RewriteEngine on
    10    RewriteCond %{SERVER_NAME} =${FQDN}
    11
    12    # Ignore rewrite rules for 127.0.0.1
    13    RewriteCond %{HTTP_HOST} !=127.0.0.1
    14    RewriteCond %{REMOTE_ADDR} !=127.0.0.1
    15
    16    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    17</VirtualHost>
    18</IfModule>
    19
    20<IfModule mod_ssl.c>
    21<VirtualHost *:443>
    22    UseCanonicalName on
    23
    24    Keepalive On
    25    RewriteEngine on
    26
    27    ServerName ${FQDN}
    28
    29    SSLCompression off
    30
    31    Include conf-enabled/php7.4-fpm.conf
    32
    33    DocumentRoot "/usr/share/rss-bridge"
    34    <Directory "/usr/share/rss-bridge">
    35       AllowOverride All
    36       Options FollowSymlinks
    37       Require all granted
    38
    39       # You can restrict access to RSS-Bridge to LAN
    40       # or Docker containers only by adding this.
    41
    42       # Localhost.
    43       Require ip 127.0.0.1
    44
    45       # LAN.
    46       Require ip 192.168.0.
    47
    48       # Docker containers.
    49       Require ip 172.16.
    50   </Directory>
    51
    52    Include /etc/letsencrypt/options-ssl-apache.conf
    53    SSLCertificateFile /etc/letsencrypt/live/${FQDN}/fullchain.pem
    54    SSLCertificateKeyFile /etc/letsencrypt/live/${FQDN}/privkey.pem
    55</VirtualHost>
    56</IfModule>
    
  6. restart Apache

    systemctl restart apache2.service
    

Footnotes