Reading and bookmarks, checked 2026-09-07
FreshRSS: Docker configuration reference
Self-hosted RSS and Atom feed aggregator with a Google Reader compatible API for third-party apps.
At a glance
- Image:
docker.io/freshrss/freshrss - Tags:
latest,edge,1.29.1,1.29.1-alpine,1.29.0 - Licence: AGPL-3.0
- Source: https://github.com/FreshRSS/FreshRSS
- Docs: https://freshrss.github.io/FreshRSS/
Ports
| Port | What listens | Source |
|---|---|---|
80 | HTTP listener inside the container. The example compose file exposes it on a host port via PUBLISHED_PORT. | source for port 80 |
Environment variables
| Variable | Required | What it does | Example | Source |
|---|---|---|---|---|
BASE_URL | Yes | Public address the instance is reachable at. Used for the automatic install and for building feed and API URLs. | https://freshrss.example.net | source for BASE_URL |
TRUSTED_PROXY | No | Space-separated CIDR ranges of trusted reverse proxies, needed for FreshRSS to read the real client IP from forwarded headers. | 172.16.0.1/12 192.168.0.1/16 | source for TRUSTED_PROXY |
DB_HOST | No | Database server hostname. Not relevant when using the default bundled SQLite storage. | freshrss-db | source for DB_HOST |
ADMIN_PASSWORD | No | Password set for the admin account during the automatic install. Change it after first login. | freshrss | source for ADMIN_PASSWORD |
CRON_MIN | No | Minutes past the hour the built-in cron job runs to refresh feeds. | 3,33 | source for CRON_MIN |
Volumes that must persist
| Path | What is in it | Source |
|---|---|---|
/var/www/FreshRSS/data | Configuration, the SQLite database when used, feeds and user data. The core directory to back up. | source for /var/www/FreshRSS/data |
/var/www/FreshRSS/extensions | Installed extensions, kept separate so they survive image updates. | source for /var/www/FreshRSS/extensions |
Behind a reverse proxy
- Set TRUSTED_PROXY to the proxy's network range, or FreshRSS logs and rate-limits by the proxy's own IP instead of the real client. source for this reverse-proxy note
- Set BASE_URL to the public https address; the official Traefik example also shows serving FreshRSS from a sub-path with a strip-prefix middleware. source for this reverse-proxy note
Release timeline
| Version | Date | Breaking | What changed | Source |
|---|---|---|---|---|
1.29.1 | 2026-05-20 | No | Bug-fix release for 1.29.0. Adds .txt import of feed URLs and a new CLI for automatic periodic SQLite export with retention. | source for release 1.29.1 |
1.29.0 | 2026-05-10 | No | Major release adding sort order preferences at global, category and feed levels, and feed-provided icons. | source for release 1.29.0 |
1.28.1 | 2026-01-25 | No | Bug-fix release targeting regressions from 1.28.0, plus a customisable closed-registrations message. | source for release 1.28.1 |
1.28.0 | 2025-12-24 | No | Major release adding sorting and filtering by user-modified date, sorting by article length and an advanced search form. | source for release 1.28.0 |
1.27.1 | 2025-09-27 | No | Security-fix and bug-fix release for the 1.27.x line, adding a Docker healthcheck option. | source for release 1.27.1 |
If it is not coming up
- ECONNREFUSED / ENOTFOUND / connection to server at "postgres" port 5432 failed
- Coolify volume data lost after redeploy / a new empty volume is created every deploy
Read from the upstream documentation, repository and container registry by Keita Emsden on 2026-09-07. Every row links the page it came from. Upstream changes without telling anyone, so check the source link before you rely on a value.