[GH-ISSUE #2115] Unable to use private resource when connecting via Pangolin Client #19159

Closed
opened 2026-05-21 19:27:29 -05:00 by GiteaMirror · 7 comments
Owner

Originally created by @moodiness on GitHub (Dec 18, 2025).
Original GitHub issue: https://github.com/fosrl/pangolin/issues/2115

Describe the Bug

Description

Hi,

I’m having an issue when trying to configure a private resource using the IP address of my Unraid server and assigning it an alias in Pangolin.

My goal is to access this resource via the Pangolin Client using the alias, but it does not work as expected.

What I’m trying to do

  • Add my Unraid server IP (e.g. 192.168.1.x) as a private resource
  • Define an alias for this resource
  • Access the resource using this alias from the Pangolin Client

Environment

  • OS Type & Version: Unraid 7.2.2 & Windows 11 25H2 & macOS Tahoe 26
  • Pangolin Version: 1.13.1
  • Gerbil Version: 1.3.0
  • Traefik Version: 1.3.5
  • Newt Version: 1.7.0

To Reproduce

Image
# OLM Status:

{
  "connected": true,
  "registered": false,
  "terminated": false,
  "version": "0.1.1",
  "orgId": "privateOrgId"
}

and then it shows me this in the logs:

Image
# OLM Status:

Unable to get status via pipe. Is the tunnel service running?

Expected Behavior

Expected behavior

The resource should be reachable via the alias from the Pangolin Client.

Actual behavior

The connection fails when using the alias.
Accessing the resource directly by IP does not work either when it is defined with an alias in the private resource configuration.

Originally created by @moodiness on GitHub (Dec 18, 2025). Original GitHub issue: https://github.com/fosrl/pangolin/issues/2115 ### Describe the Bug ### Description Hi, I’m having an issue when trying to configure a **private resource** using the IP address of my **Unraid server** and assigning it an **alias** in Pangolin. My goal is to access this resource via the **Pangolin Client** using the alias, but it does not work as expected. ### What I’m trying to do * Add my Unraid server IP (e.g. `192.168.1.x`) as a **private resource** * Define an **alias** for this resource * Access the resource using this alias from the Pangolin Client ### Environment - OS Type & Version: Unraid 7.2.2 & Windows 11 25H2 & macOS Tahoe 26 - Pangolin Version: 1.13.1 - Gerbil Version: 1.3.0 - Traefik Version: 1.3.5 - Newt Version: 1.7.0 ### To Reproduce <img width="813" height="1069" alt="Image" src="https://github.com/user-attachments/assets/eb0f0d8c-d272-4253-8fd8-eeb36f041296" /> ``` # OLM Status: { "connected": true, "registered": false, "terminated": false, "version": "0.1.1", "orgId": "privateOrgId" } ``` and then it shows me this in the logs: <img width="1157" height="675" alt="Image" src="https://github.com/user-attachments/assets/0e785c56-0574-4c6d-89e4-30bac9450213" /> ``` # OLM Status: Unable to get status via pipe. Is the tunnel service running? ``` ### Expected Behavior ### Expected behavior The resource should be reachable via the alias from the Pangolin Client. ### Actual behavior The connection fails when using the alias. Accessing the resource directly by IP does not work either when it is defined with an alias in the private resource configuration.
Author
Owner

@Dyhlio commented on GitHub (Dec 18, 2025):

Hello I’m facing the same issue with same logs as him

<!-- gh-comment-id:3672753420 --> @Dyhlio commented on GitHub (Dec 18, 2025): Hello I’m facing the same issue with same logs as him
Author
Owner

@keonramses commented on GitHub (Dec 19, 2025):

@moodiness you have to specify the port the service you are trying to access is on.

Ex: 192.168.1.50:3000 unraid.home:8080

<!-- gh-comment-id:3673013573 --> @keonramses commented on GitHub (Dec 19, 2025): @moodiness you have to specify the port the service you are trying to access is on. Ex: 192.168.1.50:3000 unraid.home:8080
Author
Owner

@Dyhlio commented on GitHub (Dec 19, 2025):

@keonramses
Personally I have already tried it but it does not work either
even another container with that port does not work

<!-- gh-comment-id:3673033633 --> @Dyhlio commented on GitHub (Dec 19, 2025): @keonramses Personally I have already tried it but it does not work either even another container with that port does not work
Author
Owner

@moodiness commented on GitHub (Dec 19, 2025):

@moodiness you have to specify the port the service you are trying to access is on.

Ex: 192.168.1.50:3000 unraid.home:8080

Hey thanks for your comment but I know and it's still doesn't work, I have tried 3/4 containers so ip:port and same result :/

<!-- gh-comment-id:3674831626 --> @moodiness commented on GitHub (Dec 19, 2025): > [@moodiness](https://github.com/moodiness) you have to specify the port the service you are trying to access is on. > > Ex: 192.168.1.50:3000 unraid.home:8080 Hey thanks for your comment but I know and it's still doesn't work, I have tried 3/4 containers so ip:port and same result :/
Author
Owner

@miloschwartz commented on GitHub (Dec 20, 2025):

When you click Connect, could you watch Task Manager and see whether the tunnel service starts?

When disconnected, you should see two Pangolin processes. After clicking Connect, a third process (the tunnel service) should spawn. My suspicion is that this process isn’t being created for some reason.

Also, please keep an eye on the logs when you click Connect and try to capture the output at that moment. That information will be very helpful for debugging. Without it, we don’t have enough detail to track down the issue.

<!-- gh-comment-id:3677310192 --> @miloschwartz commented on GitHub (Dec 20, 2025): When you click Connect, could you watch Task Manager and see whether the tunnel service starts? When disconnected, you should see two Pangolin processes. After clicking Connect, a third process (the tunnel service) should spawn. My suspicion is that this process isn’t being created for some reason. Also, please keep an eye on the logs when you click Connect and try to capture the output at that moment. That information will be very helpful for debugging. Without it, we don’t have enough detail to track down the issue.
Author
Owner

@moodiness commented on GitHub (Dec 20, 2025):

When you click Connect, could you watch Task Manager and see whether the tunnel service starts?

When disconnected, you should see two Pangolin processes. After clicking Connect, a third process (the tunnel service) should spawn. My suspicion is that this process isn’t being created for some reason.

Also, please keep an eye on the logs when you click Connect and try to capture the output at that moment. That information will be very helpful for debugging. Without it, we don’t have enough detail to track down the issue.

Not connected:

Image

Connected:

Image

Logs:

2025-12-20 11:59:22.000 [INFO] Pangolin logging initialized - log file: C:\ProgramData\Pangolin\logs\pangolin.log, log level: debug
2025-12-20 11:59:22.000 [INFO] Pangolin version 0.1.1 starting
2025-12-20 11:59:22.000 [INFO] Cannot access service manager without admin privileges
2025-12-20 11:59:22.000 [INFO] Attempting to install/start manager service (will show UAC prompt)...
2025-12-20 11:59:22.000 [INFO] Elevate: ShellExecute called - program: C:\Program Files\Pangolin\Pangolin.exe, args: /installmanagerservice
2025-12-20 11:59:23.000 [INFO] Elevate: ShellExecute succeeded
2025-12-20 11:59:23.000 [INFO] Pangolin logging initialized - log file: C:\ProgramData\Pangolin\logs\pangolin.log, log level: debug
2025-12-20 11:59:23.000 [INFO] Pangolin version 0.1.1 starting
2025-12-20 11:59:23.000 [INFO] Pangolin logging initialized - log file: C:\ProgramData\Pangolin\logs\pangolin.log, log level: debug
2025-12-20 11:59:23.000 [INFO] Pangolin version 0.1.1 starting
2025-12-20 11:59:23.000 [INFO] Starting as manager service
2025-12-20 11:59:23.000 [INFO] Manager service installed successfully
2025-12-20 11:59:23.000 [INFO] Pangolin Manager service starting
2025-12-20 11:59:23.000 [INFO] Starting UI process for user 'Admin@DESKTOP-XXXXXXX' for session 1
2025-12-20 11:59:23.000 [INFO] Updater: CheckForUpdate() called
2025-12-20 11:59:23.000 [INFO] Updater: checkForUpdate() started (keepSession=false)
2025-12-20 11:59:23.000 [INFO] Updater: Current version: 0.1.1, Architecture: amd64
2025-12-20 11:59:23.000 [INFO] Updater: Creating WinHTTP session with User-Agent: Pangolin/0.1.1 (Windows 10.0.26200; amd64)
2025-12-20 11:59:23.000 [INFO] Updater: WinHTTP session created successfully
2025-12-20 11:59:23.000 [INFO] Updater: Connecting to update server: static.pangolin.net:443 (HTTPS=true)
2025-12-20 11:59:23.000 [INFO] Updater: Connected to update server successfully
2025-12-20 11:59:23.000 [INFO] Updater: Fetching manifest from: /windows-client/latest.sig
2025-12-20 11:59:23.000 [INFO] Pangolin logging initialized - log file: C:\ProgramData\Pangolin\logs\pangolin.log, log level: debug
2025-12-20 11:59:23.000 [INFO] Pangolin version 0.1.1 starting
2025-12-20 11:59:23.000 [INFO] Connected to manager service via IPC
2025-12-20 11:59:23.000 [INFO] APIClient initialized with baseURL: https://pangolin.domain.com
2025-12-20 11:59:23.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user
2025-12-20 11:59:23.000 [INFO] Updater: Manifest response received
2025-12-20 11:59:23.000 [INFO] Updater: Read 318 bytes from manifest
2025-12-20 11:59:23.000 [INFO] Updater: Parsing manifest file list
2025-12-20 11:59:23.000 [INFO] Updater: Parsing signed file list (input size: 318 bytes)
2025-12-20 11:59:23.000 [INFO] Updater: Decoding public key from base64
2025-12-20 11:59:23.000 [INFO] Updater: Public key decoded successfully (length: 42)
2025-12-20 11:59:23.000 [INFO] Updater: Manifest has 3 lines as expected
2025-12-20 11:59:23.000 [INFO] Updater: Untrusted comment found: untrusted comment: verify with release.pub
2025-12-20 11:59:23.000 [INFO] Updater: Decoding signature from base64
2025-12-20 11:59:23.000 [INFO] Updater: Signature decoded (length: 74)
2025-12-20 11:59:23.000 [INFO] Updater: Signature format valid, verifying...
2025-12-20 11:59:23.000 [INFO] Updater: ✓ Ed25519 signature verified successfully
2025-12-20 11:59:23.000 [INFO] Updater: Parsing 2 file hash lines
2025-12-20 11:59:23.000 [INFO] Updater: Parsed file entry: pangolin-amd64-0.1.1.msi (hash: b1c84c78c7d981f5d2a980409d3fc9a8c35afda6b37c407580a20456c7a999ba, location: https://github.com/fosrl/windows/releases/download/0.1.1/pangolin-amd64-0.1.1.msi)
2025-12-20 11:59:23.000 [INFO] Updater: Skipping empty last line
2025-12-20 11:59:23.000 [INFO] Updater: Successfully parsed 1 file entries from manifest
2025-12-20 11:59:23.000 [INFO] Updater: Manifest parsed successfully, found 1 files
2025-12-20 11:59:23.000 [INFO] Updater: Searching for update candidate
2025-12-20 11:59:23.000 [INFO] Updater: findCandidate() - Current version: 0.1.1, Architecture: amd64
2025-12-20 11:59:23.000 [INFO] Updater: Looking for files matching prefix: pangolin-amd64-, suffix: .msi
2025-12-20 11:59:23.000 [INFO] Updater: Total files in manifest: 1
2025-12-20 11:59:23.000 [INFO] Updater: Manifest contains file: pangolin-amd64-0.1.1.msi
2025-12-20 11:59:23.000 [INFO] Updater: Checking file: pangolin-amd64-0.1.1.msi
2025-12-20 11:59:23.000 [INFO] Updater: File pangolin-amd64-0.1.1.msi - hasPrefix(pangolin-amd64-): true, hasSuffix(.msi): true
2025-12-20 11:59:23.000 [INFO] Updater: File matches pattern! Extracted version: 0.1.1
2025-12-20 11:59:23.000 [INFO] Updater: Comparing candidate version 0.1.1 with current version 0.1.1
2025-12-20 11:59:23.000 [INFO] Updater: Comparing versions - candidate: 0.1.1, current: 0.1.1
2025-12-20 11:59:23.000 [INFO] Updater: Candidate parts: [0 1 1], Current parts: [0 1 1]
2025-12-20 11:59:23.000 [INFO] Updater: Comparing 3 version components
2025-12-20 11:59:23.000 [INFO] Updater: Component 0 - candidate: 0, current: 0
2025-12-20 11:59:23.000 [INFO] Updater: Component 0 matches, continuing
2025-12-20 11:59:23.000 [INFO] Updater: Component 1 - candidate: 1, current: 1
2025-12-20 11:59:23.000 [INFO] Updater: Component 1 matches, continuing
2025-12-20 11:59:23.000 [INFO] Updater: Component 2 - candidate: 1, current: 1
2025-12-20 11:59:23.000 [INFO] Updater: Component 2 matches, continuing
2025-12-20 11:59:23.000 [INFO] Updater: All components match - candidate is not newer
2025-12-20 11:59:23.000 [INFO] Updater: Version comparison result - 0.1.1 is newer than 0.1.1: false
2025-12-20 11:59:23.000 [INFO] Updater: Candidate version 0.1.1 is not newer, skipping
2025-12-20 11:59:23.000 [INFO] Updater: No update candidate found after checking all 1 files
2025-12-20 11:59:23.000 [INFO] Updater: No update candidate found
2025-12-20 11:59:23.000 [INFO] Updater: Closing connection
2025-12-20 11:59:23.000 [INFO] Updater: Closing WinHTTP session
2025-12-20 11:59:23.000 [INFO] Updater: CheckForUpdate completed - no update found
2025-12-20 11:59:23.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/orgs
2025-12-20 11:59:23.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/olm/xymmg1hnggof2zb
2025-12-20 11:59:23.000 [INFO] OLM credentials verified successfully
2025-12-20 11:59:23.000 [INFO] Connected to manager service - update checking handled by manager
2025-12-20 11:59:59.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user
2025-12-20 11:59:59.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/orgs
2025-12-20 11:59:59.000 [INFO] Organizations refreshed successfully: 1 orgs
2025-12-20 11:59:59.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/org/domain
2025-12-20 12:00:00.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/olm/xymmg1hnggof2zb
2025-12-20 12:00:00.000 [INFO] OLM credentials verified successfully
2025-12-20 12:00:00.000 [INFO] Connecting tunnel with config: Name=olm, Endpoint=https://pangolin.domain.com
2025-12-20 12:00:00.000 [INFO] Tunnel: StartTunnel called
2025-12-20 12:00:00.000 [INFO] Tunnel: Starting tunnel with config
2025-12-20 12:00:00.000 [INFO] Tunnel state changed: registering
2025-12-20 12:00:00.000 [INFO] Pangolin logging initialized - log file: C:\ProgramData\Pangolin\logs\pangolin.log, log level: debug
2025-12-20 12:00:00.000 [INFO] Pangolin version 0.1.1 starting
2025-12-20 12:00:00.000 [INFO] Starting as tunnel service with config: C:\ProgramData\Pangolin\Tunnels\olm.json
2025-12-20 12:00:00.000 [INFO] Tunnel service: Starting with config
2025-12-20 12:00:00.000 [INFO] Tunnel service: Running as Windows service
2025-12-20 12:00:00.000 [INFO] Tunnel state changed: registering
2025-12-20 12:00:00.000 [INFO] Tunnel service: Service starting
2025-12-20 12:00:00.000 [DEBUG] Build tunnel called: config: {Name:olm Endpoint:https://pangolin.domain.com ID:xymmg1hnggof2zb Secret:<private_secret_key> MTU:1280 DNS:1.1.1.1 Holepunch:true PingIntervalSeconds:5 PingTimeoutSeconds:5 UserToken:<private_user_token> OrgID:domain InterfaceName:Pangolin UpstreamDNS:[1.1.1.1:53] OverrideDNS:false}
2025-12-20 12:00:00.000 [DEBUG] Checking permissions for native interface
2025-12-20 12:00:00.000 [INFO] Starting status polling
2025-12-20 12:00:00.000 [INFO] Started OLM status polling (every 1 second)
2025-12-20 12:00:00.000 [DEBUG] Created named pipe at \\.\pipe\pangolin-olm with write access for everyone
2025-12-20 12:00:00.000 [INFO] Starting HTTP server on socket \\.\pipe\pangolin-olm
2025-12-20 12:00:00.000 [INFO] Starting OLM tunnel...
2025-12-20 12:00:00.000 [DEBUG] Build tunnel completed successfully
2025-12-20 12:00:00.000 [DEBUG] Starting tunnel with config: {Endpoint:https://pangolin.domain.com ID:xymmg1hnggof2zb Secret:<private_secret_key> UserToken:<private_user_token> MTU:1280 DNS:1.1.1.1 UpstreamDNS:[1.1.1.1:53] InterfaceName:Pangolin Holepunch:true TlsClientCert: PingIntervalDuration:5s PingTimeoutDuration:5s OrgID:domain FileDescriptorTun:0 FileDescriptorUAPI:0 EnableUAPI:false OverrideDNS:false DisableRelay:false}
2025-12-20 12:00:00.000 [INFO] Created shared UDP socket on port 56005 (refcount: 2)
2025-12-20 12:00:00.000 [DEBUG] Requesting token from https://pangolin.domain.com/api/v1/auth/olm/get-token with body: {"olmId":"xymmg1hnggof2zb","orgId":"domain","secret":"<private_secret_key>"}
2025-12-20 12:00:00.000 [DEBUG] Received token: <private_token>
2025-12-20 12:00:00.000 [DEBUG] Got exit nodes for hole punching: [{pangolin.domain.com tx5XO/<private_node>}]
2025-12-20 12:00:00.000 [DEBUG] Updated hole punch exit nodes: [{pangolin.domain.com tx5XO/<private_node>}]
2025-12-20 12:00:00.000 [INFO] Starting hole punch for 1 exit nodes
2025-12-20 12:00:00.000 [INFO] Starting UDP hole punch to 1 exit nodes with shared bind
2025-12-20 12:00:00.000 [INFO] Resolved exit node: pangolin.domain.com -> <private_vps_ip>:21820
2025-12-20 12:00:00.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"}
2025-12-20 12:00:00.000 [INFO] Websocket Connected
2025-12-20 12:00:01.000 [INFO] Tunnel state changed: running
2025-12-20 12:00:01.000 [DEBUG] Sending registration message to server with public key: <private_public_key> and relay: false
2025-12-20 12:00:01.000 [DEBUG] Sending message: olm/ping, data: map[timestamp:1766228401 userToken:<private_user_token>]
2025-12-20 12:00:01.000 [DEBUG] Sent ping message
2025-12-20 12:00:01.000 [INFO] Tunnel: OLM registered
2025-12-20 12:00:01.000 [INFO] Sent initial ping message
2025-12-20 12:00:01.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>]
2025-12-20 12:00:01.000 [DEBUG] Received pong message
2025-12-20 12:00:01.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"}
2025-12-20 12:00:01.000 [DEBUG] Increased hole punch interval to 2s
2025-12-20 12:00:02.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>]
2025-12-20 12:00:03.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>]
2025-12-20 12:00:03.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"}
2025-12-20 12:00:03.000 [DEBUG] Increased hole punch interval to 4s
2025-12-20 12:00:04.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>]
2025-12-20 12:00:05.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>]
2025-12-20 12:00:06.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>]
2025-12-20 12:00:07.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>]
2025-12-20 12:00:07.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"}
2025-12-20 12:00:07.000 [DEBUG] Increased hole punch interval to 8s
2025-12-20 12:00:08.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>]
2025-12-20 12:00:09.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>]
2025-12-20 12:00:10.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>]
2025-12-20 12:00:11.000 [INFO] SendMessageInterval timed out after 10 attempts for message type: olm/wg/register
2025-12-20 12:00:15.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"}
2025-12-20 12:00:15.000 [DEBUG] Increased hole punch interval to 16s
2025-12-20 12:00:17.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user
2025-12-20 12:00:17.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/orgs
2025-12-20 12:00:18.000 [INFO] Organizations refreshed successfully: 1 orgs
2025-12-20 12:00:18.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user
2025-12-20 12:00:18.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/orgs
2025-12-20 12:00:18.000 [INFO] Organizations refreshed successfully: 1 orgs
2025-12-20 12:00:31.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"}
2025-12-20 12:00:31.000 [DEBUG] Increased hole punch interval to 32s
<!-- gh-comment-id:3677735512 --> @moodiness commented on GitHub (Dec 20, 2025): > When you click Connect, could you watch Task Manager and see whether the tunnel service starts? > > When disconnected, you should see two Pangolin processes. After clicking Connect, a third process (the tunnel service) should spawn. My suspicion is that this process isn’t being created for some reason. > > Also, please keep an eye on the logs when you click Connect and try to capture the output at that moment. That information will be very helpful for debugging. Without it, we don’t have enough detail to track down the issue. Not connected: <img width="858" height="668" alt="Image" src="https://github.com/user-attachments/assets/5d48ac3a-5abd-45de-a6cf-66f277dfff86" /> Connected: <img width="858" height="668" alt="Image" src="https://github.com/user-attachments/assets/e3cf5eb7-a279-489c-b5f7-b92b9a9615f3" /> Logs: ``` 2025-12-20 11:59:22.000 [INFO] Pangolin logging initialized - log file: C:\ProgramData\Pangolin\logs\pangolin.log, log level: debug 2025-12-20 11:59:22.000 [INFO] Pangolin version 0.1.1 starting 2025-12-20 11:59:22.000 [INFO] Cannot access service manager without admin privileges 2025-12-20 11:59:22.000 [INFO] Attempting to install/start manager service (will show UAC prompt)... 2025-12-20 11:59:22.000 [INFO] Elevate: ShellExecute called - program: C:\Program Files\Pangolin\Pangolin.exe, args: /installmanagerservice 2025-12-20 11:59:23.000 [INFO] Elevate: ShellExecute succeeded 2025-12-20 11:59:23.000 [INFO] Pangolin logging initialized - log file: C:\ProgramData\Pangolin\logs\pangolin.log, log level: debug 2025-12-20 11:59:23.000 [INFO] Pangolin version 0.1.1 starting 2025-12-20 11:59:23.000 [INFO] Pangolin logging initialized - log file: C:\ProgramData\Pangolin\logs\pangolin.log, log level: debug 2025-12-20 11:59:23.000 [INFO] Pangolin version 0.1.1 starting 2025-12-20 11:59:23.000 [INFO] Starting as manager service 2025-12-20 11:59:23.000 [INFO] Manager service installed successfully 2025-12-20 11:59:23.000 [INFO] Pangolin Manager service starting 2025-12-20 11:59:23.000 [INFO] Starting UI process for user 'Admin@DESKTOP-XXXXXXX' for session 1 2025-12-20 11:59:23.000 [INFO] Updater: CheckForUpdate() called 2025-12-20 11:59:23.000 [INFO] Updater: checkForUpdate() started (keepSession=false) 2025-12-20 11:59:23.000 [INFO] Updater: Current version: 0.1.1, Architecture: amd64 2025-12-20 11:59:23.000 [INFO] Updater: Creating WinHTTP session with User-Agent: Pangolin/0.1.1 (Windows 10.0.26200; amd64) 2025-12-20 11:59:23.000 [INFO] Updater: WinHTTP session created successfully 2025-12-20 11:59:23.000 [INFO] Updater: Connecting to update server: static.pangolin.net:443 (HTTPS=true) 2025-12-20 11:59:23.000 [INFO] Updater: Connected to update server successfully 2025-12-20 11:59:23.000 [INFO] Updater: Fetching manifest from: /windows-client/latest.sig 2025-12-20 11:59:23.000 [INFO] Pangolin logging initialized - log file: C:\ProgramData\Pangolin\logs\pangolin.log, log level: debug 2025-12-20 11:59:23.000 [INFO] Pangolin version 0.1.1 starting 2025-12-20 11:59:23.000 [INFO] Connected to manager service via IPC 2025-12-20 11:59:23.000 [INFO] APIClient initialized with baseURL: https://pangolin.domain.com 2025-12-20 11:59:23.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user 2025-12-20 11:59:23.000 [INFO] Updater: Manifest response received 2025-12-20 11:59:23.000 [INFO] Updater: Read 318 bytes from manifest 2025-12-20 11:59:23.000 [INFO] Updater: Parsing manifest file list 2025-12-20 11:59:23.000 [INFO] Updater: Parsing signed file list (input size: 318 bytes) 2025-12-20 11:59:23.000 [INFO] Updater: Decoding public key from base64 2025-12-20 11:59:23.000 [INFO] Updater: Public key decoded successfully (length: 42) 2025-12-20 11:59:23.000 [INFO] Updater: Manifest has 3 lines as expected 2025-12-20 11:59:23.000 [INFO] Updater: Untrusted comment found: untrusted comment: verify with release.pub 2025-12-20 11:59:23.000 [INFO] Updater: Decoding signature from base64 2025-12-20 11:59:23.000 [INFO] Updater: Signature decoded (length: 74) 2025-12-20 11:59:23.000 [INFO] Updater: Signature format valid, verifying... 2025-12-20 11:59:23.000 [INFO] Updater: ✓ Ed25519 signature verified successfully 2025-12-20 11:59:23.000 [INFO] Updater: Parsing 2 file hash lines 2025-12-20 11:59:23.000 [INFO] Updater: Parsed file entry: pangolin-amd64-0.1.1.msi (hash: b1c84c78c7d981f5d2a980409d3fc9a8c35afda6b37c407580a20456c7a999ba, location: https://github.com/fosrl/windows/releases/download/0.1.1/pangolin-amd64-0.1.1.msi) 2025-12-20 11:59:23.000 [INFO] Updater: Skipping empty last line 2025-12-20 11:59:23.000 [INFO] Updater: Successfully parsed 1 file entries from manifest 2025-12-20 11:59:23.000 [INFO] Updater: Manifest parsed successfully, found 1 files 2025-12-20 11:59:23.000 [INFO] Updater: Searching for update candidate 2025-12-20 11:59:23.000 [INFO] Updater: findCandidate() - Current version: 0.1.1, Architecture: amd64 2025-12-20 11:59:23.000 [INFO] Updater: Looking for files matching prefix: pangolin-amd64-, suffix: .msi 2025-12-20 11:59:23.000 [INFO] Updater: Total files in manifest: 1 2025-12-20 11:59:23.000 [INFO] Updater: Manifest contains file: pangolin-amd64-0.1.1.msi 2025-12-20 11:59:23.000 [INFO] Updater: Checking file: pangolin-amd64-0.1.1.msi 2025-12-20 11:59:23.000 [INFO] Updater: File pangolin-amd64-0.1.1.msi - hasPrefix(pangolin-amd64-): true, hasSuffix(.msi): true 2025-12-20 11:59:23.000 [INFO] Updater: File matches pattern! Extracted version: 0.1.1 2025-12-20 11:59:23.000 [INFO] Updater: Comparing candidate version 0.1.1 with current version 0.1.1 2025-12-20 11:59:23.000 [INFO] Updater: Comparing versions - candidate: 0.1.1, current: 0.1.1 2025-12-20 11:59:23.000 [INFO] Updater: Candidate parts: [0 1 1], Current parts: [0 1 1] 2025-12-20 11:59:23.000 [INFO] Updater: Comparing 3 version components 2025-12-20 11:59:23.000 [INFO] Updater: Component 0 - candidate: 0, current: 0 2025-12-20 11:59:23.000 [INFO] Updater: Component 0 matches, continuing 2025-12-20 11:59:23.000 [INFO] Updater: Component 1 - candidate: 1, current: 1 2025-12-20 11:59:23.000 [INFO] Updater: Component 1 matches, continuing 2025-12-20 11:59:23.000 [INFO] Updater: Component 2 - candidate: 1, current: 1 2025-12-20 11:59:23.000 [INFO] Updater: Component 2 matches, continuing 2025-12-20 11:59:23.000 [INFO] Updater: All components match - candidate is not newer 2025-12-20 11:59:23.000 [INFO] Updater: Version comparison result - 0.1.1 is newer than 0.1.1: false 2025-12-20 11:59:23.000 [INFO] Updater: Candidate version 0.1.1 is not newer, skipping 2025-12-20 11:59:23.000 [INFO] Updater: No update candidate found after checking all 1 files 2025-12-20 11:59:23.000 [INFO] Updater: No update candidate found 2025-12-20 11:59:23.000 [INFO] Updater: Closing connection 2025-12-20 11:59:23.000 [INFO] Updater: Closing WinHTTP session 2025-12-20 11:59:23.000 [INFO] Updater: CheckForUpdate completed - no update found 2025-12-20 11:59:23.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/orgs 2025-12-20 11:59:23.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/olm/xymmg1hnggof2zb 2025-12-20 11:59:23.000 [INFO] OLM credentials verified successfully 2025-12-20 11:59:23.000 [INFO] Connected to manager service - update checking handled by manager 2025-12-20 11:59:59.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user 2025-12-20 11:59:59.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/orgs 2025-12-20 11:59:59.000 [INFO] Organizations refreshed successfully: 1 orgs 2025-12-20 11:59:59.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/org/domain 2025-12-20 12:00:00.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/olm/xymmg1hnggof2zb 2025-12-20 12:00:00.000 [INFO] OLM credentials verified successfully 2025-12-20 12:00:00.000 [INFO] Connecting tunnel with config: Name=olm, Endpoint=https://pangolin.domain.com 2025-12-20 12:00:00.000 [INFO] Tunnel: StartTunnel called 2025-12-20 12:00:00.000 [INFO] Tunnel: Starting tunnel with config 2025-12-20 12:00:00.000 [INFO] Tunnel state changed: registering 2025-12-20 12:00:00.000 [INFO] Pangolin logging initialized - log file: C:\ProgramData\Pangolin\logs\pangolin.log, log level: debug 2025-12-20 12:00:00.000 [INFO] Pangolin version 0.1.1 starting 2025-12-20 12:00:00.000 [INFO] Starting as tunnel service with config: C:\ProgramData\Pangolin\Tunnels\olm.json 2025-12-20 12:00:00.000 [INFO] Tunnel service: Starting with config 2025-12-20 12:00:00.000 [INFO] Tunnel service: Running as Windows service 2025-12-20 12:00:00.000 [INFO] Tunnel state changed: registering 2025-12-20 12:00:00.000 [INFO] Tunnel service: Service starting 2025-12-20 12:00:00.000 [DEBUG] Build tunnel called: config: {Name:olm Endpoint:https://pangolin.domain.com ID:xymmg1hnggof2zb Secret:<private_secret_key> MTU:1280 DNS:1.1.1.1 Holepunch:true PingIntervalSeconds:5 PingTimeoutSeconds:5 UserToken:<private_user_token> OrgID:domain InterfaceName:Pangolin UpstreamDNS:[1.1.1.1:53] OverrideDNS:false} 2025-12-20 12:00:00.000 [DEBUG] Checking permissions for native interface 2025-12-20 12:00:00.000 [INFO] Starting status polling 2025-12-20 12:00:00.000 [INFO] Started OLM status polling (every 1 second) 2025-12-20 12:00:00.000 [DEBUG] Created named pipe at \\.\pipe\pangolin-olm with write access for everyone 2025-12-20 12:00:00.000 [INFO] Starting HTTP server on socket \\.\pipe\pangolin-olm 2025-12-20 12:00:00.000 [INFO] Starting OLM tunnel... 2025-12-20 12:00:00.000 [DEBUG] Build tunnel completed successfully 2025-12-20 12:00:00.000 [DEBUG] Starting tunnel with config: {Endpoint:https://pangolin.domain.com ID:xymmg1hnggof2zb Secret:<private_secret_key> UserToken:<private_user_token> MTU:1280 DNS:1.1.1.1 UpstreamDNS:[1.1.1.1:53] InterfaceName:Pangolin Holepunch:true TlsClientCert: PingIntervalDuration:5s PingTimeoutDuration:5s OrgID:domain FileDescriptorTun:0 FileDescriptorUAPI:0 EnableUAPI:false OverrideDNS:false DisableRelay:false} 2025-12-20 12:00:00.000 [INFO] Created shared UDP socket on port 56005 (refcount: 2) 2025-12-20 12:00:00.000 [DEBUG] Requesting token from https://pangolin.domain.com/api/v1/auth/olm/get-token with body: {"olmId":"xymmg1hnggof2zb","orgId":"domain","secret":"<private_secret_key>"} 2025-12-20 12:00:00.000 [DEBUG] Received token: <private_token> 2025-12-20 12:00:00.000 [DEBUG] Got exit nodes for hole punching: [{pangolin.domain.com tx5XO/<private_node>}] 2025-12-20 12:00:00.000 [DEBUG] Updated hole punch exit nodes: [{pangolin.domain.com tx5XO/<private_node>}] 2025-12-20 12:00:00.000 [INFO] Starting hole punch for 1 exit nodes 2025-12-20 12:00:00.000 [INFO] Starting UDP hole punch to 1 exit nodes with shared bind 2025-12-20 12:00:00.000 [INFO] Resolved exit node: pangolin.domain.com -> <private_vps_ip>:21820 2025-12-20 12:00:00.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"} 2025-12-20 12:00:00.000 [INFO] Websocket Connected 2025-12-20 12:00:01.000 [INFO] Tunnel state changed: running 2025-12-20 12:00:01.000 [DEBUG] Sending registration message to server with public key: <private_public_key> and relay: false 2025-12-20 12:00:01.000 [DEBUG] Sending message: olm/ping, data: map[timestamp:1766228401 userToken:<private_user_token>] 2025-12-20 12:00:01.000 [DEBUG] Sent ping message 2025-12-20 12:00:01.000 [INFO] Tunnel: OLM registered 2025-12-20 12:00:01.000 [INFO] Sent initial ping message 2025-12-20 12:00:01.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>] 2025-12-20 12:00:01.000 [DEBUG] Received pong message 2025-12-20 12:00:01.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"} 2025-12-20 12:00:01.000 [DEBUG] Increased hole punch interval to 2s 2025-12-20 12:00:02.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>] 2025-12-20 12:00:03.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>] 2025-12-20 12:00:03.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"} 2025-12-20 12:00:03.000 [DEBUG] Increased hole punch interval to 4s 2025-12-20 12:00:04.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>] 2025-12-20 12:00:05.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>] 2025-12-20 12:00:06.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>] 2025-12-20 12:00:07.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>] 2025-12-20 12:00:07.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"} 2025-12-20 12:00:07.000 [DEBUG] Increased hole punch interval to 8s 2025-12-20 12:00:08.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>] 2025-12-20 12:00:09.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>] 2025-12-20 12:00:10.000 [DEBUG] Sending message: olm/wg/register, data: map[olmAgent:Pangolin Windows olmVersion:0.1.1 orgId:domain publicKey:<private_public_key> relay:false userToken:<private_user_token>] 2025-12-20 12:00:11.000 [INFO] SendMessageInterval timed out after 10 attempts for message type: olm/wg/register 2025-12-20 12:00:15.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"} 2025-12-20 12:00:15.000 [DEBUG] Increased hole punch interval to 16s 2025-12-20 12:00:17.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user 2025-12-20 12:00:17.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/orgs 2025-12-20 12:00:18.000 [INFO] Organizations refreshed successfully: 1 orgs 2025-12-20 12:00:18.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user 2025-12-20 12:00:18.000 [INFO] Making request to: https://pangolin.domain.com/api/v1/user/XXXXXXXXXXXXXXXX/orgs 2025-12-20 12:00:18.000 [INFO] Organizations refreshed successfully: 1 orgs 2025-12-20 12:00:31.000 [DEBUG] Sent UDP hole punch to <private_vps_ip>:21820: {"ephemeralPublicKey":"<private_public_key>","nonce":"<private_nonce>","ciphertext":"<private_cipher_text>"} 2025-12-20 12:00:31.000 [DEBUG] Increased hole punch interval to 32s ```
Author
Owner

@moodiness commented on GitHub (Dec 20, 2025):

Closing this issue — partially resolved

The issue was caused by the installer installing an old version of OLM (v1.0.0) instead of the latest one (v1.2.0).

I fixed most of the problem by:

  1. Uninstalling OLM
  2. Uninstalling Pangolin
  3. Reinstalling Pangolin, which installed the correct OLM version

After reinstalling, the connection works correctly using the IP address.
However, the alias still does not work when accessing the private resource from the Pangolin Client.

I’m closing this issue since the main problem is resolved, but the alias behavior still seems to be a limitation or a separate issue.

Thanks!

<!-- gh-comment-id:3678147221 --> @moodiness commented on GitHub (Dec 20, 2025): **Closing this issue — partially resolved** The issue was caused by the installer installing an **old version of OLM (v1.0.0)** instead of the latest one (**v1.2.0**). I fixed most of the problem by: 1. Uninstalling **OLM** 2. Uninstalling **Pangolin** 3. Reinstalling **Pangolin**, which installed the correct OLM version After reinstalling, the connection works correctly using the IP address. However, **the alias still does not work** when accessing the private resource from the Pangolin Client. I’m closing this issue since the main problem is resolved, but the alias behavior still seems to be a limitation or a separate issue. Thanks!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/pangolin#19159