Health check ignored in blueprint + health check status not appearing in resource list. #385

Closed
opened 2026-04-05 17:08:29 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @eskori on 1/13/2026

Describe the Bug

Blueprints via Docker labels fail to enable health checks even if they are recognized as true.

Potentially related: after the resource is created, health check can be enabled manually, but it always shows as "Unknown" in the main Resources list (need to enter the resource details to see the actual status). I'm not sure if this should be a separate issue, if so please let me know.

Environment

  • OS Type & Version: AlmaLinux 10
  • Pangolin Version: 1.14.1
  • Gerbil Version: 1.3.0
  • Traefik Version: 3.6
  • Newt Version: 1.8.1

To Reproduce

First time writing an issue so please bear with me and sorry if I missed something! Anyways, the steps:

  1. Edit the compose file of the target container and add the desired labels (in this example I will create a public resource with some rules)
  2. (Re)Deploy the project, redeploy Newt and confirm that the resource is created.
  3. Review its details health check is missing.
  4. (Not sure if it is related) Manually enable health check, go back to the resource list and see that status is "Unknown".
  5. Enter the resource details to see the actual status of the health check.
    I tried this with several containers, all of them behave the same way. The resource is created and everything is properly configured except the health checks. Not only that, but seeing the blueprint in the UI it shows the health check configuration (including enabled: true) yet it does not exist.

My example for Gotify (I redacted my domain for privacy reasons, but I can confirm it is properly configured)

compose.yml

services:
  gotify:
    container_name: gotify
    restart: unless-stopped
    image: gotify/server
    ports:
      - 8088:80
    volumes:
      - /home/mola/data/gotify:/app/data
    environment:
      - GOTIFY_DEFAULTUSER_PASS=${DEFAULT_PASS}
    labels:
      # PANGOLIN BLUEPRINT
      ## Public resource
      - pangolin.public-resources.gotify.name=Gotify
      - pangolin.public-resources.gotify.full-domain=gotify.example.com
      - pangolin.public-resources.gotify.protocol=http
      - pangolin.public-resources.gotify.ssl=true
      ## Target
      - pangolin.public-resources.gotify.targets[0].site=pezluna
      - pangolin.public-resources.gotify.targets[0].hostname=192.168.1.11
      - pangolin.public-resources.gotify.targets[0].port=8088
      - pangolin.public-resources.gotify.targets[0].method=http
      ## Healthcheck
      - pangolin.public-resources.gotify.healthcheck.hostname=192.168.1.11
      - pangolin.public-resources.gotify.healthcheck.port=8088
      - pangolin.public-resources.gotify.healthcheck.enabled=true
      - pangolin.public-resources.gotify.healthcheck.path=/health
      - pangolin.public-resources.gotify.healthcheck.scheme=http
      - pangolin.public-resources.gotify.healthcheck.method=GET
      ## Rules
      - pangolin.public-resources.gotify.rules[0].action=allow
      - pangolin.public-resources.gotify.rules[0].value=/version
      - pangolin.public-resources.gotify.rules[0].match=path
      - pangolin.public-resources.gotify.rules[1].action=allow
      - pangolin.public-resources.gotify.rules[1].value=/message
      - pangolin.public-resources.gotify.rules[1].match=path
      - pangolin.public-resources.gotify.rules[2].action=allow
      - pangolin.public-resources.gotify.rules[2].value=/application
      - pangolin.public-resources.gotify.rules[2].match=path
      - pangolin.public-resources.gotify.rules[3].action=allow
      - pangolin.public-resources.gotify.rules[3].value=/client
      - pangolin.public-resources.gotify.rules[3].match=path
      - pangolin.public-resources.gotify.rules[4].action=allow
      - pangolin.public-resources.gotify.rules[4].value=/stream
      - pangolin.public-resources.gotify.rules[4].match=path
      - pangolin.public-resources.gotify.rules[5].action=allow
      - pangolin.public-resources.gotify.rules[5].value=/plugin
      - pangolin.public-resources.gotify.rules[5].match=path
      - pangolin.public-resources.gotify.rules[6].action=allow
      - pangolin.public-resources.gotify.rules[6].value=/health
      - pangolin.public-resources.gotify.rules[6].match=path

Blueprint result

proxy-resources: {}
client-resources: {}
public-resources:
  gotify:
    full-domain: gotify.example.com
    healthcheck:
      enabled: true
      hostname: 192.168.1.11
      method: GET
      path: /health
      port: 8088
      scheme: http
    name: Gotify
    protocol: http
    rules:
      - action: allow
        match: path
        value: /version
      - action: allow
        match: path
        value: /message
      - action: allow
        match: path
        value: /application
      - action: allow
        match: path
        value: /client
      - action: allow
        match: path
        value: /stream
      - action: allow
        match: path
        value: /plugin
      - action: allow
        match: path
        value: /health
    ssl: true
    targets:
      - hostname: 192.168.1.11
        method: http
        port: 8088
        site: pezluna

Regarding the potentially related issue, this is how the resource is seen in the list:
Image

vs how it looks when seeing the details:

Image

Expected Behavior

  • Public resource is created with the same configuration it has right now + health check enabled and configured.
  • Health check status appears in the Resource list too, not only in the details.
*Originally created by @eskori on 1/13/2026* ### Describe the Bug Blueprints via Docker labels fail to enable health checks even if they are recognized as true. Potentially related: after the resource is created, health check can be enabled manually, but it always shows as "Unknown" in the main Resources list (need to enter the resource details to see the actual status). I'm not sure if this should be a separate issue, if so please let me know. ### Environment - OS Type & Version: AlmaLinux 10 - Pangolin Version: 1.14.1 - Gerbil Version: 1.3.0 - Traefik Version: 3.6 - Newt Version: 1.8.1 ### To Reproduce First time writing an issue so please bear with me and sorry if I missed something! Anyways, the steps: 1. Edit the compose file of the target container and add the desired labels (in this example I will create a public resource with some rules) 3. (Re)Deploy the project, redeploy Newt and confirm that the resource is created. 4. Review its details health check is missing. 5. (Not sure if it is related) Manually enable health check, go back to the resource list and see that status is "Unknown". 6. Enter the resource details to see the actual status of the health check. I tried this with several containers, all of them behave the same way. The resource is created and everything is properly configured _except_ the health checks. Not only that, but seeing the blueprint in the UI it shows the health check configuration (including `enabled: true`) yet it does not exist. My example for Gotify (I redacted my domain for privacy reasons, but I can confirm it is properly configured) <details><summary>compose.yml</summary> <p> ```yaml services: gotify: container_name: gotify restart: unless-stopped image: gotify/server ports: - 8088:80 volumes: - /home/mola/data/gotify:/app/data environment: - GOTIFY_DEFAULTUSER_PASS=${DEFAULT_PASS} labels: # PANGOLIN BLUEPRINT ## Public resource - pangolin.public-resources.gotify.name=Gotify - pangolin.public-resources.gotify.full-domain=gotify.example.com - pangolin.public-resources.gotify.protocol=http - pangolin.public-resources.gotify.ssl=true ## Target - pangolin.public-resources.gotify.targets[0].site=pezluna - pangolin.public-resources.gotify.targets[0].hostname=192.168.1.11 - pangolin.public-resources.gotify.targets[0].port=8088 - pangolin.public-resources.gotify.targets[0].method=http ## Healthcheck - pangolin.public-resources.gotify.healthcheck.hostname=192.168.1.11 - pangolin.public-resources.gotify.healthcheck.port=8088 - pangolin.public-resources.gotify.healthcheck.enabled=true - pangolin.public-resources.gotify.healthcheck.path=/health - pangolin.public-resources.gotify.healthcheck.scheme=http - pangolin.public-resources.gotify.healthcheck.method=GET ## Rules - pangolin.public-resources.gotify.rules[0].action=allow - pangolin.public-resources.gotify.rules[0].value=/version - pangolin.public-resources.gotify.rules[0].match=path - pangolin.public-resources.gotify.rules[1].action=allow - pangolin.public-resources.gotify.rules[1].value=/message - pangolin.public-resources.gotify.rules[1].match=path - pangolin.public-resources.gotify.rules[2].action=allow - pangolin.public-resources.gotify.rules[2].value=/application - pangolin.public-resources.gotify.rules[2].match=path - pangolin.public-resources.gotify.rules[3].action=allow - pangolin.public-resources.gotify.rules[3].value=/client - pangolin.public-resources.gotify.rules[3].match=path - pangolin.public-resources.gotify.rules[4].action=allow - pangolin.public-resources.gotify.rules[4].value=/stream - pangolin.public-resources.gotify.rules[4].match=path - pangolin.public-resources.gotify.rules[5].action=allow - pangolin.public-resources.gotify.rules[5].value=/plugin - pangolin.public-resources.gotify.rules[5].match=path - pangolin.public-resources.gotify.rules[6].action=allow - pangolin.public-resources.gotify.rules[6].value=/health - pangolin.public-resources.gotify.rules[6].match=path ``` </p> </details> <details><summary>Blueprint result</summary> <p> ```yaml proxy-resources: {} client-resources: {} public-resources: gotify: full-domain: gotify.example.com healthcheck: enabled: true hostname: 192.168.1.11 method: GET path: /health port: 8088 scheme: http name: Gotify protocol: http rules: - action: allow match: path value: /version - action: allow match: path value: /message - action: allow match: path value: /application - action: allow match: path value: /client - action: allow match: path value: /stream - action: allow match: path value: /plugin - action: allow match: path value: /health ssl: true targets: - hostname: 192.168.1.11 method: http port: 8088 site: pezluna ``` </p> </details> Regarding the potentially related issue, this is how the resource is seen in the list: <img width="1676" height="277" alt="Image" src="https://github.com/user-attachments/assets/4e8643ca-d166-4c42-a105-34b3c4463ebd" /> vs how it looks when seeing the details: <img width="1675" height="373" alt="Image" src="https://github.com/user-attachments/assets/27b4af7f-daf9-46f3-a9a2-11f7a42484ca" /> ### Expected Behavior - [ ] Public resource is created with the same configuration it has right now + health check enabled and configured. - [ ] Health check status appears in the Resource list too, not only in the details.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/pangolin#385