Repository navigation
Feature: import apps from Docker labels - #556
Merged
Merged
Conversation
5 tasks done
Read homepage.* labels from every container through the socket proxy and add them as apps and folders, with the same preview as the YAML import. Only name, group, link, icon, description, site monitor, ping and weight leave the server; widget keys never do. Docker API calls retry with the engine's version prefix when a proxy refuses unversioned paths. Health pings refuse link-local addresses. App, folder and widget names are capped at 64 characters, item ids at 32. Imports remove a username and password from addresses, and the app form warns when a link holds one.
…rom all import text - Resolve a ping name once, refuse it when any address is link-local, and connect only to the checked addresses, trying each in turn. A failed lookup is reported, never retried unchecked. - Remove usernames and passwords from protocol-relative links and from every import preview line, stopping at a backslash. - Keep the Docker label import button enabled while busy so a closing dialog returns focus to it. - Cut app, folder and widget names to 64 grapheme clusters on save instead of limiting input by UTF-16 code units.
SandObserver
force-pushed
the
feat/docker-label-import
branch
from
October 25, 2026 19:25
6f36125 to
7790b30
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
GET /api/docker/labels: reads/containers/json?all=truethrough the configured socket proxy (16 MB cap, rate limited) and returns only thehomepage.name, group, href, icon, description, siteMonitor, ping and weight per container, plus a widget flag. Widget keys never leave the server.convertDockerLabelsto the foreign importer: builds the gethomepage services shape (folders by name, apps by weight then name, container health check per app) and reuses the YAML import's conversion and preview. Containers without both name and group are listed as not imported.dockerGet: on a 401 or 403 for an unversioned path, read the engine version fromApi-Versionon/v1.24/versionand retry with that prefix; cached per socket proxy address. Health checks, the socket proxy test and the label import use it.169.254.0.0/16,fe80::/10), by literal or when any resolved address is link-local. Resolve once and connect only to the checked addresses, trying each in turn; a failed lookup is reported, never retried unchecked.Testing
All green, including e2e. Added tests for the label route and reader, the version fallback, link-local pings and lookup failures, multi-address pings, the name cap, login stripping, focus after the import, and the new error codes.
Changelog
Added
Changed
Fixed
Security
Checklist