Tt-rss
Appearance
Tiny Tiny RSS is a free and open source web-based news feed (RSS/Atom) reader and aggregator.
Install
services.tt-rss = {
enable = true;
# to configure a nginx virtual host directly:
virtualHost = "tt-rss.example.com";
selfUrlPath = "https://tt-rss.example.com";
# or for hosting on sub-path:
selfUrlPath = "https://example.com/tt-rss";
};
Using Caddy as web server instead of nginx
As of NixOS 24.11 the following configuration works, future versions of NixOS may expose this as native Caddy support for Tiny Tiny RSS instead:
{ config, pkgs, lib, ... }:
let
hostNames = [
"tt-rss.example.com"
];
in {
services.tt-rss = {
enable = true;
# Address at which Tiny Tiny RSS is publically exposed
selfUrlPath = "https://${lib.lists.head hostNames}/";
# Disable nginx integration as it will conflict with Caddy
virtualHost = null;
};
# Caddy reverse proxy configuration
services.caddy.virtualHosts.tt-rss = {
hostName = lib.lists.head hostNames;
serverAliases = lib.lists.tail hostNames;
extraConfig = ''
root * ${config.services.tt-rss.root}/www
php_fastcgi * unix/${config.services.phpfpm.pools.${config.services.tt-rss.pool}.socket} {
capture_stderr
}
file_server {
browse
}
'';
};
# Workaround: Create PHP-FPM socket with Caddy user instead of non-existing nginx
services.phpfpm.pools."${config.services.tt-rss.pool}".settings = {
"listen.owner" = config.services.caddy.user;
"listen.group" = config.services.caddy.group;
};
}
Configuration
By default tt-rss creates an admin user with password password. After logging in for the first time, do not forget to change it!
Disabling the admin user completely
After installing and creating a new user, you can disable the admin by setting its access level to -2 [1].
Either manually by running:
sudo -u tt_rss nix-shell -p php \
--run 'php /var/lib/tt-rss/www/update.php --user-set-access-level "admin:-2"'
You can even automate this to ensure it is always set to -2 by e.g. utilising a PreStart snippet:
systemd.services.tt-rss.preStart = lib.mkAfter ''
${pkgs.php}/bin/php ${config.services.tt-rss.root}/www/update.php \
--user-set-access-level "admin:-2"
'';
Enabling TLS for nginx virtual host
Assuming you have ACME set-up for example.com:
services.nginx.virtualHosts."${config.services.tt-rss.virtualHost}" = {
forceSSL = true;
useACMEHost = "example.com"
};