[GH-ISSUE #1458] External access not working anymore after update to Pangolin 1.9.0 #1918

Closed
opened 2026-04-16 08:47:00 -05:00 by GiteaMirror · 2 comments
Owner

Originally created by @thimplicity on GitHub (Sep 14, 2025).
Original GitHub issue: https://github.com/fosrl/pangolin/issues/1458

Originally assigned to: @miloschwartz on GitHub.

Hi everyone,
I have the following setup:

  • VPS with Docker, Pangolin and Pocket-ID for externally accessing a few homelab services
  • Homelab with Docker, Pangolin and Pocket-ID for internal access to services

I run two Pangolin instances, one externally on a VPS and one internally. I only run one Pocket-ID instance externally that serves both Pangolin instances. Both instances and access worked well with Pocket-ID 1.10.0 and Pangolin 1.6.2. Then I updated the external Pangolin instance to 1.9.0 and since then the external access does not work anymore. I receive the following error message when trying to log into a service directly, e.g. into uptime kuma, from externally:

Image

When I log into Pangolin (on VPS) directly, I receive this screen, which shows that the user is not connected to an organization. I have automatic user provisioning activated, which does not work anymore. Everytime, I create the user manually, it is gone after I tried to log in.

Image

The docker logs are below:

Pangolin:

2025-09-12T07:08:12.306Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-12T07:08:12.307Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-12T07:08:12.307Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-12T07:08:12.310Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-12T07:08:12.311Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-12T07:08:12.312Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-14T12:38:28.762Z [info]: Checking Docker socket for site 1 with Newt ft8luaohkalmf 2025-09-14T12:38:28.775Z [info]: Handling Docker socket check response 2025-09-14T12:38:28.775Z [info]: Newt ID: ft8luaohkalmf, Site ID: 1 2025-09-14T12:38:28.775Z [info]: Docker socket availability for Newt ft8luaohkalmf: available=false, socketPath= 2025-09-14T12:38:28.775Z [warn]: Newt ft8luaohkalmf does not have Docker socket access 2025-09-14T12:38:28.775Z [info]: Handling Docker socket check response 2025-09-14T12:38:28.775Z [info]: Newt ID: ft8luaohkalmf, Site ID: 1 2025-09-14T12:38:28.775Z [info]: Docker socket availability for Newt ft8luaohkalmf: available=false, socketPath= 2025-09-14T12:38:28.775Z [warn]: Newt ft8luaohkalmf does not have Docker socket access

Pocket-ID:

time=2025-09-14T12:55:57.524Z level=INFO msg="Incoming request" app=pocket-id version=1.10.0 request.time=2025-09-14T12:55:57.524Z request.method=GET request.host=auth.... request.path=/.well-known/jwks.json request.query="" request.params=map[] request.route=/.well-known/jwks.json request.ip=136.... request.referer="" request.length=0 response.time=2025-09-14T12:55:57.524Z response.latency=21.66µs response.status=200 response.length=430 time=2025-09-14T12:56:57.584Z level=INFO msg="Incoming request" app=pocket-id version=1.10.0 request.time=2025-09-14T12:56:57.584Z request.method=GET request.host=auth.... request.path=/.well-known/openid-configuration request.query="" request.params=map[] request.route=/.well-known/openid-configuration request.ip=136.... request.referer="" request.length=0 response.time=2025-09-14T12:56:57.584Z response.latency=42.451µs response.status=200 response.length=1020 time=2025-09-14T12:56:57.618Z level=INFO msg="Incoming request" app=pocket-id version=1.10.0 request.time=2025-09-14T12:56:57.618Z request.method=GET request.host=auth.... request.path=/.well-known/jwks.json request.query="" request.params=map[] request.route=/.well-known/jwks.json request.ip=136.... request.referer="" request.length=0 response.time=2025-09-14T12:56:57.618Z response.latency=35.471µs response.status=200 response.length=430

Any help would be appreciated - the setup worked perfectly for me before the update

Originally created by @thimplicity on GitHub (Sep 14, 2025). Original GitHub issue: https://github.com/fosrl/pangolin/issues/1458 Originally assigned to: @miloschwartz on GitHub. Hi everyone, I have the following setup: - VPS with Docker, Pangolin and Pocket-ID for externally accessing a few homelab services - Homelab with Docker, Pangolin and Pocket-ID for internal access to services I run two Pangolin instances, one externally on a VPS and one internally. I only run one Pocket-ID instance externally that serves both Pangolin instances. Both instances and access worked well with Pocket-ID 1.10.0 and Pangolin 1.6.2. Then I updated the external Pangolin instance to 1.9.0 and since then the external access does not work anymore. I receive the following error message when trying to log into a service directly, e.g. into uptime kuma, from externally: <img width="568" height="330" alt="Image" src="https://github.com/user-attachments/assets/df309349-302c-4f38-a505-7f907f75c37f" /> When I log into Pangolin (on VPS) directly, I receive this screen, which shows that the user is not connected to an organization. I have automatic user provisioning activated, which does not work anymore. Everytime, I create the user manually, it is gone after I tried to log in. <img width="256" height="441" alt="Image" src="https://github.com/user-attachments/assets/0d8831d7-fe04-4a1c-883f-c5181638ebab" /> The docker logs are below: Pangolin: `2025-09-12T07:08:12.306Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-12T07:08:12.307Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-12T07:08:12.307Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-12T07:08:12.310Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-12T07:08:12.311Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-12T07:08:12.312Z [info]: Exit node request successful: {"method":"POST","url":"http://gerbil:3003/peer","status":"Peer added successfully"} 2025-09-14T12:38:28.762Z [info]: Checking Docker socket for site 1 with Newt ft8luaohkalmf 2025-09-14T12:38:28.775Z [info]: Handling Docker socket check response 2025-09-14T12:38:28.775Z [info]: Newt ID: ft8luaohkalmf, Site ID: 1 2025-09-14T12:38:28.775Z [info]: Docker socket availability for Newt ft8luaohkalmf: available=false, socketPath= 2025-09-14T12:38:28.775Z [warn]: Newt ft8luaohkalmf does not have Docker socket access 2025-09-14T12:38:28.775Z [info]: Handling Docker socket check response 2025-09-14T12:38:28.775Z [info]: Newt ID: ft8luaohkalmf, Site ID: 1 2025-09-14T12:38:28.775Z [info]: Docker socket availability for Newt ft8luaohkalmf: available=false, socketPath= 2025-09-14T12:38:28.775Z [warn]: Newt ft8luaohkalmf does not have Docker socket access` Pocket-ID: `time=2025-09-14T12:55:57.524Z level=INFO msg="Incoming request" app=pocket-id version=1.10.0 request.time=2025-09-14T12:55:57.524Z request.method=GET request.host=auth.... request.path=/.well-known/jwks.json request.query="" request.params=map[] request.route=/.well-known/jwks.json request.ip=136.... request.referer="" request.length=0 response.time=2025-09-14T12:55:57.524Z response.latency=21.66µs response.status=200 response.length=430 time=2025-09-14T12:56:57.584Z level=INFO msg="Incoming request" app=pocket-id version=1.10.0 request.time=2025-09-14T12:56:57.584Z request.method=GET request.host=auth.... request.path=/.well-known/openid-configuration request.query="" request.params=map[] request.route=/.well-known/openid-configuration request.ip=136.... request.referer="" request.length=0 response.time=2025-09-14T12:56:57.584Z response.latency=42.451µs response.status=200 response.length=1020 time=2025-09-14T12:56:57.618Z level=INFO msg="Incoming request" app=pocket-id version=1.10.0 request.time=2025-09-14T12:56:57.618Z request.method=GET request.host=auth.... request.path=/.well-known/jwks.json request.query="" request.params=map[] request.route=/.well-known/jwks.json request.ip=136.... request.referer="" request.length=0 response.time=2025-09-14T12:56:57.618Z response.latency=35.471µs response.status=200 response.length=430` Any help would be appreciated - the setup worked perfectly for me before the update
GiteaMirror added the Look Into label 2026-04-16 08:47:00 -05:00
Author
Owner

@miloschwartz commented on GitHub (Sep 21, 2025):

I have automatic user provisioning activated, which does not work anymore. Every time, I create the user manually, it is gone after I tried to log in.

With auto provisioning enabled, on each login it reruns a check on all the organization policies on the identity provider to determine if the user should have access to the organization/role. IT sounds like when you log in this check is happening and you're getting removed from your org because the policies aren't returning the expected org ID or role name.

Can you screenshot your policies (JMES path) from the edit IdP screen and I could take a look?

Also as a tip, if you have debug logs enabled, when you complete the OAuth flow, it should still print out the token response from Pocket ID (IdP) which you can use manually run the JMES Path expression against for debugging/checking purposes. Some docs on auto provisioning if you haven't see it already here.

<!-- gh-comment-id:3316087570 --> @miloschwartz commented on GitHub (Sep 21, 2025): > I have automatic user provisioning activated, which does not work anymore. Every time, I create the user manually, it is gone after I tried to log in. With auto provisioning enabled, on each login it reruns a check on all the organization policies on the identity provider to determine if the user should have access to the organization/role. IT sounds like when you log in this check is happening and you're getting removed from your org because the policies aren't returning the expected org ID or role name. Can you screenshot your policies (JMES path) from the edit IdP screen and I could take a look? Also as a tip, if you have debug logs enabled, when you complete the OAuth flow, it should still print out the token response from Pocket ID (IdP) which you can use manually run the JMES Path expression against for debugging/checking purposes. Some docs on auto provisioning if you haven't see it already [here](https://docs.digpangolin.com/manage/identity-providers/auto-provisioning#community-edition).
Author
Owner

@thimplicity commented on GitHub (Sep 22, 2025):

Hi @miloschwartz,
thanks for pointing me in the correct direction. Seems like I added a typo to the policies when debugging. Seems to work now that I corrected that. Thanks a lot!

<!-- gh-comment-id:3319480625 --> @thimplicity commented on GitHub (Sep 22, 2025): Hi @miloschwartz, thanks for pointing me in the correct direction. Seems like I added a typo to the policies when debugging. Seems to work now that I corrected that. Thanks a lot!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/pangolin#1918