Skip to content

Health checks created via blueprints show up, but don't work without intervention #3484

Description

@DavidFuchs

Describe the Bug

Due to the number of services I run in my homelab, I use Docker labels to automate the creation of public resources in Pangolin.

I recently started creating health checks for all my services, using Docker labels (blueprints). Unfortunately, while the health checks show up in the configuration for the public resources, they never take effect until I manually modify the health check in the UI.

It is enough to simply toggle the health check off and on again, but ideally it would work without having to interact with it at all.

Environment

  • OS Type & Version: Ubuntu 24.04.04 & Docker 29.6.2
  • Pangolin Version: 1.21.0
  • Edition (Community or Enterprise): Enterprise (Personal Use)
  • Gerbil Version: 1.4.3
  • Traefik Version: 3.7
  • Newt Version: 1.15
  • Client Version: N/A

To Reproduce

Add health check labels to a Docker container in your compose.yml file. I'm using Immich as an example below, but it doesn't make a difference which container it is. The only labels that matter in the example below are the healthcheck labels.

When starting the compose stack, Pangolin picks up the labels and applies the blueprint. A new public resource is registered, and everything works except for the health check. The health check remains permanently 'Unknown'.

It can be resolved manually with these steps:

  1. Open the Pangolin UI portal.
  2. Go to Public Resources and press Edit on the resource.
  3. Click the 'HTTP Settings' tab.
  4. Click the 'Unknown' button under the 'Health Check' label.
  5. Toggle 'Enable Health Checks' off, and then on again. Press Done.
  6. Press Save Settings.

The health check will now show 'Healthy' and use the settings it got from the Docker labels.

While it's nice that the health check can be manually fixed like this, it means I still need to do manual updates any time I create a new public resource.

    labels:
      - "pangolin.public-resources.immich.name=Immich"
      - "pangolin.public-resources.immich.protocol=http"
      - "pangolin.public-resources.immich.full-domain=immich.mydomain.com"
      - "pangolin.public-resources.immich.targets[0].method=http"
      - "pangolin.public-resources.immich.targets[0].hostname=immich"
      - "pangolin.public-resources.immich.targets[0].port=2283"
      - "pangolin.public-resources.immich.targets[0].healthcheck.hostname=immich"
      - "pangolin.public-resources.immich.targets[0].healthcheck.port=2283"
      - "pangolin.public-resources.immich.targets[0].healthcheck.scheme=http"
      - "pangolin.public-resources.immich.targets[0].healthcheck.method=GET"
      - "pangolin.public-resources.immich.targets[0].healthcheck.path=/"

Expected Behavior

I would expect that after the blueprint is applied, the health check is created and starts checking the health of the service, without me having to do make any changes in the UI.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions