🐋 Awesome TTRSS
About
🐋 Awesome TTRSS aims to provide a powerful Dockerized all-in-one solution for Tiny Tiny RSS, an open source RSS feed reader and aggregator written in PHP, with enhanced user experience via simplified deployment and a list of curated plugins.
Special Thanks
Deployment
A VPS is highly recommended to host your Awesome TTRSS instance, a VPS can be obtained from as little as $5/month at DigitalOcean. Alternatively, you may request for personalized support, fully-managed service or fully-managed VPS via sponsoring Awesome TTRSS on its 💰OpenCollective page.
Awesome TTRSS provides support for the arm32v7 ✓ architecture, except the OpenCC API. Please see docker-compose.arm32v7.yml.
Deployment via docker
docker run -it --name ttrss --restart=always \
-e SELF_URL_PATH = [ your public URL ] \
-e DB_HOST = [ your DB address ] \
-e DB_PORT= [ your DB port ] \
-e DB_NAME = [ your DB name ] \
-e DB_USER = [ your DB user ] \
-e DB_PASS = [ your DB password ] \
-p [ public port ]:80 \
-d wangqiru/ttrss
Deployment via docker-compose
docker-compose.yml include 4 docker images:
- TTRSS arm32v7 ✓
- PostgreSQL arm32v7 ✓
- Mercury Parser API arm32v7 ✓
- OpenCC API arm32v7 ✗
Steps
- Download docker-compose.yml to any directory.
- Read
docker-compose.yml
and change the settings (please ensure you have changed the password for postgres). - Run
docker-compose up -d
and wait for the deployment to finish. - Access ttrss via port 181, with default credentials
admin
andpassword
, please change them asap. wangqiru/mercury-parser-api
andwangqiru/opencc-api-server
are optional service containers to support additional features, removing them will not affect TTRSS's basic functionalities.
Supported Environment Variables
- SELF_URL_PATH: the url to your TTRSS instance
- DB_HOST: the address of your database
- DB_PORT: the port of your database
- DB_NAME: the name of your database
- DB_USER: the user of your database
- DB_PASS: the password of your database
- ENABLE_PLUGINS: the plugins you'd like to enable at system level, note that
auth_internal
is required - SESSION_COOKIE_LIFETIME: the expiry time for your login session cookie in hours, default to
24
hours - HTTP_PROXY:
ip:port
, the global proxy for your TTRSS instance, to set proxy on a per feed basis, use Options per Feed - SINGLE_USER_MODE:
true
will enable single user mode and disable user authentication, which means login will not be required. Please only enable this under a secure environment
Configure HTTPS
TTRSS container itself doesn't handle HTTPS traffic. An example of configuring an Nginx reverse proxy with free SSL certificate from Let's Encrypt is shown below:
upstream ttrssdev {
server 127.0.0.1:181;
}
server {
listen 80;
server_name ttrssdev.henry.wang;
return 301 https://ttrssdev.henry.wang$request_uri;
}
server {
listen 443 ssl;
gzip on;
server_name ttrssdev.henry.wang;
ssl_certificate /etc/letsencrypt/live/ttrssdev.henry.wang/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ttrssdev.henry.wang/privkey.pem;
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;
}
}
Update
Awesome TTRSS automatically keeps up with TTRSS by mirroring the official releases, this means update can be issued frequently.
By default wangqiru/ttrss:latest
version is used, which contains the stable release from the official TTRSS repository. wangqiru/ttrss:nightly
is also available if you want to try out the latest features, however this may contain bugs. For older versions, please check this page.
Manual Update
You can fetch the latest image manually:
docker pull wangqiru/ttrss:latest
# docker pull wangqiru/mercury-parser-api:latest
# docker pull wangqiru/opencc-api-server:latest
docker-compose up -d # If you didn't use docker-compose, I'm sure you know what to do.
Auto Update
The example docker-compose includes Watchtower, which automatically pulls all containers included in Awesome TTRSS (and other containers running on your system) and refreshes your running services. By default, it's disabled, make sure it will not affect your other service containers before enabling this.
To exclude images, check the following for disabling auto update for containers:
service.mercury:
image: wangqiru/mercury-parser-api:latest
container_name: mercury
expose:
- 3000
restart: always
# ⬇️ this prevents Watchtower from auto updating mercury-parser-api
labels:
- com.centurylinklabs.watchtower.enable=false
Migration
To further optimize Awesome TTRSS, sometimes breaking changes will be introduced.
Postgres Migration
Migrate from sameersbn/postgresql to postgres:alpine.
Image | sameersbn/postgresql | postgres:alpine |
---|---|---|
Postgres version | 10.2 | latest (12.1 as of the time of writing) |
Size | 176MB | 72.8MB |
Since sameersbn/postgresql is no longer needed for enabling the pg_trgm extension, switching to postgres:alpine will benefit Awesome TTRSS from latest updates of Postgres and also be able to reduce the deployment size by over 100MB.
To begin the migration:
- Stop all the service containers:
docker-compose stop
- Move the Postgres data volume
~/postgres/data/
, or the location specified in your docker-compose file, to somewhere else as a backup, THIS IS IMPORTANT. - Use the following command to dump all your data:
docker exec postgres pg_dumpall -c -U postgres > export.sql
- Update your docker-compose file with
database.postgres
section in the the latest docker-compose.yml, and bring it up:docker-compose up -d
- Use the following command to restore all your data:
cat export.sql | docker exec -i postgres psql -U postgres
- Test if everything works fine, and now you may remove the backup in step 2.
The legacy docker-compose file is archived as docker-compose.legacy.yml.
Plugins
Mercury Fulltext Extraction
Fetch fulltext of articles via a self-hosted Mercury Parser API. A separate Mercury Parser API is required, the example docker-compose has already included such a server.
Steps
- Enable
mercury-fulltext
plugin in preference - Enter Mercury Parser API endpoint
Fever API
Provide Fever API simulate.
Steps
- Enable API in preference
- Enter a password for Fever in preference
- In supported RSS readers, use
https://[your url]/plugins/fever
as the target server address, with your account and the password set in Step 2. - The plugin communicates with TTRSS using an unsalted MD5 hash, using HTTPS is strongly recommended.
OpenCC Simp-Trad Chinese Conversion
Conversion between Traditional and Simplified Chinese via OpenCC , a separate OpenCC API Server is required. the example docker-compose has already included such a server.
Steps
- Enable
opencc
plugin in preference - Enter OpenCC API endpoint
Demo instances, availability is not guaranteed: https://opencc.henry.wang or http://opencc2.henry.wang.
FeedReader API
Provide FeedReader API support.
System plugin, enabled by adding api_feedreader
to the environment variable ENABLE_PLUGINS.
Refer to FeedReader API for more details.
News+ API
Provide a faster two-way synchronization for Android App News+ and iOS App Fiery Feeds with TTRSS.
System plugin, enabled by adding api_newsplus
to the environment variable ENABLE_PLUGINS.
Refer to News+ API for more details.
Feediron
Provide the ability to manipulate article DOMs.
Refer to Feediron for more details.
Options per Feed
Provide the ability to configure proxy, user-agent and SSL certificate verification on a per feed basis.
Refer to Options per Feed for more details.
Remove iframe sandbox
Remove the sandbox attribute on iframes, thus enabling playback of embedded video in feeds.
Refer to Remove iframe sandbox。
Themes
Feedly
RSSHub
Recommendation
- RSSHub is an interesting place for discovering RSS feeds.
- For iOS and macOS user, the integrated Fever plugin supplies Reeder 4 backend support.
- For Android user, the integrated Fever plugin supplies News+ backend support.
- For Linux user, the integrated FeedReader API supplies FeedReader backend support.
Support and Help
- You may request for personalized support via sponsoring Awesome TTRSS on its 💰OpenCollective page.
- Read this guide might help.
- Open an issue via GitHub issue.
Donation
PayPal | WeChat Pay | OpenCollective |
---|---|---|
![]() | 💰OpenCollective page |
License
MIT
[](https://app.fossa.com/projects/git%2Bgithub.com%2FHenryQW%2FAwesome TTRSS?ref=badge_large)