Repository navigation
v0.16.0
Security release: fixes the findings of an external security audit, plus the groundwork for 1.0 (mobile apps on the public demo, store metadata). Upgrading is strongly recommended.
Security
- Settings that change sign-in or identity (OIDC, LDAP, Jellyfin API key, public address, dashboard API key) now require the admin role. Before, the delegable "Manage settings" permission was enough, which allowed a privilege escalation.
- Admin role follows Jellyfin and your SSO group: a user who loses admin there is demoted at the next sign-in or hourly check. Roles granted by hand in Tipsarr are kept.
- OIDC matching: configurable username claim (default
preferred_username), exact match, no fallback toname/nickname, unverified e-mail refused. - Login throttling is stored in the database, with an escalating lockout (up to 1 hour) and a short delay after each failure.
- Outbound webhooks can no longer reach loopback or link-local addresses, and reach private (LAN) addresses only when their host is listed in Admin > Webhooks > Allowed internal hosts. Checked at connection time, so DNS rebinding does not get around it.
- Secrets are encrypted at rest (AES-256-GCM): API keys, OIDC/LDAP secrets, webhook secrets and headers, relay key.
- Secrets are no longer sent back by the settings API (show/regenerate buttons instead); remote error messages and internal 5xx details are no longer shown to users; avatar images are size-checked before decoding; the stored Radarr/Sonarr key is not sent to a new host.
- Client IP taken from trusted proxies only (
TIPSARR_TRUSTED_PROXIES);TIPSARR_COOKIE_SECURE=truenow really forces the Secure flag; HTTP server timeouts, HSTS, and a CSP withoutunsafe-inlinefor scripts. - Setup token required by default on a fresh install unless
TIPSARR_JELLYFIN_URLis set. The?token=form of the Jellyfin webhook URL is deprecated (use theX-Tipsarr-Tokenheader). - Supply chain: GitHub Actions pinned by commit, base images by digest, Dependabot; the image now ships an SBOM and provenance and is signed with cosign (see SECURITY.md to verify).
Also in this release
- The mobile apps can sign in to the public demo (https://tipsarr-demo.brebond.com,
admin/demooruser/demo). - Store listings and review material for the 1.0 apps; PRIVACY.md completed.
Upgrade notes
- Migration
031_auth_hardeningruns automatically. - Back up
secret.key(created in the config folder at first start, or setTIPSARR_SECRET_KEY) together with the database. Without it the stored secrets have to be entered again. Going back to 0.15 needs a database restored from before the upgrade. - Webhooks to LAN addresses (ntfy, Home Assistant…) fail until their host is added to Allowed internal hosts; the startup log lists them.
- OIDC usernames now match Jellyfin's exactly (case-sensitive).
- After upgrading, review the admin roles in Users (existing admins without a known origin are kept as manual admins, with a log warning).
- A reverse proxy on a public address must be added to
TIPSARR_TRUSTED_PROXIES. - New optional env vars:
TIPSARR_SECRET_KEY,TIPSARR_TRUSTED_PROXIES,TIPSARR_SESSION_TTL,TIPSARR_SESSION_RECHECK_GRACE.