louislam/uptime-kuma-wiki
View on GitHubHow to write a compose.yaml for rootless setup?
Open
#134 opened on Nov 1, 2025
feature-requestgood first issuehelp wanted
Repository metrics
- Stars
- (99 stars)
- PR merge metrics
- (PR metrics pending)
Description
⚠️ Please verify that your question has not already been reported
- I have searched the existing issues and found no similar reports.
🛡️ Security Policy
- I have read and agree to Uptime Kuma's Security Policy.
📝 Describe your problem
When running as a docker container with image like 2-rootless, what does the compose.yaml looks like?
I have got the following error message with this compose.yaml:
$ cat compose.yaml
---
# uptime-kuma/compose.yaml
services:
uptime-kuma:
image: louislam/uptime-kuma:2-rootless
container_name: uptime-kuma
hostname: rocker-uptime-kuma
environment:
- PUID=3021
- PGID=3021
restart: unless-stopped
volumes:
- ./data:/app/data
ports:
- "3001:3001"
📝 Error Message(s) or Log
Welcome to Uptime Kuma
Your Node.js version: 20.19.5
2025-11-01T23:18:30Z [SERVER] INFO: Env: production
2025-11-01T23:18:31Z [SERVER] INFO: Uptime Kuma Version: 2.0.2
2025-11-01T23:18:31Z [SERVER] INFO: Loading modules
2025-11-01T23:18:31Z [SERVER] INFO: Creating express and socket.io instance
2025-11-01T23:18:31Z [SERVER] INFO: Server Type: HTTP
Trace: Error: EACCES: permission denied, mkdir 'data/upload/'
at Object.mkdirSync (node:fs:1372:26)
at Database.initDataDir (/app/server/database.js:148:16)
at /app/server/server.js:173:14
at Object.<anonymous> (/app/server/server.js:1645:3)
at Module._compile (node:internal/modules/cjs/loader:1521:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1623:10)
at Module.load (node:internal/modules/cjs/loader:1266:32)
at Module._load (node:internal/modules/cjs/loader:1091:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:164:12)
at node:internal/main/run_main_module:28:49 {
errno: -13,
code: 'EACCES',
syscall: 'mkdir',
path: 'data/upload/'
}
at process.unexpectedErrorHandler (/app/server/server.js:1893:13)
at process.emit (node:events:524:28)
at emitUnhandledRejection (node:internal/process/promises:250:13)
at throwUnhandledRejectionsMode (node:internal/process/promises:385:19)
at processPromiseRejections (node:internal/process/promises:470:17)
at process.processTicksAndRejections (node:internal/process/task_queues:96:32)
If you keep encountering errors, please report to https://github.com/louislam/uptime-kuma/issues
2025-11-01T23:18:31Z [] INFO: Cannot write to error.log
Welcome to Uptime Kuma
Your Node.js version: 20.19.5
2025-11-01T23:18:38Z [SERVER] INFO: Env: production
2025-11-01T23:18:39Z [SERVER] INFO: Uptime Kuma Version: 2.0.2
2025-11-01T23:18:39Z [SERVER] INFO: Loading modules
2025-11-01T23:18:40Z [SERVER] INFO: Creating express and socket.io instance
2025-11-01T23:18:40Z [SERVER] INFO: Server Type: HTTP
Trace: Error: EACCES: permission denied, mkdir 'data/upload/'
at Object.mkdirSync (node:fs:1372:26)
at Database.initDataDir (/app/server/database.js:148:16)
at /app/server/server.js:173:14
at Object.<anonymous> (/app/server/server.js:1645:3)
at Module._compile (node:internal/modules/cjs/loader:1521:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1623:10)
at Module.load (node:internal/modules/cjs/loader:1266:32)
at Module._load (node:internal/modules/cjs/loader:1091:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:164:12)
at node:internal/main/run_main_module:28:49 {
errno: -13,
code: 'EACCES',
syscall: 'mkdir',
path: 'data/upload/'
}
at process.unexpectedErrorHandler (/app/server/server.js:1893:13)
at process.emit (node:events:524:28)
at emitUnhandledRejection (node:internal/process/promises:250:13)
at throwUnhandledRejectionsMode (node:internal/process/promises:385:19)
at processPromiseRejections (node:internal/process/promises:470:17)
at process.processTicksAndRejections (node:internal/process/task_queues:96:32)
If you keep encountering errors, please report to https://github.com/louislam/uptime-kuma/issues
2025-11-01T23:18:40Z [] INFO: Cannot write to error.log
Welcome to Uptime Kuma
Your Node.js version: 20.19.5
2025-11-01T23:18:41Z [SERVER] INFO: Env: production
2025-11-01T23:18:42Z [SERVER] INFO: Uptime Kuma Version: 2.0.2
2025-11-01T23:18:42Z [SERVER] INFO: Loading modules
2025-11-01T23:18:43Z [SERVER] INFO: Creating express and socket.io instance
2025-11-01T23:18:43Z [SERVER] INFO: Server Type: HTTP
Trace: Error: EACCES: permission denied, mkdir 'data/upload/'
at Object.mkdirSync (node:fs:1372:26)
at Database.initDataDir (/app/server/database.js:148:16)
at /app/server/server.js:173:14
at Object.<anonymous> (/app/server/server.js:1645:3)
at Module._compile (node:internal/modules/cjs/loader:1521:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1623:10)
at Module.load (node:internal/modules/cjs/loader:1266:32)
at Module._load (node:internal/modules/cjs/loader:1091:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:164:12)
at node:internal/main/run_main_module:28:49 {
errno: -13,
code: 'EACCES',
syscall: 'mkdir',
path: 'data/upload/'
}
at process.unexpectedErrorHandler (/app/server/server.js:1893:13)
at process.emit (node:events:524:28)
at emitUnhandledRejection (node:internal/process/promises:250:13)
at throwUnhandledRejectionsMode (node:internal/process/promises:385:19)
at processPromiseRejections (node:internal/process/promises:470:17)
at process.processTicksAndRejections (node:internal/process/task_queues:96:32)
If you keep encountering errors, please report to https://github.com/louislam/uptime-kuma/issues
2025-11-01T23:18:43Z [] INFO: Cannot write to error.log
Welcome to Uptime Kuma
Your Node.js version: 20.19.5
2025-11-01T23:18:48Z [SERVER] INFO: Env: production
2025-11-01T23:18:49Z [SERVER] INFO: Uptime Kuma Version: 2.0.2
2025-11-01T23:18:49Z [SERVER] INFO: Loading modules
2025-11-01T23:18:50Z [SERVER] INFO: Creating express and socket.io instance
2025-11-01T23:18:50Z [SERVER] INFO: Server Type: HTTP
Trace: Error: EACCES: permission denied, mkdir 'data/upload/'
at Object.mkdirSync (node:fs:1372:26)
at Database.initDataDir (/app/server/database.js:148:16)
at /app/server/server.js:173:14
at Object.<anonymous> (/app/server/server.js:1645:3)
at Module._compile (node:internal/modules/cjs/loader:1521:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1623:10)
at Module.load (node:internal/modules/cjs/loader:1266:32)
at Module._load (node:internal/modules/cjs/loader:1091:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:164:12)
at node:internal/main/run_main_module:28:49 {
errno: -13,
code: 'EACCES',
syscall: 'mkdir',
path: 'data/upload/'
}
at process.unexpectedErrorHandler (/app/server/server.js:1893:13)
at process.emit (node:events:524:28)
at emitUnhandledRejection (node:internal/process/promises:250:13)
at throwUnhandledRejectionsMode (node:internal/process/promises:385:19)
at processPromiseRejections (node:internal/process/promises:470:17)
at process.processTicksAndRejections (node:internal/process/task_queues:96:32)
If you keep encountering errors, please report to https://github.com/louislam/uptime-kuma/issues
2025-11-01T23:18:50Z [] INFO: Cannot write to error.log
Welcome to Uptime Kuma
Your Node.js version: 20.19.5
2025-11-01T23:18:51Z [SERVER] INFO: Env: production
2025-11-01T23:18:52Z [SERVER] INFO: Uptime Kuma Version: 2.0.2
2025-11-01T23:18:52Z [SERVER] INFO: Loading modules
2025-11-01T23:18:53Z [SERVER] INFO: Creating express and socket.io instance
2025-11-01T23:18:53Z [SERVER] INFO: Server Type: HTTP
Trace: Error: EACCES: permission denied, mkdir 'data/upload/'
at Object.mkdirSync (node:fs:1372:26)
at Database.initDataDir (/app/server/database.js:148:16)
at /app/server/server.js:173:14
at Object.<anonymous> (/app/server/server.js:1645:3)
at Module._compile (node:internal/modules/cjs/loader:1521:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1623:10)
at Module.load (node:internal/modules/cjs/loader:1266:32)
at Module._load (node:internal/modules/cjs/loader:1091:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:164:12)
at node:internal/main/run_main_module:28:49 {
errno: -13,
code: 'EACCES',
syscall: 'mkdir',
path: 'data/upload/'
}
at process.unexpectedErrorHandler (/app/server/server.js:1893:13)
at process.emit (node:events:524:28)
at emitUnhandledRejection (node:internal/process/promises:250:13)
at throwUnhandledRejectionsMode (node:internal/process/promises:385:19)
at processPromiseRejections (node:internal/process/promises:470:17)
at process.processTicksAndRejections (node:internal/process/task_queues:96:32)
If you keep encountering errors, please report to https://github.com/louislam/uptime-kuma/issues
2025-11-01T23:18:53Z [] INFO: Cannot write to error.log
🐻 Uptime-Kuma Version
2
💻 Operating System and Arch
Debian GNU/Linux 12 (bookworm)
🌐 Browser
Google Chrome Version 142.0.7444.60 (Official Build) (arm64)
🖥️ Deployment Environment
- Runtime Environment:
- Docker: Version
28.5.1, builde180ab8 - Docker Compose: Version
2.40.3
- Docker: Version
- Uptime Kuma Setup: docker image
louislam/uptime-kuma:2