From 516f632b84bc418486538a2183564fe94b89097e Mon Sep 17 00:00:00 2001
From: TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>
Date: Tue, 1 Jul 2025 17:01:45 +0900
Subject: init
---
content/rss-full-text.md | 204 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 204 insertions(+)
create mode 100644 content/rss-full-text.md
(limited to 'content/rss-full-text.md')
diff --git a/content/rss-full-text.md b/content/rss-full-text.md
new file mode 100644
index 0000000..995797d
--- /dev/null
+++ b/content/rss-full-text.md
@@ -0,0 +1,204 @@
+---
+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 nginx php php-fpm php-tidy 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
+cd full-text-rss
+sudo git reset --hard 384d52fd83361ffd6e7f28bd39b322970a015a28
+```
+
+Download Full-Text-RSS site config
+
+```sh
+sudo git clone https://github.com/fivefilters/ftr-site-config site_config
+```
+
+Set permissions:
+
+```sh
+sudo mkdir -p cache/rss
+sudo chown -R www-data:www-data cache site_config
+sudo chmod -R 777 cache site_config
+```
+
+### Configuring nginx & cerbot
+
+Create Nginx Config with Clean /feed + Rate Limiting
+
+Create a new site config:
+
+```sh
+sudo nano /etc/nginx/sites-available/fulltextrss
+```
+
+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;
+ server_name rss.thesiah.xyz; # Change to your domain
+
+ root /var/www/full-text-rss;
+ index index.php;
+
+ # 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/fulltextrss /etc/nginx/sites-enabled/
+sudo nginx -t && sudo systemctl reload nginx
+```
+
+Secure with HTTPS (Certbot)
+
+```sh
+sudo certbot --nginx -d rss.thesiah.xyz
+```
+
+### Custom Config
+
+Add custom_config.php:
+Save to: /var/www/full-text-rss/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);
+}
+```
+
+### Local host
+
+Visit http://localhost:80 for the integrated web UI
+
+{{
}}
+
+Article extraction: http://localhost/extract.php?url=[url]
+Feed conversion: http://localhost/makefulltextfeed.php?url=[url]
--
cgit v1.2.3