--- title: "RSS Full Text" date: 2025-07-01 tags: ["service"] icon: "rss.svg" short_desc: "Creates RSS full text feeds." --- [fivefilters full-text-rss](https://www.fivefilters.org/full-text-rss/) is Full-Text RSS service. Free open source RSS feeds usually provide the summary or limited lines of URL contents. There is a way to see the entire web page with text-based web browser such as lynx, w3m, and so on. However, I want to do everything in [newsboat](https://github.com/newsboat/newsboat). With this, you can retrieve the full-text of individual articles or complete full-text RSS feeds. It enriches third-party RSS feeds with full text articles. ## Installation ### Setting Up and Configuring Check PHP version (e.g., php7.4-fpm). Adjust in later steps accordingly. ```sh sudo apt update sudo apt install php5.6 php5.6-fpm php5.6-tidy nginx git unzip certbot python3-certbot-nginx ``` Download Full-Text RSS ```sh cd /var/www sudo git clone https://bitbucket.org/fivefilters/full-text-rss.git ftr cd ftr sudo git reset --hard 384d52fd83361ffd6e7f28bd39b322970a015a28 ``` Download Full-Text-RSS site config ```sh sudo git clone https://github.com/fivefilters/ftr-site-config cp -f ftr-site-config/* site_config/standard ``` Set permissions: ```sh mkdir -p /var/www/ftr/cache/rss sudo chown -R www-data:www-data /var/www/ftr sudo chmod -R 777 /var/www/ftr/cache /var/www/ftr/site_config ``` Create php.ini: ```sh mkdir -p /etc/php/5.6/fpm sed -Ei "s/^(memory_limit).*/\1 = 256M/" /etc/php/5.6/fpm/php.ini ``` ### Configuring nginx & cerbot Create Nginx Config with Clean /feed + Rate Limiting Create a new site config: ```sh sudo vim /etc/nginx/sites-available/ftr ``` Paste this (adjust php7.4-fpm.sock if needed): ```nginx # Rate limiting zone: 10 req/min per IP limit_req_zone $binary_remote_addr zone=ratelimit:10m rate=10r/m; server { listen 80; listen [::]:80; root /var/www/ftr; server_name ftr.thesiah.xyz; # Change to your domain index index.html index.htm index.nginx-debian.html index.php; location / { try_files $uri $uri/ =404; } # Rewrite clean URL /feed?url=... to makefulltextfeed.php location /feed { rewrite ^/feed$ /makefulltextfeed.php last; limit_req zone=ratelimit burst=5; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } location ~ /\.ht { deny all; } } ``` Enable nginx on the site: ```sh sudo ln -s /etc/nginx/sites-available/ftr /etc/nginx/sites-enabled/ ``` Secure with HTTPS (Certbot) ```sh sudo certbot --nginx -d ftr.thesiah.xyz ``` Restart nginx ```sh sudo systemctl reload nginx ``` ### Custom Config Add custom_config.php: Save to: /var/www/ftr/custom_config.php ```php enabled = true; $options->debug = true; $options->default_entries = 200; $options->max_entries = 1000; $options->content = 'user'; $options->summary = 'user'; $options->rewrite_relative_urls = true; $options->exclude_items_on_fail = 'user'; $options->singlepage = true; $options->multipage = true; $options->caching = true; $options->cache_time = 120; $options->cache_dir = dirname(__FILE__).'/cache'; $options->message_to_prepend = ''; $options->message_to_append = ''; $options->error_message = '[unable to retrieve full-text content]'; $options->keep_enclosures = true; $options->detect_language = 'user'; $options->user_submitted_config = false; $options->remove_native_ads = false; $options->admin_credentials = array('username'=>'admin', 'password'=>getenv('FTR_ADMIN_PASSWORD')); $options->allowed_urls = array(); $options->blocked_urls = array(); $options->key_required = false; $options->api_keys = array(); $options->default_entries_with_key = 5; $options->max_entries_with_key = 10; $options->xss_filter = 'user'; $options->favour_feed_titles = 'user'; $options->allowed_parsers = array('libxml', 'html5php'); $options->allow_parser_override = true; $options->cors = false; $options->proxy_servers = array(); $options->proxy = true; $options->allow_proxy_override = true; $options->apc = true; $options->smart_cache = true; $options->fingerprints = array( ' array('hostname'=>'fingerprint.posterous.com', 'head'=>true), ' array('hostname'=>'fingerprint.blogspot.com', 'head'=>true), ' array('hostname'=>'fingerprint.blogspot.com', 'head'=>true), ''admin', 'password'=>''); } } elseif ($_env === 'true' || $_env === 'false') { $_val = ($_env === 'true'); } elseif (is_numeric($_env)) { $_val = (int)$_env; $_val = $_env; } } } unset($_key, $_val, $_env); } ``` Replace deprecated code manually from: ```php while (list($name, $value) = each($directives)) { ``` to: ```php foreach ($directives as $name => $value) { ``` Or run this command: ```sh sed -i 's/while *(list(\$name, *\$value) *= *each(\$directives)) *{/foreach (\$directives as \$name => \$value) {/' /var/www/ftr/libraries/Zend/Cache/Backend.php ``` Restart php5.6-fpm: ```sh sudo systemctl restart php5.6-fpm ``` ### Local host Visit http://localhost:80 for the integrated web UI {{A screenshot of the Full Text RSS}} Article extraction: http://localhost/extract.php?url=[url] Feed conversion: http://localhost/makefulltextfeed.php?url=[url]