From 7e90dfd0485a6684f5dfe7f2abdd92c6f7acb9d0 Mon Sep 17 00:00:00 2001 From: Logan <100550741+UncleArya@users.noreply.github.com> Date: Sun, 2 Feb 2025 12:42:36 -0800 Subject: [PATCH] Add documentation for adding Pocket ID as OIDC provider (#7291) * Add documentation for OIDC login via Pocket IT * Images for the Pocket ID OIDC docs * Update 16_OpenID-Connect.md * Recompress images (too big) * Fix typo and reduce long lines * Remove advise on changing username Which only work to some extent with SQLite (breaking a few minor things such as WebSub, API) and not at all with other databases --------- Co-authored-by: Alexandre Alapetite --- docs/en/admins/16_OpenID-Connect.md | 1 + docs/en/admins/18_Pocket-ID.md | 69 ++++++++++++++++++++++++++++ docs/en/img/admins/pocket-id-1.png | Bin 0 -> 9376 bytes docs/en/img/admins/pocket-id-2.png | Bin 0 -> 17181 bytes 4 files changed, 70 insertions(+) create mode 100644 docs/en/admins/18_Pocket-ID.md create mode 100644 docs/en/img/admins/pocket-id-1.png create mode 100644 docs/en/img/admins/pocket-id-2.png diff --git a/docs/en/admins/16_OpenID-Connect.md b/docs/en/admins/16_OpenID-Connect.md index 8dca65faf..bab24f66b 100644 --- a/docs/en/admins/16_OpenID-Connect.md +++ b/docs/en/admins/16_OpenID-Connect.md @@ -59,3 +59,4 @@ See specific instructions for: * Authentik: [here](16_OpenID-Connect-Authentik.md) or [here](https://goauthentik.io/integrations/services/freshrss/) * Authelia: [here](https://www.authelia.com/integration/openid-connect/freshrss/) +* Pocket ID: [here](18_Pocket-ID.md) diff --git a/docs/en/admins/18_Pocket-ID.md b/docs/en/admins/18_Pocket-ID.md new file mode 100644 index 000000000..188f810f7 --- /dev/null +++ b/docs/en/admins/18_Pocket-ID.md @@ -0,0 +1,69 @@ +# Setting up Pocket ID for FreshRSS + +**[Pocket ID](https://github.com/stonith404/pocket-id)** is a simple OIDC provider that allows users to authenticate with their passkeys to your services. +(See [FreshRSS’ OpenID Connect documentation](16_OpenID-Connect.md)). + +You can find more information in the [Pocket ID documentation](https://docs.pocket-id.org/introduction). + +## 1. Create OAuth2/OpenID Provider + +Click on **Add OIDC Client** in the Pocket ID Web UI: + +![pocket-id-1](../img/admins/pocket-id-1.png) + +Give the client a name. Under callback URLs, put the URL for your FreshRSS instance as such: +`https://freshrss.your.domain/i/oidc/`. +(Optional) Upload a logo for the client. Click Save. + +OIDC credentials for the client will be generated. Click *Show more details* to view all generated fields. +Keep this window open as these values will now need to be copied into your Docker Compose file for FreshRSS. + +![pocket-id-1](../img/admins/pocket-id-2.png) + +## Step 2. Configure FreshRSS’ environment variables + +### Docker Compose + +This is an example docker-compose file for FreshRSS with OIDC enabled. + +```yaml +services: + freshrss: + image: freshrss/freshrss:1.25.0 + container_name: freshrss + ports: + - 8080:80 + volumes: + - /freshrss_data:/var/www/FreshRSS/data + - /freshrss_extensions:/var/www/FreshRSS/extensions + environment: + CRON_MIN: 1,31 + TZ: Etc/UTC + OIDC_ENABLED: 1 + OIDC_CLIENT_ID: + OIDC_CLIENT_SECRET: + OIDC_PROVIDER_METADATA_URL: https://pocketid.your.domain/.well-known/openid-configuration + OIDC_SCOPES: openid email profile + OIDC_X_FORWARDED_HEADERS: X-Forwarded-Proto X-Forwarded-Host + OIDC_REMOTE_USER_CLAIM: preferred_username + restart: unless-stopped + networks: + - freshrss +networks: + freshrss: + name: freshrss +``` + +> ℹ️ The Username used in Pocket ID must match the Username used in FreshRSS **exactly**. This also applies to case sensitivity. +As of version `0.24` of Pocket ID all Usernames are required to be entirely lowercase. FreshRSS allows for uppercase. +If a Pocket ID Username is `amanda` and your FreshRSS Username is `Amanda`, you will get a 403 error in FreshRSS and be unable to login. +As of version `1.25` of FreshRSS, it is not possible to change your username in the GUI. + +## Step 3. Complete OIDC Setup + +Back in your Pocket ID window, once your Pocket ID credentials are copied over, click *Save*. + +If you are setting up a new instance of FreshRSS, simply start the container with the OIDC variables and navigate to your FreshRSS URL. +If you are adding OIDC to an existing FreshRSS instance, recreate the container with the docker-compose file with the OIDC variables in it and navigate to your FreshRSS URL. + +See [FreshRSS’ OpenID Connect documentation](16_OpenID-Connect.md) for more information. diff --git a/docs/en/img/admins/pocket-id-1.png b/docs/en/img/admins/pocket-id-1.png new file mode 100644 index 0000000000000000000000000000000000000000..8024adc160e6e0f2f9d2b0d0013d749ef386b8cf GIT binary patch literal 9376 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 Jl^(wM{{YK21$Y1e literal 0 HcmV?d00001