Inoreader OAuth2 integration fails with self-hosted n8n + ngrok

Describe the problem/error/question

I’m trying to connect Inoreader to my self-hosted n8n instance using OAuth2, but the connection fails after I approve the authorization. The Inoreader auth page opens correctly, I click “Allow”, but then I get an ngrok error saying the endpoint is offline.

Setup context:

  • Self-hosted n8n via Docker on macOS

  • Using ngrok (free tier) to expose localhost

  • Goal: Build a workflow that fetches Inoreader articles → processes with local Ollama → sends email/slack summary

What is the error message (if any)?

{"status":"error","message":"Unauthorized"}.


This happens immediately after clicking “Allow” on the Inoreader authorization page.

Please share your workflow

No workflow created yet - stuck at the credential connection step. Once OAuth works, the planned workflow is:

  1. Trigger: Schedule (daily at 1 AM)

  2. HTTP Request: Fetch new articles from Inoreader API

  3. HTTP Request: Send article to local Ollama (Gemma model)

  4. Send Email: Summary from Ollama

Configuration Details

Docker command:

docker run -d \
  --name n8n \
  -p 5678:5678 \
  -e WEBHOOK_URL=https://my-url.ngrok-free.dev \
  -e GENERIC_TIMEZONE=Europe/Berlin \
  -v n8n_data:/home/node/.n8n \
  n8nio/n8n


ngrok:

ngrok http 5678


Inoreader Developer App:

  • Redirect URL: https://my-url.ngrok-free.dev/rest/oauth2-credential/callback

  • OAuth scope: read write

  • Platform: Web

n8n OAuth2 API Credential:

  • Grant Type: Authorization Code

  • Authorization URL: https://www.inoreader.com/oauth2/auth

  • Access Token URL: https://www.inoreader.com/oauth2/token

  • Scope: read write

  • Authentication: Body

  • OAuth Redirect URL (auto-generated in n8n): https://my-url.ngrok-free.dev/rest/oauth2-credential/callback

What I’ve Already Tried

  1. Verified redirect URLs match exactly between Inoreader and n8n

  2. Confirmed ngrok is running - can access n8n via the ngrok URL

  3. Set WEBHOOK_URL environment variable to ngrok URL

  4. Initially tried N8N_TUNNEL_MODE=true but no tunnel URL was generated (only http://localhost:5678 in logs)

  5. Switched to ngrok as recommended in various threads

Questions

  1. Why does the OAuth callback fail when ngrok is clearly running?

  2. Is there a known issue with ngrok free tier and OAuth redirects?

  3. What’s the recommended setup for testing OAuth integrations with self-hosted n8n?

  4. Should I use a different tunneling solution?

Information on your n8n setup

  • n8n version: 2.4.4 (latest Docker image)

  • Database (default: SQLite): SQLite (default)

  • n8n EXECUTIONS_PROCESS setting (default: own, main): Default (own)

  • Running n8n via (Docker, npm, n8n cloud, desktop app): Docker

  • Operating system: macOS (Apple Silicon)

Thanks for your help!

1 Like

@LocalhostDaniel Hey there, have you made sure that Inoreader has the same URL in the OAuth settings as the tunnel ngrok is providing, so redirect URL needs to match the expose URL.

Hope that helps!

Recommend using a stable public URL (not ngrok free tier) and ensuring webhook_url matches it, as OAuth callbacks often fail with ngrok due to temporary or unstable tunnel endpoints.

Hey @LocalhostDaniel Welcome to the n8n community, your setup seems fine, i recommend using npm version of n8n if you are using webhooks of a unstable NGROK service, as it is easy to setup without requiring heavy .env editing , just install and set webhook url as your NGROK link and done! Let me know if you need any help with that

Hey, thanks for checking! I’ve verified multiple times that the redirect URLs match exactly:

In Inoreader: https://my-ngrok-url.ngrok-free.dev/rest/oauth2-credential/callback

In n8n (shown in OAuth2 credential settings): https://my-ngrok-url.ngrok-free.dev/rest/oauth2-credential/callback

The URLs are identical. The issue occurs right after clicking “Allow” in Inoreader .

Appreciate you double-checking though. always good to verify the basics! :slight_smile:

Hey, thanks for the npm suggestion! However, I’d prefer to stick with Docker for now because then i can keep my setup isolated what makes it easier to manage dependencies.

Thanks again for taking the time to help!

Hej! Thanks for confirming what I suspected. The tunnel seems to drop right during the OAuth callback, which makes sense given the temporary nature of free ngrok endpoints.

I’m now considering alternatives for a stable public URL. Do you have recomendations?

Thanks for the clear diagnosis!

Use any solution that provides a stable public endpoint that doesn’t change URLs or go offline during OAuth callbacks; the specific tool depends on what’s available in your region or infrastructure.

Thanks for the feedback, glad it helped!