Skip to content
Дамјан Георгиевски edited this page Sep 16, 2020 · 10 revisions

Session are too short

By default, tt-rss has sessions of 1 day. You can make them last longer by runnint systemctl edit tt-rss to create a service drop-in, and adding this:

[Service]
Environment=UWSGI_PHP_CONSTANT=SESSION_COOKIE_LIFETIME=7776000

How to run the database schema update script

systemd-run \
  --pty -M .host \
  --uid=tt-rss \
  --property=DynamicUser=yes \
  --property=RootImage=/var/lib/portables/tt-rss.raw \
  --property=EnvironmentFile=/etc/tt-rss/config.env \
  --property=StateDirectory=tt-rss \
  /usr/bin/php /srv/tt-rss/update.php --update-schema

Note: paths to php and update.php are a bit more complicated in the nixos image, check them out with unsquashfs -l ...the.image.raw

Why a portable service, why Nix

A portable service, similar to a container/docker image, allows you to pack your whole application, its dependencies, the application server and its (opinionated) configuration in a single image, without needing to change your host Linux OS, and avoiding conflicts. The portable service image is also immutable and easily interchangeable.

Compared to docker and other container systems, a systemd portable service has less runtime overhead, no docker runtime or daemon. It's a quite normal system service with some limitations (immutable image, DynamicUser=yes).

I used Nix to build the released images, since:

  • I had to learn Nix.
  • the uwsgi-plugin-php package in Ubuntu 20.04 has an unpatched bug that crashes the PHP interpreter.
  • Nix allows me to deterministically express the whole image in its expression language, directly customize many details of php and uwsgi, and efficiently build from source only the customized packages.
Clone this wiki locally