signalk-container 1.11.1 → 1.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.coderabbit.yaml CHANGED
@@ -2,160 +2,279 @@ language: en-US
2
2
 
3
3
  reviews:
4
4
  profile: assertive
5
- # dist/ is the TS+webpack build output; checked in for the App Store
6
- # install path, but never authored. Exclude here so the review engine
7
- # never opens it.
8
- path_filters:
9
- - "!dist/**"
10
5
  auto_review:
11
6
  enabled: true
7
+ auto_incremental_review: true
12
8
  drafts: false
9
+ # Skip mechanical PRs that don't benefit from review.
10
+ # `chore(release):` PRs are version-bump-only; the substantive
11
+ # change was already reviewed on its own PR. Dep-bump PRs come from
12
+ # automation that has its own contract with the registry. WIP and
13
+ # explicit skip markers are author opt-outs.
14
+ ignore_title_keywords:
15
+ - "chore(release):"
16
+ - "chore(deps):"
17
+ - "chore(deps-dev):"
18
+ - "[skip review]"
19
+ - "WIP"
20
+ ignore_usernames:
21
+ - "release-please[bot]"
22
+ - "renovate[bot]"
23
+ - "dependabot[bot]"
24
+ - "github-actions[bot]"
25
+
26
+ # dist/ is the TS + Vite build output; checked in for the App Store
27
+ # install path, but never authored. Everything under node_modules and
28
+ # generated lockfiles are also off-limits to review.
29
+ path_filters:
30
+ - "!dist/**"
31
+ - "!**/node_modules/**"
32
+ - "!**/package-lock.json"
33
+ - "!**/yarn.lock"
34
+ - "!**/pnpm-lock.yaml"
35
+ - "!**/*.min.js"
36
+ - "!**/*.min.css"
37
+
13
38
  high_level_summary_instructions: |
14
- Write all summaries in present tense.
15
- Describe what the code does, not what it did.
16
- Example: "This PR adds feature X" instead of "This PR added feature X"
39
+ Write summaries in present tense. Describe what the code does, not
40
+ what it did. Skip filler like "This PR" — go straight to the change.
17
41
 
18
42
  path_instructions:
19
43
  - path: "**/*"
20
44
  instructions: |
21
- ## Repository workflow
22
-
23
- signalk-container ships as an npm package consumed by Signal K
24
- plugins. The maintainer owns the release process — version bumps
25
- happen in their own `chore(release): X.Y.Z` PR, separate from
26
- feature/fix work. **Do not include `package.json` version changes
27
- in feature or fix PRs.** Flag any PR that mixes a `"version"` bump
28
- with non-release changes.
29
-
30
- Other workflow rules to enforce:
31
- - Branch names use hyphens, not slashes (`fix-something`, not
32
- `fix/something`). The Signal K server convention applies here.
33
- - Angular conventional commits: `<type>(<scope>): <subject>`.
34
- Subject ≤ 50 chars, imperative mood, no period.
35
- - No `Co-Authored-By` lines and no "Generated with Claude Code"
36
- attribution in commit messages or PR bodies.
45
+ ## Scope
37
46
 
38
- ## Echo comments
47
+ Focus on files changed since `master`. Think carefully about how
48
+ changes interact with existing code, tests, and documentation —
49
+ not just the diff in isolation.
39
50
 
40
- Flag any comment that merely restates what the code already says.
41
- Examples to flag:
42
- - `// Sets the age` above a function named `setAge()`
43
- - `// Loop through items` above a `for` loop
44
- - `// returns null on failure` next to `return null` in an error
45
- branch
46
- These add noise without adding meaning. Request removal or
47
- replacement with a comment explaining *why*, not *what*.
51
+ signalk-container is a **Signal K server plugin** that runs
52
+ _inside_ signalk-server's process and exposes a cross-plugin API
53
+ on `globalThis.__signalk_containerManager`. Other plugins
54
+ (signalk-questdb, signalk-grafana, signalk-backup, mayara, …)
55
+ call it to spin up and lifecycle-manage their own containers
56
+ without each implementing their own dockerode integration. The
57
+ plugin also ships a React config panel via Module Federation.
48
58
 
49
- ## Leftover crumbs from intermediate commits
59
+ Reviews must respect that this is **public infrastructure** for
60
+ a plugin ecosystem — every change to `ContainerManagerApi` in
61
+ `src/types.ts` is a semver-significant contract change and must
62
+ carry JSDoc that consumer plugins can see via TypeScript
63
+ intellisense (the consumer side accesses the API through
64
+ `(globalThis as any).__signalk_containerManager` so JSDoc is
65
+ the only documentation surface they get).
50
66
 
51
- Check for references to things that existed in earlier commits of
52
- this PR but are no longer present — removed variables, old function
53
- names, deleted files, superseded approaches. These are confusing
54
- to future readers. Flag any comments, docs, or code that refer to
55
- something not present in the current state of the branch.
67
+ ## ESM / TypeScript strict / Node 22+
56
68
 
57
- ## Documentation drift risk
69
+ - All new code in TypeScript. No new `.js` source files.
70
+ - tsconfig is strict. Avoid `any`. The one allowed `any` is
71
+ `(globalThis as any).__signalk_containerManager` on the
72
+ consumer side — see above.
73
+ - Reuse types from `src/types.ts` rather than redefining.
74
+ `ContainerConfig`, `ContainerRuntimeInfo`,
75
+ `ContainerResourceLimits`, `LiveContainerConfig`,
76
+ `PortBinding`, etc. are the public vocabulary.
58
77
 
59
- Flag any `.md` file that contains detailed implementation steps,
60
- specific API call sequences, code snippets, or configuration
61
- values that are likely to fall out of sync as the code evolves.
62
- Documentation should describe architecture and how things work
63
- conceptually — not step-by-step instructions that duplicate or
64
- shadow the code itself.
78
+ ## Runtime invariants (read these before suggesting changes to
79
+ ## src/runtime.ts or src/containers.ts)
65
80
 
66
- Specifically for this repo: the API reference in
67
- `doc/plugin-developer-guide.md` and `README.md`'s API table must
68
- stay aligned with `ContainerManagerApi` in `src/types.ts`. Flag
69
- any new method on the type that is missing from either doc, or
70
- any doc method whose JSDoc-style signature has drifted from the
71
- type.
81
+ signalk-container shells out to `podman`/`docker` via
82
+ `execRuntime` (`src/runtime.ts`). When reviewing changes there
83
+ or in `src/containers.ts`, `src/jobs.ts`, `src/resources.ts`,
84
+ or `src/updates/`:
72
85
 
73
- ## Implementation status in documentation
86
+ - Every new external command should accept an injectable `exec`
87
+ parameter so tests can stub it (see the existing
88
+ `ExecFn = execRuntime` pattern). Flag new direct
89
+ `execRuntime` calls in exported helpers.
90
+ - Prefer Go-template format strings
91
+ (`inspect --format '{{...}}'`) for diff/state probes over
92
+ JSON parsing of full inspect output — they work uniformly
93
+ across podman and docker. See `getLiveResources` and
94
+ `getLiveContainerConfig` for the canonical pattern.
95
+ - Podman bind mounts get a `:Z` suffix for SELinux relabel.
96
+ Named volumes (sources without leading `/`) MUST NOT receive
97
+ `:Z` — podman rejects them. Use `volumeArg` in
98
+ `src/containers.ts`, never build `-v` strings inline.
99
+ - Docker reports `HostConfig.NetworkMode` as `"default"` or
100
+ `"bridge"`; podman rootless reports `"slirp4netns"` or
101
+ `"pasta"`. The diff path canonicalizes these. Do not
102
+ introduce new networkMode comparisons that don't go through
103
+ `canonicalNetworkMode`.
74
104
 
75
- Flag any `.md` file that describes implementation progress,
76
- status, or build steps (e.g. "Step 3: implement X", "TODO: add Y",
77
- "currently implemented as Z"). This belongs in PR descriptions or
78
- commit messages, not in documentation. Documentation should
79
- describe how things work, not how they were built or what stage
80
- they are in.
105
+ ## In-container signalk-server + host-side rootless Podman
81
106
 
82
- Architecture decisions and design rationale are fine. Build
83
- narratives are not.
107
+ signalk-server can be deployed _as a container itself_ (this is
108
+ the signalk-universal-installer's default), with the host's
109
+ rootless podman socket bind-mounted to `/var/run/docker.sock`
110
+ inside. In that topology the in-container `podman` binary
111
+ cannot reach a daemon at its own default socket path, so every
112
+ detection that worked on bare-metal had to be re-derived from
113
+ artefacts that survive the bind-mount-only shape — env vars
114
+ backfilled in `cleanEnv()`, mountinfo path parsing in
115
+ `parseSelfContainerIdsFromMountinfo()`, the `docker info`
116
+ compat-API probes in `tryRuntime()` and `probeRootless()`.
84
117
 
85
- ## Unchecked items in test plans
118
+ When reviewing changes in `runtime.ts` or `containers.ts`:
119
+ - The cascade in `findSelfContainerId` (env override → HOSTNAME
120
+ → cgroup → mountinfo) exists because each previous step has
121
+ known failure modes in this deployment. Do not suggest
122
+ simplifying by removing fallback steps.
123
+ - `probeRootless` calls `podman info` first, then falls back
124
+ to `docker info --format {{.SecurityOptions}}` looking for
125
+ `name=rootless`. The fallback is gated on the binary name
126
+ (only fires when invoked as `docker`, not `podman`).
127
+ - `tryRuntime` reclassifies docker→podman when
128
+ `docker info --format {{.DefaultRuntime}}` returns `crun`.
129
+ This is the gate that flips the config panel from "D Docker"
130
+ to "P Podman (via docker shim)".
86
131
 
87
- If a PR description or any `.md` file contains a checklist with
88
- unchecked items, flag it. Either the work is incomplete, or the
89
- checklist should be removed before merge.
132
+ Each of these is load-bearing for the universal-installer
133
+ topology. The full story is in `AGENTS.md` under
134
+ "In-container signalk-server + host-side rootless Podman".
90
135
 
91
- ## Runtime concerns
136
+ ## Auto-recreate on config drift
92
137
 
93
- signalk-container shells out to `podman`/`docker` via
94
- `execRuntime` (`src/runtime.ts`). When reviewing changes to
95
- `src/containers.ts`, `src/jobs.ts`, `src/resources.ts`, or
96
- `src/updates/`:
97
- - Every new external command should accept an injectable `exec`
98
- parameter so tests can stub it (see existing
99
- `ExecFn = execRuntime` pattern). Flag new direct `execRuntime`
100
- calls in exported helpers.
101
- - Prefer Go-template format strings (`inspect --format '{{...}}'`)
102
- for diff/state probes over JSON parsing of full inspect output —
103
- they work uniformly across podman and docker. See
104
- `getLiveResources` / `getLiveContainerConfig` for the canonical
105
- pattern.
106
- - Podman bind mounts get a `:Z` suffix for SELinux relabel;
107
- named volumes (no leading `/`) must NOT receive `:Z` — podman
108
- rejects it. Use `volumeArg` in `src/containers.ts` rather than
109
- building bind strings inline.
110
- - Docker reports `HostConfig.NetworkMode` as `"default"` or
111
- `"bridge"`; podman rootless reports `"slirp4netns"` or
112
- `"pasta"`. The diff path canonicalizes these. Do not introduce
113
- new networkMode comparisons without going through
114
- `canonicalNetworkMode`.
138
+ `ensureRunning` compares the requested `ContainerConfig`
139
+ against the live container's effective config on every call
140
+ and removes-and-recreates on drift across `image+tag`,
141
+ `command`, `networkMode`, `env`, `volumes`, or `ports`. The
142
+ list is in `diffContainerConfig`. `resources` follows the
143
+ existing live-update path (`podman/docker update`). Consumer
144
+ plugins must not maintain their own `${dataDir}.container-hash`
145
+ files that's centralized here. Flag any consumer-side hash
146
+ cache code that creeps back in.
147
+
148
+ Note: `restart` is intentionally _not_ in `diffContainerConfig`.
149
+ Flipping a restart policy doesn't justify the downtime of
150
+ recreate. New consumers get the `unless-stopped` default;
151
+ existing containers keep their old policy until a separate
152
+ drift reason forces recreate.
153
+
154
+ ## Default restart policy
155
+
156
+ `ContainerConfig.restart` defaults to `"unless-stopped"` when
157
+ omitted. Consumer plugins should leave it unset for the
158
+ standard case (container survives host reboot). Pass `"no"`
159
+ explicitly only for genuinely one-shot containers.
115
160
 
116
161
  ## Tests
117
162
 
118
163
  - The test runner is `node:test`. Tests live in `src/test/*.ts`,
119
- compile to `dist/test/*.js`, run via `node --test
120
- "dist/test/**/*.test.js"`. The glob must be double-quoted so
121
- Windows actually expands it (single quotes are passed through
122
- literally by cmd).
123
- - Container-integration tests (`runJobCallbacks.test.ts`) gate
124
- on `hasContainerRuntime()` which returns `null` on Windows.
125
- Do not add new integration tests that pull real Linux images
126
- without the same guard.
127
- - Unit-style tests inject `fakeExec` rather than touching the
128
- real runtime. New tests should follow that pattern — see
164
+ compile to `dist/test/*.js`, run via
165
+ `node --test "dist/test/**/*.test.js"`. The glob must be
166
+ double-quoted so Windows cmd actually expands it.
167
+ - Unit tests inject `fakeExec` instead of touching the real
168
+ runtime. New tests should follow that pattern — see
129
169
  `src/test/getLiveResources.test.ts` and
130
170
  `src/test/diffContainerConfig.test.ts` for the canonical
131
171
  shape.
172
+ - Integration tests that pull real Linux images live under
173
+ `src/test/integration/` and gate on `hasContainerRuntime()`
174
+ (returns `null` on Windows). Do not add new tests that pull
175
+ real images without that guard, and do not add new
176
+ integration tests outside `integration/`.
177
+ - All new code requires tests. Test behavior at the function
178
+ boundary, not internal control flow.
132
179
 
133
180
  ## Cross-plugin API surface
134
181
 
135
182
  Consumer plugins access signalk-container via
136
- `(globalThis as any).__signalk_containerManager` and then call
183
+ `(globalThis as any).__signalk_containerManager`, then call
137
184
  `await containers.whenReady()` before any other API call. Any
138
185
  change to `ContainerManagerApi` in `src/types.ts` is a public
139
- contract change flag missing JSDoc on new methods, removed
140
- methods, or signature-breaking changes that are not called out
141
- in the PR description.
186
+ contract change. Flag missing JSDoc on new methods, removed
187
+ methods, or signature-breaking changes not called out in the
188
+ PR description.
189
+
190
+ ## Echo comments
191
+
192
+ Flag any comment that merely restates what the code already
193
+ says. Examples to flag:
194
+ - `// Sets the age` above a function named `setAge()`
195
+ - `// Loop through items` above a `for` loop
196
+ - `// returns null on failure` next to `return null` in an
197
+ error branch
198
+
199
+ Replace with comments explaining _why_, not _what_. Or delete.
200
+
201
+ ## Documentation drift risk
202
+
203
+ Flag any `.md` file that contains detailed implementation
204
+ steps, specific API call sequences, code snippets, or
205
+ configuration values likely to fall out of sync as the code
206
+ evolves. Documentation describes architecture and how things
207
+ work conceptually — not step-by-step instructions that
208
+ duplicate or shadow the code itself.
209
+
210
+ Specifically for this repo: the API reference in
211
+ `doc/plugin-developer-guide.md` and `README.md`'s API table
212
+ must stay aligned with `ContainerManagerApi` in
213
+ `src/types.ts`. Flag new methods on the type that are missing
214
+ from either doc, or doc methods whose JSDoc-style signature
215
+ has drifted from the type.
216
+
217
+ ## Implementation status / development history
218
+
219
+ Flag any `.md` file that describes development history,
220
+ implementation progress, or build narrative (e.g. "Step 3:
221
+ implement X", "TODO: add Y", "previously implemented as Z",
222
+ "added in PR #N"). That belongs in PR descriptions and git
223
+ history, not in repo docs. Documentation should describe
224
+ current state and design rationale — not how the code got to
225
+ where it is.
226
+
227
+ Same rule applies to source comments.
228
+
229
+ ## Leftover crumbs from intermediate commits
230
+
231
+ Flag references in the current diff to symbols, files, or
232
+ approaches that no longer exist on this branch — old function
233
+ names in comments, stale TODOs from a superseded approach,
234
+ renamed variables still mentioned in docs.
235
+
236
+ ## Unchecked items in test plans / checklists
237
+
238
+ If a PR description or any `.md` file contains a checklist
239
+ with unchecked items, flag it. Either the work isn't done, or
240
+ the checklist should be removed before merge.
241
+
242
+ ## Commit / PR conventions
243
+
244
+ - Branch names use **hyphens**, not slashes (`fix-something`,
245
+ not `fix/something`). Signal K maintainer convention.
246
+ - Angular conventional commits:
247
+ `<type>(<scope>): <subject>`. Subject ≤ 50 chars, imperative
248
+ mood, no period.
249
+ - No `Co-Authored-By` lines. No "Generated with Claude Code"
250
+ attribution.
251
+ - **No version bumps in feature/fix PRs.** Versions live in
252
+ their own `chore(release): X.Y.Z` PR. (Title-based skip
253
+ above means we won't review those, but flag a `"version"`
254
+ bump that sneaks into a feat/fix PR.)
255
+ - One logical change per commit, one logical change per PR.
142
256
 
143
257
  ## What NOT to flag
144
258
 
145
- Do not flag the following — they are intentional:
259
+ These are intentional:
260
+
146
261
  - Single-character variable names inside Go-template format
147
- strings (e.g. `{{.Config.Image}}`). These are runtime syntax,
262
+ strings (e.g. `{{.Config.Image}}`). That's runtime syntax,
148
263
  not JS code.
149
264
  - The `_postRecreate` recursion-guard parameter on
150
- `ensureRunning` — the underscore prefix is intentional, marks
151
- it as an internal-use-only param.
152
- - Tests skipping on `process.platform === "win32"` for
153
- integration tests that pull Linux images. The Windows runner
154
- has Docker Desktop in Windows-container mode; there is no
265
+ `ensureRunning` — the underscore prefix marks it as
266
+ internal-use-only and shouldn't be promoted in the API.
267
+ - The dual-cascade in `findSelfContainerId` (4 steps)
268
+ every step exists because the previous one has a known
269
+ failure mode in the in-container deployment topology.
270
+ - The compat-API fallback in `probeRootless` and the docker→
271
+ podman reclassification in `tryRuntime` — they look
272
+ redundant alongside the native podman probes but are the
273
+ only working detection in the in-container topology.
274
+ - Integration tests skipping on `process.platform === "win32"`
275
+ for pulls of Linux images. GitHub's Windows runners only
276
+ have Docker Desktop in Windows-container mode; there's no
155
277
  easy way around it.
156
-
157
- ## Scope
158
-
159
- Focus on files changed since master. Think carefully about how
160
- changes interact with existing code and documentation — not just
161
- the diff in isolation.
278
+ - The `restart` field's absence from `diffContainerConfig` —
279
+ flipping it doesn't justify recreate; consumers get the
280
+ new default on next recreate-for-other-reasons.
package/AGENTS.md CHANGED
@@ -146,6 +146,19 @@ The contract for consumer plugins:
146
146
 
147
147
  When a consumer plugin sets a restart policy explicitly, it overrides the default. Existing containers are not recreated just to flip the policy — drift detection skips `restart` because flipping it doesn't justify the downtime; the new default kicks in on the next image/env/volumes recreate or on a clean install.
148
148
 
149
+ ### In-container signalk-server + host-side rootless Podman
150
+
151
+ The signalk-universal-installer's deployment runs signalk-server itself as a Podman container, with the host's rootless podman socket bind-mounted to `/var/run/docker.sock` inside. The in-container side ships both `podman` and `docker` CLIs (the latter is what consumer plugins effectively reach, since the bind socket is on the docker path). This topology has four sharp edges the runtime detection layer must handle. Future contributors maintaining the runtime layer should know about them as one story:
152
+
153
+ | Concern | Code |
154
+ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
155
+ | Rootless Podman daemon discovery under system-scoped systemd units (no `XDG_RUNTIME_DIR` in the inherited env) | `cleanEnv()` in `runtime.ts` backfills `XDG_RUNTIME_DIR=/run/user/<uid>` |
156
+ | Detecting that the in-container `docker` CLI is actually talking to a host-side podman daemon (default `docker --version` doesn't reveal it) | `tryRuntime()` probes `docker info --format {{.DefaultRuntime}}` — `crun` → reclassify to podman |
157
+ | Finding our own container id when HOSTNAME is empty, cgroup is `0::/`, and `Network=host` makes `/etc/hostname` return the host machine name | `parseSelfContainerIdsFromMountinfo()` matches the 64-hex id the runtime stamps into bindfs source paths (`/etc/hostname`, `/etc/resolv.conf`, `/run/.containerenv`) |
158
+ | Detecting rootless mode when `podman info --format {{.Host.Security.Rootless}}` fails (in-container podman can't reach a daemon at its default socket) | `probeRootless()` falls back to `docker info --format {{.SecurityOptions}}` and looks for the `name=rootless` token |
159
+
160
+ The thread that runs through all four: **the in-container signalk-server has no native podman channel back to the host daemon**. Every detection that worked on bare-metal has to be re-derived from artefacts that survive the bind-mount-only topology — env vars set by the runtime, mountinfo paths, the docker compat API. When debugging future "signalk-container thinks we're not rootless" / "thinks we're not in a container" / "can't find our own id" reports, check whether you're in this deployment shape first.
161
+
149
162
  ## Workflow Conventions
150
163
 
151
164
  This repo is maintained by Dirk Wahrheit. Workflow is deliberate; AI tools should follow it strictly.
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/runtime.js CHANGED
@@ -127,22 +127,55 @@ async function tryRuntime(name, env, exec = defaultExec) {
127
127
  // <socket>` so commands route to the host daemon — the actual
128
128
  // runtime stays podman, the in-container binary just acts as a
129
129
  // client.
130
+ //
131
+ // The docker-shim case (`isPodmanDockerShim === true`) needs the
132
+ // SAME remote-socket switch even though `docker info` succeeded —
133
+ // the docker CLI client-validates podman-specific flags like
134
+ // `--userns=keep-id:uid=X,gid=Y` and rejects them before forwarding
135
+ // to the daemon (`docker: --userns: invalid USER mode`), which
136
+ // breaks every rootless-podman bind-mounted consumer plugin
137
+ // (questdb, grafana, etc.). When the in-container podman binary
138
+ // can reach the same socket via `podman --remote`, use that path
139
+ // so we keep podman flag semantics while still talking to the
140
+ // host daemon.
130
141
  let remoteSocketUrl;
131
142
  if (realRuntime === "podman") {
132
- const directInfo = await exec(name, ["info"], env);
133
- if (directInfo.exitCode !== 0) {
143
+ if (isPodmanDockerShim) {
134
144
  const socket = isContainerized() ? findRemoteSocket() : null;
135
- if (socket === null)
136
- return null;
137
- const remoteInfo = await exec(name, ["--remote", "--url", socket, "info"], env);
138
- if (remoteInfo.exitCode !== 0)
139
- return null;
140
- remoteSocketUrl = socket;
145
+ if (socket !== null) {
146
+ const remoteInfo = await exec("podman", ["--remote", "--url", socket, "info"], env);
147
+ if (remoteInfo.exitCode === 0) {
148
+ remoteSocketUrl = socket;
149
+ }
150
+ }
151
+ // If we couldn't probe podman-remote, stay on the docker
152
+ // binary. The detection result is still useful (the config
153
+ // panel reports `Podman (via docker shim)`), but consumer
154
+ // plugins using podman-specific flags will hit the same
155
+ // CLI-validation error the docker-shim path always had.
156
+ }
157
+ else {
158
+ const directInfo = await exec(name, ["info"], env);
159
+ if (directInfo.exitCode !== 0) {
160
+ const socket = isContainerized() ? findRemoteSocket() : null;
161
+ if (socket === null)
162
+ return null;
163
+ const remoteInfo = await exec(name, ["--remote", "--url", socket, "info"], env);
164
+ if (remoteInfo.exitCode !== 0)
165
+ return null;
166
+ remoteSocketUrl = socket;
167
+ }
141
168
  }
142
169
  }
143
170
  const prefixArgs = remoteArgs(remoteSocketUrl);
144
171
  const cgroupControllers = await probeCgroupControllers(realRuntime, env, prefixArgs, exec);
145
- const isRootless = await probeRootless(realRuntime, env, prefixArgs, exec);
172
+ // probeRootless's compat-API fallback runs against `binaryName`.
173
+ // When we promoted the shim to podman-remote, `binaryName` must
174
+ // also flip to "podman" — otherwise the fallback would call
175
+ // `docker --remote --url <socket> info --format {{.SecurityOptions}}`,
176
+ // and the docker CLI doesn't know `--remote`/`--url`.
177
+ const effectiveBinary = remoteSocketUrl ? "podman" : name;
178
+ const isRootless = await probeRootless(realRuntime, env, prefixArgs, exec, effectiveBinary);
146
179
  const hostUser = probeHostUser();
147
180
  return {
148
181
  runtime: realRuntime,
@@ -300,28 +333,59 @@ function assertNonNegativeInt(field, value) {
300
333
  * accepts the same `--user` flag form as rootful, so the distinction
301
334
  * doesn't change our flag-emission logic.
302
335
  */
303
- async function probeRootless(runtime, env, prefixArgs = [], exec = defaultExec) {
336
+ async function probeRootless(runtime, env, prefixArgs = [], exec = defaultExec, binaryName = runtime) {
304
337
  if (runtime !== "podman") {
305
338
  return false;
306
339
  }
307
- const result = await exec("podman", [...prefixArgs, "info", "--format", "{{.Host.Security.Rootless}}"], env);
308
- if (result.exitCode !== 0) {
309
- return null;
340
+ // Primary path: ask podman directly via its native template.
341
+ // Works for native rootless / rootful podman invocations, and also
342
+ // when the in-container podman binary is talking to the host via
343
+ // --remote --url <socket> (prefixArgs handles that).
344
+ const podmanResult = await exec("podman", [...prefixArgs, "info", "--format", "{{.Host.Security.Rootless}}"], env);
345
+ if (podmanResult.exitCode === 0) {
346
+ // Some podman setups print a warning to stdout above the template
347
+ // value (e.g. `WARN[0000] ...\ntrue`) when rootless state can't be
348
+ // cached. Take the last non-empty line and require it to be exactly
349
+ // `true` or `false`. Anything else (warning-only output, prose
350
+ // ending in the word "true", JSON, older podman that doesn't expose
351
+ // Host.Security.Rootless) falls through to the compat-API fallback.
352
+ const lastLine = podmanResult.stdout
353
+ .trim()
354
+ .split(/\r?\n/)
355
+ .map((line) => line.trim())
356
+ .filter(Boolean)
357
+ .at(-1);
358
+ if (lastLine === "true" || lastLine === "false") {
359
+ return lastLine === "true";
360
+ }
310
361
  }
311
- // Some podman setups print a warning to stdout above the template
312
- // value (e.g. `WARN[0000] ...\ntrue`) when rootless state can't be
313
- // cached. Take the last non-empty line and require it to be exactly
314
- // `true` or `false`. Anything else (warning-only output, prose
315
- // ending in the word "true", JSON, older podman that doesn't expose
316
- // Host.Security.Rootless) falls through to `null`.
317
- const lastLine = result.stdout
318
- .trim()
319
- .split(/\r?\n/)
320
- .map((line) => line.trim())
321
- .filter(Boolean)
322
- .at(-1);
323
- if (lastLine === "true" || lastLine === "false") {
324
- return lastLine === "true";
362
+ // Fallback for podman-docker-shim deployments: the in-container
363
+ // signalk-server has access only to a Docker-compat socket pointed
364
+ // at a rootless podman daemon. Running the podman CLI from inside
365
+ // can't reach that daemon directly (different default socket
366
+ // path), so the primary probe above fails or returns unparseable
367
+ // output. The compat API doesn't expose `Host.Security.Rootless`,
368
+ // but it DOES expose `SecurityOptions` (an array containing
369
+ // `name=rootless` on a rootless backend) — which is enough to
370
+ // decide whether to emit `--userns=keep-id` at container-create
371
+ // time. Without this fallback, isRootless stays null,
372
+ // userMappingFlags falls through to plain `--user 1000:1000`, and
373
+ // bind-mounted consumer-plugin data dirs (e.g. signalk-questdb's
374
+ // /var/lib/questdb) get the wrong ownership in the container's
375
+ // user namespace.
376
+ if (binaryName !== "podman") {
377
+ const compatResult = await exec(binaryName, [...prefixArgs, "info", "--format", "{{.SecurityOptions}}"], env);
378
+ if (compatResult.exitCode === 0) {
379
+ // `docker info --format` returns the SecurityOptions array
380
+ // as a Go-style `[name=apparmor name=seccomp,profile=default
381
+ // name=rootless]` string. We just look for the rootless token.
382
+ if (/\bname=rootless\b/.test(compatResult.stdout)) {
383
+ return true;
384
+ }
385
+ // The probe succeeded and didn't mention rootless — that's a
386
+ // definitive "not rootless," not "unknown."
387
+ return false;
388
+ }
325
389
  }
326
390
  return null;
327
391
  }
@@ -376,6 +440,14 @@ export async function detectRuntime(preference, exec = defaultExec) {
376
440
  return null;
377
441
  }
378
442
  export function runtimeCmd(info) {
443
+ // When we successfully probed `podman --remote --url <socket>`,
444
+ // we're talking the podman binary on this end — even though the
445
+ // CLI surface that originally got detected was `docker`. Using
446
+ // podman here is the only way to make podman-specific flags like
447
+ // `--userns=keep-id` reach the daemon, since the docker CLI
448
+ // rejects them at the client.
449
+ if (info.remoteSocketUrl)
450
+ return "podman";
379
451
  return info.isPodmanDockerShim ? "docker" : info.runtime;
380
452
  }
381
453
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { defineConfig, globalIgnores } from "eslint/config";
2
+ import js from "@eslint/js";
3
+ import tseslint from "typescript-eslint";
4
+ import prettier from "eslint-config-prettier/flat";
5
+ import globals from "globals";
6
+
7
+ // ESLint v9.10+ loads this TS config via the `jiti` peer dep at lint
8
+ // time — there is no separate compile step. We keep the file at the
9
+ // project root (outside `tsconfig.json`'s `include: ["src"]`) so
10
+ // `tsc -p tsconfig.json` doesn't emit it into `dist/`.
11
+
12
+ export default defineConfig([
13
+ globalIgnores(["dist", "public", "node_modules", "src/configpanel"]),
14
+
15
+ {
16
+ files: ["**/*.ts"],
17
+ extends: [js.configs.recommended, tseslint.configs.recommended, prettier],
18
+ languageOptions: {
19
+ parser: tseslint.parser,
20
+ globals: globals.node,
21
+ },
22
+ rules: {
23
+ "@typescript-eslint/no-explicit-any": "off",
24
+ "@typescript-eslint/no-unused-vars": "error",
25
+ },
26
+ },
27
+ ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "signalk-container",
3
- "version": "1.11.1",
3
+ "version": "1.11.3",
4
4
  "description": "Shared container runtime management (Podman/Docker) for Signal K plugins",
5
5
  "keywords": [
6
6
  "signalk-node-server-plugin",
@@ -56,6 +56,7 @@
56
56
  "eslint": "^10.2.0",
57
57
  "eslint-config-prettier": "^10.1.8",
58
58
  "globals": "^17.4.0",
59
+ "jiti": "^2.7.0",
59
60
  "prettier": "^3.8.1",
60
61
  "react": "^19.2.4",
61
62
  "react-dom": "^19.2.4",