Jump to content

Tiny Tiny RSS

From ArchWiki
(Redirected from TT-RSS)

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 the tt-rss and php-pgsql packages.

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 using PostgreSQL.

Create a ttrss user and database 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=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/sql/pgsql/schema.sql:
$ psql ttrss -U ttrss -f /usr/share/webapps/tt-rss/sql/pgsql/schema.sql

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

<?php
 putenv('TTRSS_DB_TYPE=pgsql');
 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://tt-rss.org/wiki/UpdatingFeeds[dead link 2025-08-16—HTTP 404]—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.:

$ psql -U ttrss tt-rss

And then run query from official forum[dead link 2025-11-17—domain name not resolved] that drops duplicated database entries.

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

The factual accuracy of this article or section is disputed.

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.