OpenMediaVault integration issues

I'm trying to setup the OMV integration for system health monitoring, but I keep getting errors, I have created a user for the integration, I have also tested with the admin user, tried both external and internal urls (I suspect the external url was giving issues due to authelia) and it's still not working, this is the full object that appears in the console when loading: https://privatebin.io/?77d1d4784f79ea2b#25GYjqJEGhMppZKSuLojHjZT9bTdnTF8w3MSrN3pH8rJ I have installed the plugin My full docker compose: https://privatebin.io/?6bbef3ff2ebe26e2#27NvLvLxTZt7NAPTsZQvbo3We85feosBUTjLNzanFVNP Homarr version 1.17.0 Running on OMV 7.7.4-1 (Sandworm)
Send text and files securely and anonymously with end-to-end encryption (no account required) | PrivateBin
Encrypted note on Send text and files securely and anonymously with...
Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.
Send text and files securely and anonymously with end-to-end encryption (no account required) | PrivateBin
Encrypted note on Send text and files securely and anonymously with...
Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.
Solution:
So the account needs probably more permissions 😄
Jump to solution
46 Replies
Cakey Bot
Cakey Bot5mo ago
Thank you for submitting a support request. Depending on the volume of requests, our team should get in contact with you shortly.
⚠️ Please include the following details in your post or we may reject your request without further comment: - Log (See https://homarr.dev/docs/community/faq#how-do-i-open-the-console--log) - Operating system (Unraid, TrueNAS, Ubuntu, ...) - Exact Homarr version (eg. 0.15.0, not latest) - Configuration (eg. docker-compose, screenshot or similar. Use ``your-text`` to format) - Other relevant information (eg. your devices, your browser, ...)
Frequently Asked Questions | Homarr documentation
Can I install Homarr on a Raspberry Pi?
Manicraft1001
Manicraft10015mo ago
Please post your full logs
TheRedCyclops
TheRedCyclopsOP5mo ago
Send text and files securely and anonymously with end-to-end encryption (no account required) | PrivateBin
Encrypted note on Send text and files securely and anonymously with...
Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.
TheRedCyclops
TheRedCyclopsOP4mo ago
Ok, I have somehow managed to get it working, but after a reboot of the system it is back to not working
TheRedCyclops
TheRedCyclopsOP4mo ago
new log:
Meierschlumpf
Meierschlumpf4mo ago
The above error URI malformed can be ignored for now. It will prevent real time updates to occure, because one of your cookies contains a % character. This was fixed in https://github.com/homarr-labs/homarr/pull/2989 and will be part of v1.19.0 which is released on friday
GitHub
fix(cookie): parsing of header not working with percentage char by ...
Homarr Thank you for your contribution. Please ensure that your pull request meets the following pull request: Builds without warnings or errors (pnpm build, autofix with pnpm format:fix) Pull ...
TheRedCyclops
TheRedCyclopsOP4mo ago
Nice! but I'm more concerned with the error at the end since that's the one that apears when I reload the dashboard with the heath monitoring present
Meierschlumpf
Meierschlumpf4mo ago
2025-05-01T12:59:05.882Z error: Failed to run integration job integration=vko4r6trwgtkij1eqf6gijqv inputHash='W3t9XQ=='
at /app/apps/tasks/tasks.cjs:578097:11
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async catchingCallbackAsync (/app/apps/tasks/tasks.cjs:566389:9)
caused by Error: Invalid system information response
at _OpenMediaVaultIntegration.getSystemInfoAsync (/app/apps/tasks/tasks.cjs:574817:13)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async Object.requestAsync (/app/apps/tasks/tasks.cjs:578143:12)
at async Object.requestAsync (/app/apps/tasks/tasks.cjs:576834:16)
at async requestNewDataAsync (/app/apps/tasks/tasks.cjs:576788:26)
at async Object.getCachedOrUpdatedDataAsync (/app/apps/tasks/tasks.cjs:576799:20)
at async /app/apps/tasks/tasks.cjs:578091:9
at async catchingCallbackAsync (/app/apps/tasks/tasks.cjs:566389:9)
2025-05-01T12:59:05.882Z error: Failed to run integration job integration=vko4r6trwgtkij1eqf6gijqv inputHash='W3t9XQ=='
at /app/apps/tasks/tasks.cjs:578097:11
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async catchingCallbackAsync (/app/apps/tasks/tasks.cjs:566389:9)
caused by Error: Invalid system information response
at _OpenMediaVaultIntegration.getSystemInfoAsync (/app/apps/tasks/tasks.cjs:574817:13)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async Object.requestAsync (/app/apps/tasks/tasks.cjs:578143:12)
at async Object.requestAsync (/app/apps/tasks/tasks.cjs:576834:16)
at async requestNewDataAsync (/app/apps/tasks/tasks.cjs:576788:26)
at async Object.getCachedOrUpdatedDataAsync (/app/apps/tasks/tasks.cjs:576799:20)
at async /app/apps/tasks/tasks.cjs:578091:9
at async catchingCallbackAsync (/app/apps/tasks/tasks.cjs:566389:9)
This error occurs because the response of the api does not match our expected format. we expect the following:
z.object({
response: z.object({
version: z.string(),
cpuModelName: z.string(),
cpuUtilization: z.number(),
memUsed: z.string(),
memAvailable: z.string(),
uptime: z.number(),
loadAverage: z.object({
"1min": z.number(),
"5min": z.number(),
"15min": z.number(),
}),
rebootRequired: z.boolean(),
availablePkgUpdates: z.number(),
}),
})
z.object({
response: z.object({
version: z.string(),
cpuModelName: z.string(),
cpuUtilization: z.number(),
memUsed: z.string(),
memAvailable: z.string(),
uptime: z.number(),
loadAverage: z.object({
"1min": z.number(),
"5min": z.number(),
"15min": z.number(),
}),
rebootRequired: z.boolean(),
availablePkgUpdates: z.number(),
}),
})
When calling system.getInformation Not sure why, but maybe you have something of the features disabled / not enabled that were expected
Manicraft1001
Manicraft10014mo ago
@Meierschlumpf can we log more info from the zod validator?
Meierschlumpf
Meierschlumpf4mo ago
My changes regarding the test-connection changes, that I'm working on, will make it a lot easier to do so yes.
TheRedCyclops
TheRedCyclopsOP4mo ago
What is the exact call you're making? maybe I can manually trigger it to see the issue, I am using a separate account for the integration, but I have also tried with the default admin
Meierschlumpf
Meierschlumpf4mo ago
We make a POST request to /rpc.php with the following body:
{
"service": "system",
"method": "getInformation"
}
{
"service": "system",
"method": "getInformation"
}
and the required authentication through headers / cookies, depending on your setup
TheRedCyclops
TheRedCyclopsOP4mo ago
Dang, I'm really struggling to get it to accept the auth, could you give me any extra directions on what I should do?, this is my current command:
curl -X POST -d '{
"service": "system",
"method": "getInformation"
}' -b ~/downloads/cookies.txt http://omv.local/rpc.php
curl -X POST -d '{
"service": "system",
"method": "getInformation"
}' -b ~/downloads/cookies.txt http://omv.local/rpc.php
Where cookies.txt is the dump from the browser after logging in, for some reason it's still giving me the Session not authenticated error
Meierschlumpf
Meierschlumpf4mo ago
If you have cookie auth then they should be named OPENMEDIAVAULT-SESSIONID and OPENMEDIAVAULT-LOGIN (both like this or both with X- as prefix) Or if it is header authentication you can use the header with X-OPENMEDIAVAULT-SESSIONID
TheRedCyclops
TheRedCyclopsOP4mo ago
checking the file they are there, but OPENMEDIAVAULT-LOGIN has a dash at the end followed by a long seemingly random string
Meierschlumpf
Meierschlumpf4mo ago
That's weird that it has a dash at the end 🤔
TheRedCyclops
TheRedCyclopsOP4mo ago
OPENMEDIAVAULT-LOGIN-%242y%2410%24VYXgKFa6hIkpyGz6[more random string...] also, there are two ohh, wait, I've just realized I've dumped it from the access through the reverse proxy instead of direct as I'm doing on the command line
Meierschlumpf
Meierschlumpf4mo ago
Okay the %24 are probably encoded $
TheRedCyclops
TheRedCyclopsOP4mo ago
{
"response": {
"ts": 1746133456,
"time": "Thu 01 May 2025 11:04:16 PM CEST",
"hostname": "omv.internal",
"version": "7.7.5-1 (Sandworm)",
"cpuModelName": "Intel(R) Celeron(R) CPU N3450 @ 1.10GHz",
"cpuUtilization": 6.329113924050633,
"cpuCores": "4",
"cpuMhz": "2089.320",
"memTotal": "3950592000",
"memFree": "194605056",
"memUsed": "2611589120",
"memAvailable": "1339002880",
"memUtilization": "0.66106",
"kernel": "Linux 6.12.22+bpo-amd64",
"uptime": 30376.71,
"loadAverage": {
"1min": 1.06,
"5min": 1.24,
"15min": 0.95
},
"configDirty": false,
"dirtyModules": [],
"rebootRequired": false,
"availablePkgUpdates": 0,
"displayWelcomeMessage": false
},
"error": null
}
{
"response": {
"ts": 1746133456,
"time": "Thu 01 May 2025 11:04:16 PM CEST",
"hostname": "omv.internal",
"version": "7.7.5-1 (Sandworm)",
"cpuModelName": "Intel(R) Celeron(R) CPU N3450 @ 1.10GHz",
"cpuUtilization": 6.329113924050633,
"cpuCores": "4",
"cpuMhz": "2089.320",
"memTotal": "3950592000",
"memFree": "194605056",
"memUsed": "2611589120",
"memAvailable": "1339002880",
"memUtilization": "0.66106",
"kernel": "Linux 6.12.22+bpo-amd64",
"uptime": 30376.71,
"loadAverage": {
"1min": 1.06,
"5min": 1.24,
"15min": 0.95
},
"configDirty": false,
"dirtyModules": [],
"rebootRequired": false,
"availablePkgUpdates": 0,
"displayWelcomeMessage": false
},
"error": null
}
Does that look good?
Meierschlumpf
Meierschlumpf4mo ago
It looks like a response from omv yes, let me check quickly Hmm that looks correct
TheRedCyclops
TheRedCyclopsOP4mo ago
It did take a full 4 seconds to proccess 6 on a second request
Meierschlumpf
Meierschlumpf4mo ago
Okay, this should not really matter as we got the Invalid system information response error and not a timeout or similar
TheRedCyclops
TheRedCyclopsOP4mo ago
Ohh, wait I've got it (I think)
Meierschlumpf
Meierschlumpf4mo ago
Maybe the response we get back through homarr is the one that you get when you are unauthorized. Can you check through updating the integrations secrets? Okay if you have it even better!
TheRedCyclops
TheRedCyclopsOP4mo ago
using the account I created for the integration only this appears:
{
"response": {
"ts": 1746133957,
"time": "Thu 01 May 2025 11:12:37 PM CEST",
"hostname": "omv.internal"
},
"error": null
}
{
"response": {
"ts": 1746133957,
"time": "Thu 01 May 2025 11:12:37 PM CEST",
"hostname": "omv.internal"
},
"error": null
}
Meierschlumpf
Meierschlumpf4mo ago
Oh I see
Solution
Meierschlumpf
Meierschlumpf4mo ago
So the account needs probably more permissions 😄
TheRedCyclops
TheRedCyclopsOP4mo ago
I thought I had also tried with the admin account but it must not have updated for some reason any idea on what groups it needs to be part of? I'm seeing in the OMV wiki that any user on the openmediavault-admin group is a web interface administrator, but ideally I would like to not give a user that's just there to get stats admin permisions over the whole system
Meierschlumpf
Meierschlumpf4mo ago
Maybe with SNMP you can make the data read only? Other than that it states that it is only available to the admin group But SNMP is a seperat protocol on port 161 it seems that we don't support So it's probably only the admin credentials way that seems to work, except you want to touch ACL rules, which is not recommended
TheRedCyclops
TheRedCyclopsOP4mo ago
then there is really no point to having a separate user?
Meierschlumpf
Meierschlumpf4mo ago
I guess not really
TheRedCyclops
TheRedCyclopsOP4mo ago
It seems to still be failing
Meierschlumpf
Meierschlumpf4mo ago
Except maybe to sign in with only him to only have read rights by default
TheRedCyclops
TheRedCyclopsOP4mo ago
same error I think:
2025-05-01T21:32:30.881Z info: Dispatching request http://192.168.100.55/rpc.php (8 headers)
2025-05-01T21:32:30.990Z error: Failed to run integration job integration=vko4r6trwgtkij1eqf6gijqv inputHash='W3t9XQ=='
at /app/apps/tasks/tasks.cjs:578097:11
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async catchingCallbackAsync (/app/apps/tasks/tasks.cjs:566389:9)
caused by Error: Invalid system information response
at _OpenMediaVaultIntegration.getSystemInfoAsync (/app/apps/tasks/tasks.cjs:574817:13)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async Object.requestAsync (/app/apps/tasks/tasks.cjs:578143:12)
at async Object.requestAsync (/app/apps/tasks/tasks.cjs:576834:16)
at async requestNewDataAsync (/app/apps/tasks/tasks.cjs:576788:26)
at async Object.getCachedOrUpdatedDataAsync (/app/apps/tasks/tasks.cjs:576799:20)
at async /app/apps/tasks/tasks.cjs:578091:9
at async catchingCallbackAsync (/app/apps/tasks/tasks.cjs:566389:9)
2025-05-01T21:32:30.881Z info: Dispatching request http://192.168.100.55/rpc.php (8 headers)
2025-05-01T21:32:30.990Z error: Failed to run integration job integration=vko4r6trwgtkij1eqf6gijqv inputHash='W3t9XQ=='
at /app/apps/tasks/tasks.cjs:578097:11
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async catchingCallbackAsync (/app/apps/tasks/tasks.cjs:566389:9)
caused by Error: Invalid system information response
at _OpenMediaVaultIntegration.getSystemInfoAsync (/app/apps/tasks/tasks.cjs:574817:13)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async Object.requestAsync (/app/apps/tasks/tasks.cjs:578143:12)
at async Object.requestAsync (/app/apps/tasks/tasks.cjs:576834:16)
at async requestNewDataAsync (/app/apps/tasks/tasks.cjs:576788:26)
at async Object.getCachedOrUpdatedDataAsync (/app/apps/tasks/tasks.cjs:576799:20)
at async /app/apps/tasks/tasks.cjs:578091:9
at async catchingCallbackAsync (/app/apps/tasks/tasks.cjs:566389:9)
2025-05-01T21:34:30.770Z error: tRPC Error with query on 'widget.healthMonitoring.getSystemHealthStatus'
at Object.onError (/app/apps/nextjs/.next/server/app/api/trpc/[trpc]/route.js:1:4403)
at Object.onError (/app/apps/nextjs/.next/server/app/api/trpc/[trpc]/route.js:1:3561)
at /app/apps/nextjs/.next/server/chunks/4566.js:106:5069
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async /app/apps/nextjs/.next/server/chunks/4566.js:106:7029
at async /app/apps/nextjs/.next/server/chunks/4566.js:94:2274661
caused by Error: Invalid system information response
at s5.getSystemInfoAsync (/app/apps/nextjs/.next/server/chunks/8148.js:5:30976)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async Object.requestAsync (/app/apps/nextjs/.next/server/chunks/8148.js:6:72089)
at async Object.requestAsync (/app/apps/nextjs/.next/server/chunks/8148.js:6:68068)
at async i (/app/apps/nextjs/.next/server/chunks/8148.js:6:55542)
at async Object.getCachedOrUpdatedDataAsync (/app/apps/nextjs/.next/server/chunks/8148.js:6:56011)
at async /app/apps/nextjs/.next/server/chunks/8148.js:6:72536
at async Promise.all (index 0)
at async /app/apps/nextjs/.next/server/chunks/8148.js:6:72445
at async p.middlewares (/app/apps/nextjs/.next/server/chunks/4566.js:97:416839)
2025-05-01T21:34:30.770Z error: tRPC Error with query on 'widget.healthMonitoring.getSystemHealthStatus'
at Object.onError (/app/apps/nextjs/.next/server/app/api/trpc/[trpc]/route.js:1:4403)
at Object.onError (/app/apps/nextjs/.next/server/app/api/trpc/[trpc]/route.js:1:3561)
at /app/apps/nextjs/.next/server/chunks/4566.js:106:5069
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async /app/apps/nextjs/.next/server/chunks/4566.js:106:7029
at async /app/apps/nextjs/.next/server/chunks/4566.js:94:2274661
caused by Error: Invalid system information response
at s5.getSystemInfoAsync (/app/apps/nextjs/.next/server/chunks/8148.js:5:30976)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async Object.requestAsync (/app/apps/nextjs/.next/server/chunks/8148.js:6:72089)
at async Object.requestAsync (/app/apps/nextjs/.next/server/chunks/8148.js:6:68068)
at async i (/app/apps/nextjs/.next/server/chunks/8148.js:6:55542)
at async Object.getCachedOrUpdatedDataAsync (/app/apps/nextjs/.next/server/chunks/8148.js:6:56011)
at async /app/apps/nextjs/.next/server/chunks/8148.js:6:72536
at async Promise.all (index 0)
at async /app/apps/nextjs/.next/server/chunks/8148.js:6:72445
at async p.middlewares (/app/apps/nextjs/.next/server/chunks/4566.js:97:416839)
and this time I'm using the default admin user I've even made sure with curl with the exact same address and details the exact command used for testing that works is: curl -X POST -d '{"service": "system", "method": "getInformation"}' -b ~/downloads/cookies.txt http://192.168.100.55/rpc.php | yq
Meierschlumpf
Meierschlumpf4mo ago
I think this one is on me. We have a sessionStore which stores the used secrets for calling the api in a cache so we don't authenticate all 5 seconds. But we don't invalidate it when other credentials are used... If possible you can remove the session in omv / wait until the session expires And then we should make changes so that the stored sessions are for specific credentials
TheRedCyclops
TheRedCyclopsOP4mo ago
That would definitely explain why it worked previously when I switched it to the unprivileged account Does just deleting the user work? Yes it does
Meierschlumpf
Meierschlumpf4mo ago
It should as then your api will respond with status code 401 (i suspect) and if this is the case we authenticate again
TheRedCyclops
TheRedCyclopsOP4mo ago
now the integration is working finally and since we know why it failed previously we can (probably) discard any hidden timebombs
Meierschlumpf
Meierschlumpf4mo ago
Okay great, so best would be if we 1. add more details to the Invalid system information response 2. add documentation that admin permissions are required as it otherwise does not show enough informations 3. we invalidate the credentials of integrations when the testConnectionAsync is run
TheRedCyclops
TheRedCyclopsOP4mo ago
I understand the first two, but shouldn't the credentials only be invalidated when the integration is modified?
Meierschlumpf
Meierschlumpf4mo ago
Yes that would make even more sense Okay but great, I suggest I'll create an issue for invalidating the credentials of the session store and one for the admin permissions for omv (the first one I'm already working on with some other changes)
TheRedCyclops
TheRedCyclopsOP4mo ago
sure, go for it, thanks for all the help and for the great dashboard
Meierschlumpf
Meierschlumpf4mo ago
You're welcome, have a good night
TheRedCyclops
TheRedCyclopsOP4mo ago
You too, shall I mark this issue as solved?
Meierschlumpf
Meierschlumpf4mo ago
Yes you can, thanks
Meierschlumpf
Meierschlumpf4mo ago
GitHub
feat: add note of required permissions for omv integration · Issue...
Describe what you would like to see documented Add a note that for working omv integration the user needs admin permissions as otherwise he will not get the full details for system.getInformations....
GitHub
bug: session stores not invalidated · Issue #3002 · homarr-labs/h...
Describe the bug When updating the credentials of an integration the session store is not invalidated. So it will use the old credentials until they expire and the api returns a 401 where it will r...

Did you find this page helpful?