{"id":23141957,"url":"https://github.com/gdamjan/tt-rss-service","last_synced_at":"2026-02-03T19:06:31.570Z","repository":{"id":43717259,"uuid":"290333512","full_name":"gdamjan/tt-rss-service","owner":"gdamjan","description":"tt-rss systemd portable service built on Nix","archived":false,"fork":false,"pushed_at":"2024-12-02T12:59:34.000Z","size":94,"stargazers_count":8,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-17T13:33:01.819Z","etag":null,"topics":["nix","nixos","nixpkgs","php","portable-service","tinytinyrss","uwsgi"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gdamjan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-08-25T22:05:26.000Z","updated_at":"2024-12-02T12:51:02.000Z","dependencies_parsed_at":"2024-05-03T18:42:35.076Z","dependency_job_id":"d2d30587-e05f-4ba5-930a-5534be63cb94","html_url":"https://github.com/gdamjan/tt-rss-service","commit_stats":null,"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/gdamjan/tt-rss-service","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdamjan%2Ftt-rss-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdamjan%2Ftt-rss-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdamjan%2Ftt-rss-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdamjan%2Ftt-rss-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gdamjan","download_url":"https://codeload.github.com/gdamjan/tt-rss-service/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdamjan%2Ftt-rss-service/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29054089,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T15:43:47.601Z","status":"ssl_error","status_checked_at":"2026-02-03T15:43:46.709Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nix","nixos","nixpkgs","php","portable-service","tinytinyrss","uwsgi"],"created_at":"2024-12-17T14:15:51.538Z","updated_at":"2026-02-03T19:06:31.555Z","avatar_url":"https://github.com/gdamjan.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI](https://github.com/gdamjan/tt-rss-service/actions/workflows/ci.yml/badge.svg)](https://github.com/gdamjan/tt-rss-service/actions/workflows/ci.yml)\n\n# `Tiny Tiny RSS` as a systemd portable service\n\nThis portable service image comes with:\n* [Tiny Tiny RSS](https://tt-rss.org/)\n* uwsgi as an application server, with php support\n* php\n* all the required php extensions\n\nYou need to provide:\n* a database\n* nginx and a virtual host\n* lets encrypt certificate for https\n* basic config file (see below)\n\nAll packed in an immutable [portable service](https://systemd.io/PORTABLE_SERVICES/) image. The image is built with\nNixos.\n\nThe service is configured in the `/etc/default/tt-rss.conf` file.\n\nAll state will be kept in the database and `/var/lib/private/tt-rss`.\n\n## Quick Start\n\nGet the latest image from [Github releases](https://github.com/gdamjan/tt-rss-service/releases/), into /var/lib/portables, then attach the portable service, and enable/start it. For ex:\n\n```sh\nimportctl pull-raw --class=portable --verify=checksum https://github.com/gdamjan/tt-rss-service/releases/download/v\u003cversion\u003e/tt-rss_\u003cversion\u003e.raw # or use curl\nportablectl inspect tt-rss…\nportablectl attach --enable --now tt-rss…\n```\n\n## Service configuration\n\nThe service is configured by the `/etc/default/tt-rss.conf` file. It's a simple [KEY=VALUE\nfile](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#EnvironmentFile=),\nwith all keys beginning with `TTRSS_`.\n\nExample:\n```\nTTRSS_SELF_URL_PATH=https://rss.example.com/\nTTRSS_SESSION_COOKIE_LIFETIME=2592000\nTTRSS_DB_TYPE=mysql\nTTRSS_DB_HOST=db.example.com\nTTRSS_DB_PORT=3306\nTTRSS_DB_NAME=ttrss\nTTRSS_DB_USER=ttrss\nTTRSS_DB_PASS=example password\n```\n\nSee https://git.tt-rss.org/fox/tt-rss/wiki/GlobalConfig for an explanation of the tt-rss configration system.\n\n## External dependencies\n\nThe running service doesn't have an http server, database nor a certificate store. It only includes the tt-rss application\ncode, uwsgi with the php plugin, and the required php extensions. It exposes the `/run/tt-rss.sock` uwsgi\nprotocol socket, which can be used with nginx. This means that you have\nto provide an nginx running on the \"host\", and a database running either on the same host or on a remote server.\n\nI choose to use nginx on the \"host\" so that it can be shared with other services, and it makes\nintegration with LetsEncrypt/certbot easier. I personally also use a remote database server.\n\n\n## Nginx configuration\n\nThe portable service will operate on the `/run/tt-rss.sock` uwsgi socket. We gonna let the host nginx handle\nall the http, https and letsencrypt work. The config is simple, just proxy everything back to the uwsgi socket:\n```\nserver {\n    …\n    location / {\n        include uwsgi_params;\n        uwsgi_pass unix:/run/tt-rss.sock;\n    }\n    …\n}\n```\n\u003e Note: even static files are served by the uwsgi server, but uwsgi has a good enough static files server, which doesn't\n\u003e block the application workers\n\n## More info\n\nSee the [wiki](https://github.com/gdamjan/tt-rss-service/wiki/) for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdamjan%2Ftt-rss-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgdamjan%2Ftt-rss-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdamjan%2Ftt-rss-service/lists"}