appears to have a bug in how it spawns docker processes from within the Node.js application, even though the CLI itself is available and functional.
dockge | 2025-10-22T20:53:14Z [SERVER] INFO: Welcome to dockge!
dockge | 2025-10-22T20:53:14Z [SERVER] INFO: NODE_ENV: production
dockge | 2025-10-22T20:53:14Z [SERVER] INFO: Server Type: HTTP
dockge | 2025-10-22T20:53:14Z [SERVER] INFO: Data Dir: ./data/
dockge | 2025-10-22T20:53:14Z [DB] INFO: Database Type: sqlite
dockge | 2025-10-22T20:53:14Z [SERVER] INFO: Connected to the database
dockge | 2025-10-22T20:53:14Z [SERVER] INFO: Listening on 5001
dockge | 2025-10-22T20:53:15Z [AUTH] INFO: Origin is not set, IP: ::ffff:192.168.1.75
dockge | 2025-10-22T20:53:15Z [SERVER] INFO: Socket connected (agent), as endpoint 192.168.1.85:5555
dockge | 2025-10-22T20:53:15Z [AUTH] INFO: Login by username + password. IP=192.168.1.75
dockge | 2025-10-22T20:53:15Z [RATE-LIMIT] INFO: remaining requests: 19
dockge | 2025-10-22T20:53:15Z [AGENT-MANAGER] INFO: This connection is connected as an agent, skip connectAll()
dockge | 2025-10-22T20:53:15Z [AUTH] INFO: Successfully logged in user USERNAME. IP=192.168.1.75
dockge | 2025-10-22T20:53:16Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:53:18Z [AUTH] INFO: Origin is not set, IP: ::ffff:192.168.1.75
dockge | 2025-10-22T20:53:18Z [SERVER] INFO: Socket connected (agent), as endpoint 192.168.1.85:5555
dockge | 2025-10-22T20:53:18Z [AUTH] INFO: Login by username + password. IP=192.168.1.75
dockge | 2025-10-22T20:53:18Z [RATE-LIMIT] INFO: remaining requests: 19
dockge | 2025-10-22T20:53:18Z [AGENT-MANAGER] INFO: This connection is connected as an agent, skip connectAll()
dockge | 2025-10-22T20:53:18Z [AUTH] INFO: Successfully logged in user USERNAME. IP=192.168.1.75
dockge | 2025-10-22T20:53:19Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:53:20Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:53:21Z [SERVER] INFO: Socket disconnected!
dockge | 2025-10-22T20:53:21Z [AUTH] INFO: Origin is not set, IP: ::ffff:192.168.1.75
dockge | 2025-10-22T20:53:21Z [SERVER] INFO: Socket connected (agent), as endpoint 192.168.1.85:5555
dockge | 2025-10-22T20:53:21Z [AUTH] INFO: Login by username + password. IP=192.168.1.75
dockge | 2025-10-22T20:53:21Z [RATE-LIMIT] INFO: remaining requests: 18.983333333333334
dockge | 2025-10-22T20:53:21Z [AGENT-MANAGER] INFO: This connection is connected as an agent, skip connectAll()
dockge | 2025-10-22T20:53:21Z [AUTH] INFO: Successfully logged in user USERNAME. IP=192.168.1.75
dockge | 2025-10-22T20:53:22Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:53:30Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:53:40Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:53:50Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:54:00Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:54:10Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:54:14Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:54:18Z [UPDATEIMAGEINFOS] ERROR: Stack 'immich' - Image 'ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a': Error: Process exited with code 1
dockge | 2025-10-22T20:54:19Z [UPDATEIMAGEINFOS] ERROR: Stack 'immich' - Image 'docker.io/valkey/valkey:8-bookworm@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11': Error: Process exited with code 1
dockge | 2025-10-22T20:54:20Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:54:22Z [CHECKIMAGEUPDATES] INFO: Check for image updates finished.
dockge | 2025-10-22T20:54:30Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:54:40Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:54:50Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:55:00Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:55:10Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:55:20Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:55:30Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:55:40Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:55:50Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:56:00Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:56:10Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:56:20Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:56:30Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:56:40Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:56:50Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:57:00Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:57:10Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:57:20Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
dockge | 2025-10-22T20:57:30Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge | at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge | at onErrorNT (node:internal/child_process:483:16)
dockge | at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge | errno: -2,
dockge | code: 'ENOENT',
dockge | syscall: 'spawn docker',
dockge | path: 'docker',
dockge | spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge | }
🛡️ Security Policy
Description
appears to have a bug in how it spawns docker processes from within the Node.js application, even though the CLI itself is available and functional.
👟 Reproduction steps
installed as recommended
👀 Expected behavior
to check for updates
😓 Actual Behavior
error logs filled with above
Dockge Version
current/latest
💻 Operating System and Arch
Debian Trixie
🌐 Browser
Brave
🐋 Docker Version
No response
🟩 NodeJS Version
No response
📝 Relevant log output