Tiny Tiny RSS

From ArchWiki

Tiny Tiny RSS is an open source web-based news feed (RSS/Atom) aggregator, designed to allow you to read news from any location, while feeling as close to a real desktop application as possible.

Installation

Install tt-rss from the official repositories.

If you plan on using PostgreSQL, install php-pgsql.

tt-rss is installed into /usr/share/webapps/tt-rss/. You will need to make this directory available from your web server. The simplest way is to do:

# ln -s /usr/share/webapps/tt-rss /srv/http/tt-rss
# ln -s /usr/share/webapps/tt-rss /usr/share/nginx/html/tt-rss

You will need to recursively chown /usr/share/webapps/tt-rss to http:http.

Configuration

Set up php and database

You will need to set up a database, either MySQL or PostgreSQL.

Create a ttrss user and database. In MySql, for example:

$ mysql -p -u root
mysql> CREATE USER 'ttrss'@'localhost' IDENTIFIED BY 'somepassword';
mysql> CREATE DATABASE ttrss;
mysql> GRANT ALL PRIVILEGES ON ttrss.* TO "ttrss"@"localhost" IDENTIFIED BY 'somepassword';

Or in PostgreSQL, for example:

[postgres]$ createuser --createdb ttrss
[postgres]$ createdb -U ttrss ttrss

In /etc/php/php.ini, enable the following modules:

extension=curl
extension=iconv
extension=intl
extension=mysqli ; for MySQL
extension=pdo_mysql ; for MySQL
extension=pdo_pgsql ; for PostgreSQL
extension=pgsql ; for legacy PostgreSQL plugins (still required by default)
extension=soap

If open_basedir is set in /etc/php/php.ini (it is not by default), add /var/lib/tt-rss:/usr/share/webapps/tt-rss:/etc/webapps/tt-rss to it.

Application initialization can be done either automatically or manually.

Automatic way:

  • remove default configuration file /etc/webapps/tt-rss/config.php, without this file tt-rss webapp enters installation wizard.
  • navigate to (your-servers-root)/tt-rss/ and proceed with the installer.
  • save generated configuration file to /etc/webapps/tt-rss/config.php.

Manual way:

  • edit tt-rss configuration file /etc/webapps/tt-rss/config.php and update database settings.
  • re-create database from /usr/share/webapps/tt-rss/schema/ttrss_schema_TYPE.sql. With MySQL run:
$ mysql --user ttrss --password=<PASSWORD> ttrss < /usr/share/webapps/tt-rss/schema/ttrss_schema_mysql.sql

With PostgreSQL run:

$ psql ttrss -U ttrss -f /usr/share/webapps/tt-rss/schema/ttrss_schema_pgsql.sql

At the end the /etc/webapps/tt-rss/config.php file will look like this:

<?php
 putenv('TTRSS_DB_TYPE=mysql');
 putenv('TTRSS_DB_HOST=localhost');
 putenv('TTRSS_DB_USER=ttrss');
 putenv('TTRSS_DB_NAME=ttrss');
 putenv('TTRSS_DB_PASS=foobar');
 putenv('TTRSS_SELF_URL_PATH=http://myserver/tt-rss/');

FastCGI

Install and configure FastCGI for your server

Pacman hook

To do tt-rss database upgrades automatically you may set up pacman post upgrade hook based on following example:

[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = tt-rss

[Action]
Description = Updating TT-RSS Database
When = PostTransaction
Exec = /usr/bin/runuser -u http -- /usr/bin/php /usr/share/webapps/tt-rss/update.php --update-schema=force-yes

You need to put it into /etc/pacman.d/hooks/tt-rss.hook if you did not customize HookDir in pacman.conf.

See also Pacman#Hooks

Set up an update daemon

See https://git.tt-rss.org/fox/tt-rss/wiki/UpdatingFeeds—however, simply enabling the tt-rss service should suffice. Check the service's unit status to verify that it is running fine.

Troubleshooting

Integrity constraint violation: 1062 Duplicate entry '1' for key 'ttrss_feeds_feed_url_owner_uid_key'

If you update tt-rss database to schema 137 you might see the error Duplicate entry '1' for key 'ttrss_feeds_feed_url_owner_uid_key'. To fix the issue please start database shell, e.g.:

$ mysql -u ttrss -p
$ use tt-rss;

And then run query from official forum that drops duplicated database entries.

PHP UConverter class is missing, it's provided by the Internationalization (intl) module.

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: extension=intl is added in #Set up php and database and /etc/php/php.ini is owned by php. Thus, this configuration file should not get overridden when upgrading tt-rss unless php is also upgraded. Even then, it is still doubtful that previous changes to /etc/php/php.ini are completely overridden when upgrading (if Pacnew and Pacsave files are properly handled). (Discuss in Talk:Tiny Tiny RSS)

If you see this error after upgrading tt-rss, add extension=intl to /etc/php/php.ini and restart the php-fpm service.