Commit Graph
84 Commits
Author SHA1 Message Date
jarek dab6797847 dashboard pending-update count now matches the containers list 2026-08-09 10:31:28 +02:00
jarek 3859888da6 deleting a stack shows which folders will be removed, with a choice to keep/delete folders 2026-08-09 10:31:28 +02:00
jarek 045adf0cf3 fixed an LDAP filter parsing issue that could break group-based role assignment with some AD DNs 2026-08-09 10:31:28 +02:00
jarek 4e15c2677c dedupe duplicate mount points when recreating a container 2026-08-09 10:31:28 +02:00
jarek d33185d1fa container updates respect the new image's command/entrypoint 2026-08-09 10:31:28 +02:00
jarek 8f47eef1b7 GitLab and Harbor registries no longer report a misleading auth error when browsing 2026-08-09 10:31:27 +02:00
jarek 7bb688197a Google Cloud backup destinations now use a service-account JSON key 2026-08-09 10:31:27 +02:00
jarek 3d1b383ad7 snapshots from another Dockhand instance sharing the repo now appear as restorable orphans 2026-08-09 10:31:27 +02:00
jarek 5adac5e19e a stack restored to new locations always keeps its compose file and stays internal 2026-08-09 10:31:27 +02:00
jarek bd06b340c5 direct remote environments - remote stacks dir configurable, for putting the whole stack onto the remote 2026-08-09 10:31:27 +02:00
jarek 86ef3f743b configurable default homepage 2026-08-09 10:31:27 +02:00
jarek 6a6e82a481 reach own docker daemon over tcp on socket-proxy setups; re-run host detection when an environment is added or edited; keep scanner on the host socket 2026-07-31 10:10:56 +02:00
jarek 0a9d4ad10f validate git repo urls and refs, require a secret for webhook triggers, tidy internal endpoint comments 2026-07-31 10:10:56 +02:00
jarek e3c07f32da backup engine fixes: shared-repo unlock, non-root uid reads, lock release, local-path repo, backblaze key id 2026-07-31 10:10:55 +02:00
jarek e700b5b6aa restore reproduces the stack as an internal stack with its secrets 2026-07-31 10:10:55 +02:00
jarek 25f10616a5 exclude docker sockets and host system paths from volume backups 2026-07-31 10:10:55 +02:00
Björn Strausmann 36dac8b030 refactor(stacks): plumb sourceType through requireComposeFile to avoid redundant lookup
startStack, restartStack, stopStack, and downStack each ran a separate
getStackSource query just to determine isGitStack for useOverrideFile,
even though requireComposeFile -> getStackComposeFile already looks up
the same stack_sources record.

Return sourceType from getStackComposeFile (GetComposeFileResult) and
requireComposeFile (RequireComposeResult), and have all four callers
read result.sourceType instead of querying the database again. No
behavior change: useOverrideFile is still set to true exactly when the
stack's source type is 'git'.
2026-07-31 04:58:47 +02:00
Björn Strausmann 144a73a10a fix(stacks): apply env override file on stop/down for git stacks (#1313)
startStack and restartStack compute isGitStack and pass useOverrideFile
accordingly, so executeLocalCompose writes .env.dockhand with the DB
non-secret overrides before invoking docker compose. stopStack and
downStack never set this option, so whenever a .env file exists in the
stack's working directory (e.g. committed alongside compose.yaml in a
git stack), the legacy shell-env fallback in executeLocalCompose is
suppressed and .env.dockhand is never written or attached via
--env-file. Any required variable that only exists as a Dockhand panel
override then fails interpolation on stop/down, even though the same
stack deploys and starts successfully.

Mirror startStack/restartStack: compute isGitStack from the stack
source and pass useOverrideFile through in both operations.
2026-07-31 04:58:47 +02:00
jarek 49809865dc 1.0.39 2026-07-26 10:27:12 +02:00
jarek 64b6dcd744 1.0.38 2026-07-25 08:41:01 +02:00
jarek c718ac9a84 1.0.37 2026-07-11 15:31:52 +02:00
jarek 685132ff89 1.0.36 2026-06-27 15:15:54 +02:00
jarek ce12d7ae9f 1.0.35 2026-06-19 08:21:22 +02:00
jarek efb634701c 1.0.34 2026-06-17 08:21:38 +02:00
Pascal GUINETandClaude Opus 4.8 aa45be6844 SYS-11240 Address review feedback on Harbor catalog/search fallback
- isHarborRegistry: derive scheme and port from the registry URL via
  parseRegistryUrl instead of hardcoding https:// so HTTP-only mirrors and
  non-443 ports are detected (same scheme handling as getRegistryAuthHeader).
- isHarborRegistry: only cache the detection result when a definitive answer
  was obtained; a transient network error no longer pins "not Harbor" for the
  whole TTL and keeps returning _catalog 403s after Harbor recovers.
- getHarborBasicAuth: trim username/password (pasted credentials with trailing
  whitespace silently broke Basic auth).
- harborListRepositories: implement real cross-project pagination for the
  no-orgPath case (enumerate every project and all repos, paginate the
  flattened list) so >100 projects / >100 repos no longer truncate silently
  with a hardcoded hasMore=false.
- harborSearchRepositories: sanitize the search term against Harbor's query
  grammar (, = ~ ( )) so special characters can't break or alter the q filter;
  paginate the project list as well.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-16 09:08:46 +02:00
Pascal GUINETandClaude Opus 4.6 0eaf52fa66 SYS-11240 Translate all code comments from French to English
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-06-16 09:08:46 +02:00
Pascal GUINETandClaude Opus 4.6 eb5cf32d68 Add Harbor fallback for catalog and search endpoints
Harbor denies access to the V2 _catalog endpoint for robot accounts
(scope registry:catalog:* returns an empty JWT). This adds automatic
Harbor detection and falls back to the native Harbor project API
(/api/v2.0/projects/{name}/repositories) for both catalog listing
and image search.

- Detect Harbor via WWW-Authenticate header + /api/v2.0/ping (cached 5min)
- List repositories through Harbor project API with pagination
- Search repositories using Harbor's q=name=~ filter
- Transparent fallback: no configuration change required

Fixes #360

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-06-16 09:08:46 +02:00
jarek 83c3a5ea09 1.0.33 2026-06-15 14:56:51 +02:00
David Weston fd9b18ea31 Explain choice of default value 2026-06-07 20:03:34 +02:00
David Weston 085f03c178 Revert default value 2026-06-07 20:03:34 +02:00
undirectlookable b7a8cca387 feat(notifications): add Bark push support
Add Bark as a supported Apprise notification protocol.

Supported URL formats:
- bark://bark_key uses the official Bark server at https://api.day.app/
- bark://host/bark_key uses a custom Bark server over HTTP
- barks://host/bark_key uses a custom Bark server over HTTPS

Bark notifications are sent with POST JSON payloads containing the device key, title, and body. The notification settings modal now
lists Bark examples in the Apprise URL placeholder and support text.
2026-06-06 17:04:59 +02:00
jarek 3cbcfa3cdb 1.0.32 2026-06-06 16:18:05 +02:00
jarek c8b3acc07e 1.0.30 2026-05-30 08:42:21 +02:00
jarek e7100f8926 1.0.29 2026-05-17 08:02:31 +02:00
jarek 002d969a5d 1.0.28 2026-05-09 09:55:18 +02:00
jarek 7e3797cbfe 1.0.27 2026-04-26 08:01:32 +02:00
Ivan Kara ccfda4c054 Adjust uploaded files permission 2026-04-19 18:56:01 +02:00
Sebastiaan Lokhorst 28a6211457 Add Apprise workflows:// notification format
For sending messages to e.g. Microsoft Teams
2026-04-19 16:44:41 +02:00
Dennis Braun 7c123833b5 fix: avoid duplicate volume binds during recreate 2026-04-19 16:26:56 +02:00
YewFence a1def17750 chore: delete the unnecessary functions called 2026-04-19 16:22:01 +02:00
YewFence 94657735fb feat: mirror Dockhand's ExtraHosts into scanner and self-update sidecar containers
Add `extraHosts` option to `runContainer` and `runContainerWithStreaming` so arbitrary `HostConfig.ExtraHosts` entries can be passed when spawning containers.

Expose `getOwnExtraHosts()` from `host-path.ts` and forward the cached entries into scanner and self-updater containers, ensuring custom host aliases (e.g. internal registry hostnames) are available inside those sidecars without additional user configuration.
2026-04-19 16:22:01 +02:00
Tim Huge d10f6dfd6d Fix: Remove Telegram link preview 2026-04-19 15:57:52 +02:00
jarek aaaf252d4c Bearer token authentication fails with enterprise license active 2026-04-19 10:12:59 +02:00
jarek b8f06426e3 option to delete associated volumes when removing a stack (#655) 2026-04-19 09:39:42 +02:00
jarek 0af1ee6eb2 Gotify, ntfy, Pushover, and webhook notifications missing environment name (#943) 2026-04-19 09:39:03 +02:00
jarek ac19a67cce Bearer token authentication fails with enterprise license active 2026-04-19 09:35:32 +02:00
jarek 380fcc34ec scheduled image prune notifications missing environment name (#770) 2026-04-19 09:31:38 +02:00
jarek afee09866d v1.0.25 2026-04-18 08:34:20 +02:00
yokkkoso c210ef0a8e feat: support telegram topics in supergroups 2026-04-08 06:12:03 +02:00
jarek 7f26c0a585 v1.0.24 2026-04-03 18:32:46 +02:00