Build Your Own Tiny Tiny RSS Service
Table of Contents
After Inoreader change the free plan, which limit the max subscription to 150, I begin to find an alternative. Finally, I found Tiny Tiny RSS. It has a nice website and has the fever API Plugin which was supported by most of the RSS reader app, so you can read RSS on all of you devices.
This post will tell you how to deploy it on your server.
Prerequisite #
You need to install Docker and Docker Compose before using docker-compose.yml
Install docker #
Make a new ttrss
folder, create docker-compose.yml
with this content:
version: "3"
services:
database.postgres:
image: sameersbn/postgresql:latest
container_name: postgres
environment:
- PG_PASSWORD=PWD # please change the password
- DB_EXTENSION=pg_trgm
volumes:
- ~/postgres/data/:/var/lib/postgresql/ # persist postgres data to ~/postgres/data/ on the host
ports:
- 5433:5432
restart: always
service.rss:
image: wangqiru/ttrss:latest
container_name: ttrss
ports:
- 181:80
environment:
- SELF_URL_PATH=https://RSS.com/ # please change to your own domain
- DB_HOST=database.postgres
- DB_PORT=5432
- DB_NAME=ttrss
- DB_USER=postgres
- DB_PASS=PWD # please change the password
- ENABLE_PLUGINS=auth_internal,fever,api_newsplus # auth_internal is required. Plugins enabled here will be enabled for all users as system plugins
- SESSION_COOKIE_LIFETIME = 8760
stdin_open: true
tty: true
restart: always
command: sh -c 'sh /wait-for.sh database.postgres:5432 -- php /configure-db.php && exec s6-svscan /etc/s6/'
service.mercury: # set Mercury Parser API endpoint to =service.mercury:3000= on TTRSS plugin setting page
image: wangqiru/mercury-parser-api:latest
container_name: mercury
expose:
- 3000
ports:
- 3000:3000
restart: always
Run this command to deploy: docker-compose up -d
. After it finished, the TTRSS service is running on port 181
, the default account is admin
with password password
.
I made minor modification on the yml file, you can find the latest file here.
Nginx Configuration #
If you have a domain and you can use Nginx as reverse proxy to redirect TTRSS to the domain.
upstream ttrssdev {
server 127.0.0.1:181;
}
server {
listen 80;
server_name RSS.com;
return 301 https://RSS.com/$request_uri;
}
server {
listen 443 ssl;
gzip on;
server_name RSS.com;
access_log /var/log/nginx/ttrssdev_access.log combined;
error_log /var/log/nginx/ttrssdev_error.log;
location / {
proxy_redirect off;
proxy_pass http://ttrssdev;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
ssl_certificate /etc/letsencrypt/live/rss.fromkk.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/rss.fromkk.com/privkey.pem; # managed by Certbot
}
To enable HTTPS on your website, you can use certbot.
Caddy Configuration #
Update in 22/12/2021
I found Caddy2 is much easier to use than Nginx, all you need to do is add 3 lines in `/etc/caddy/Caddyfile`
rss.com {
encode gzip zstd
reverse_proxy 127.0.0.1:181
}
Voila, a HTTPS enabled website is deployed.
Fever API and Mercury #
- Fever
- Check
Enable API: Allows accessing this account through the API
in preference - Enter a new password for fever in
Plugins - Fever Emulation
- Check
- Mecury Fulltext Extraction
- Check
mecury-fulltext
plugin inPreference - Plugins
- Set Mercury Parser API address to
service.mercury:3000
inFeeds - Mercury Fulltext settings
- Check
Update #
Simply run this command to update TTRSS code.
docker-compose pull
docker-compose up -d
App recommendation #
Reeder 4 works great on my iPad. It’s smooth and fast, and is worth every penny.
If you want a free app, I suggest Fiery Feeds. I stopped using it after ver 2.2, as it’s so lagging. If this issue was fixed, I thought it was the biggest competitor for Reeder 4. For more alternative, read this article: The Best RSS App for iPhone and iPad.
- update 25-03-20:
You can find the latest document here.