Checkmate icon indicating copy to clipboard operation
Checkmate copied to clipboard

Docker Support for ARM

Open shareef945 opened this issue 1 year ago • 1 comments

Describe the bug A clear and concise description of what the bug is.

To Reproduce Steps to reproduce the behavior: Run docker compose up on an ARM device

Expected behavior Services should start on ARM devices.

Additional context i get this error

server The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

shareef945 avatar Dec 13 '24 14:12 shareef945

@shareef945 we'll look at it!

gorkem-bwl avatar Dec 13 '24 16:12 gorkem-bwl

Hi @shareef945 ,

I've attempted to build some images with ARM64 support, would you mind trying them out when you get a chance? Thanks!

ajhollid avatar Dec 17 '24 22:12 ajhollid

It works now ! Cheers !

shareef945 avatar Dec 17 '24 23:12 shareef945

Awesome that's great news! Thank you for testing 👌

ajhollid avatar Dec 17 '24 23:12 ajhollid

It works now ! Cheers !

@shareef945 Hey can you let us know if it "properly" works lol? :) Like I have read a few side effects of running Uptime Kuma on an ARM, so that is something I feel like I smell something fishy there. I might be wrong however :)

The Capture agent also has a Docker image you can test on an ARM arch if you don't mind.

gorkem-bwl avatar Dec 18 '24 06:12 gorkem-bwl

@shareef945 you can use this link for the Capture ARM image: https://github.com/bluewave-labs/capture/pkgs/container/capture

gorkem-bwl avatar Dec 18 '24 07:12 gorkem-bwl

just realized mongo isnt starting up with the latest update. here are the logs

mongodb-1 | WARNING: MongoDB requires ARMv8.2-A or higher, and your current system does not appear to implement any of the common features for that! mongodb-1 | applies to all versions ≥5.0, any of 4.4 ≥4.4.19 server-1 | (node:1) [MONGOOSE] Warning: errorsis a reserved schema pathname and may break some functionality. You are allowed to use it, but use at your own risk. To disable this warning passsuppressReservedKeysWarningas a schema option. mongodb-1 | see https://jira.mongodb.org/browse/SERVER-71772 mongodb-1 | see https://jira.mongodb.org/browse/SERVER-55178 mongodb-1 | see also https://en.wikichip.org/wiki/arm/armv8#ARMv8_Extensions_and_Processor_Features mongodb-1 | see also https://github.com/docker-library/mongo/issues/485#issuecomment-970864306 mongodb-1 |

I'm running this on a raspbery pi 5.

shareef945 avatar Dec 18 '24 08:12 shareef945

server also doesnt startup as a result

shareef945 avatar Dec 18 '24 08:12 shareef945

OK, researched on it a bit. It looks like MongoDB 5 requires the ARMv8.2-A or higher architecture, and MongoDB 4.x doesn't (ARMv8 is sufficient). There might be one case here - using MongoDB 4 for RPi images (still a viable option as it receives updates). Recompilation of MongoDB 5 without ARM8.2-A is tricky and doesn't serve the purpose.

Do you have a RPi 4 or RPi 5 ?

gorkem-bwl avatar Dec 18 '24 09:12 gorkem-bwl

It works now ! Cheers !

@shareef945 Hey can you let us know if it "properly" works lol? :) Like I have read a few side effects of running Uptime Kuma on an ARM, so that is something I feel like I smell something fishy there. I might be wrong however :)

The Capture agent also has a Docker image you can test on an ARM arch if you don't mind.

I installed both on my arm server and they work! Although i just did it for some testing purposes.

imadreamerboy avatar Dec 18 '24 23:12 imadreamerboy

It works now ! Cheers !

@shareef945 Hey can you let us know if it "properly" works lol? :) Like I have read a few side effects of running Uptime Kuma on an ARM, so that is something I feel like I smell something fishy there. I might be wrong however :) The Capture agent also has a Docker image you can test on an ARM arch if you don't mind.

I installed both on my arm server and they work! Although i just did it for some testing purposes.

Wow thanks! What is the architecture of your ARM?

gorkem-bwl avatar Dec 18 '24 23:12 gorkem-bwl

It works now ! Cheers !

@shareef945 Hey can you let us know if it "properly" works lol? :) Like I have read a few side effects of running Uptime Kuma on an ARM, so that is something I feel like I smell something fishy there. I might be wrong however :) The Capture agent also has a Docker image you can test on an ARM arch if you don't mind.

I installed both on my arm server and they work! Although i just did it for some testing purposes.

Wow thanks! What is the architecture of your ARM?

aarch64 / armv8

imadreamerboy avatar Dec 19 '24 00:12 imadreamerboy

i'm still unable to start mongo and the server. i'm on a raspberry pi 5. @gorkem-bwl

shareef945 avatar Dec 27 '24 20:12 shareef945

i'm still unable to start mongo and the server. i'm on a raspberry pi 5. @gorkem-bwl

Thanks for this @shareef945 - currently MongoDB refuses to run on particular ARM CPU architectures unfortunately.

gorkem-bwl avatar Dec 29 '24 22:12 gorkem-bwl

Thanks for the work guys, just here to express interest on ARM docker images, would love to run this on Ampere VPSs.

biolimbo avatar Feb 04 '25 01:02 biolimbo

Mongo for ARM64 is available for example here.

https://hub.docker.com/r/arm64v8/mongo

https://hub.docker.com/r/dlavrenuek/bitnami-mongodb-arm https://github.com/dlavrenuek/bitnami-mongodb-arm

Have you tried those?

Some people might even run into problems with Intel CPUs, if it does not support AVX. See here. https://github.com/docker-library/mongo/issues/485 https://github.com/docker-library/mongo/issues/619

Your image bluewaveuptime/uptime_database_mongo does for example not work with a N3450.

mschirrmeister avatar Apr 22 '25 17:04 mschirrmeister

Arm support is there for you to test guys. Let us know what you think!

https://docs.checkmate.so/checkmate-2.1/users-guide/quickstart

@mschirrmeister @biolimbo @shareef945 @imadreamerboy

gorkem-bwl avatar May 13 '25 22:05 gorkem-bwl

Arm support is there for you to test guys. Let us know what you think!

I've just tested it on a Raspberry Pi 3, and the Arm version works really well - I haven't encountered many errors, actually only 1 so far. And that's when you access a monitor service on the infrastructure page, it spits out the following in the log:

server-1 | 2025-06-06T11:16:20.473Z error: monitorModule Invalid $project :: caused by :: Unknown expression $sortArray (stack: [ server-1 | { server-1 | "function": "Connection.sendCommand", server-1 | "file": "/app/server/node_modules/mongodb/lib/cmap/connection.js", server-1 | "line": 298, server-1 | "column": 27 server-1 | }, server-1 | { server-1 | "function": "process.processTicksAndRejections", server-1 | "file": "node:internal/process/task_queues", server-1 | "line": 95, server-1 | "column": 5 server-1 | }, server-1 | { server-1 | "function": "async Connection.command", server-1 | "file": "/app/server/node_modules/mongodb/lib/cmap/connection.js", server-1 | "line": 326, server-1 | "column": 26 server-1 | }, server-1 | { server-1 | "function": "async Server.command", server-1 | "file": "/app/server/node_modules/mongodb/lib/sdam/server.js", server-1 | "line": 167, server-1 | "column": 29 server-1 | }, server-1 | { server-1 | "function": "async AggregateOperation.executeCommand", server-1 | "file": "/app/server/node_modules/mongodb/lib/operations/command.js", server-1 | "line": 76, server-1 | "column": 16 server-1 | }, server-1 | { server-1 | "function": "async AggregateOperation.execute", server-1 | "file": "/app/server/node_modules/mongodb/lib/operations/aggregate.js", server-1 | "line": 87, server-1 | "column": 16 server-1 | }, server-1 | { server-1 | "function": "async tryOperation", server-1 | "file": "/app/server/node_modules/mongodb/lib/operations/execute_operation.js", server-1 | "line": 207, server-1 | "column": 20 server-1 | }, server-1 | { server-1 | "function": "async executeOperation", server-1 | "file": "/app/server/node_modules/mongodb/lib/operations/execute_operation.js", server-1 | "line": 75, server-1 | "column": 16 server-1 | }, server-1 | { server-1 | "function": "async AggregationCursor._initialize", server-1 | "file": "/app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js", server-1 | "line": 56, server-1 | "column": 26 server-1 | }, server-1 | { server-1 | "function": "async AggregationCursor.cursorInit", server-1 | "file": "/app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js", server-1 | "line": 632, server-1 | "column": 27 server-1 | } server-1 | ])

From what I can read, that is a feature that first came to MongoDB 5.x? And those versions don't seem to run on older ARM chips.

victorpahuus avatar Jun 06 '25 12:06 victorpahuus

Arm support is there for you to test guys. Let us know what you think!

I've just tested it on a Raspberry Pi 3, and the Arm version works really well - I haven't encountered many errors, actually only 1 so far. And that's when you access a monitor service on the infrastructure page, it spits out the following in the log:

From what I can read, that is a feature that first came to MongoDB 5.x? And those versions don't seem to run on older ARM chips.

I tested it on my Raspberry Pi 4 and the issue is the same.

H1ghBre4k3r avatar Jun 15 '25 12:06 H1ghBre4k3r

Thanks for the heads up all, we downgraded Mongo for arm comparability and missed this one.

We'll look into this asap!

ajhollid avatar Jun 15 '25 13:06 ajhollid

Hi there, do we have an update on this? I am also on an ARM infrastructure and I am running into the same issue but in the status page section:

server-1           | 2025-08-04T04:31:45.817Z error: [statusPageModule](getStatusPageByUrl) Invalid $project :: caused by :: Unknown expression $sortArray (stack: [
server-1           |   {
server-1           |     "function": "Connection.sendCommand",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/cmap/connection.js",
server-1           |     "line": 298,
server-1           |     "column": 27
server-1           |   },
server-1           |   {
server-1           |     "function": "process.processTicksAndRejections",
server-1           |     "file": "node:internal/process/task_queues",
server-1           |     "line": 95,
server-1           |     "column": 5
server-1           |   },
server-1           |   {
server-1           |     "function": "async Connection.command",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/cmap/connection.js",
server-1           |     "line": 326,
server-1           |     "column": 26
server-1           |   },
server-1           |   {
server-1           |     "function": "async Server.command",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/sdam/server.js",
server-1           |     "line": 167,
server-1           |     "column": 29
server-1           |   },
server-1           |   {
server-1           |     "function": "async AggregateOperation.executeCommand",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/operations/command.js",
server-1           |     "line": 76,
server-1           |     "column": 16
server-1           |   },
server-1           |   {
server-1           |     "function": "async AggregateOperation.execute",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/operations/aggregate.js",
server-1           |     "line": 87,
server-1           |     "column": 16
server-1           |   },
server-1           |   {
server-1           |     "function": "async tryOperation",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/operations/execute_operation.js",
server-1           |     "line": 207,
server-1           |     "column": 20
server-1           |   },
server-1           |   {
server-1           |     "function": "async executeOperation",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/operations/execute_operation.js",
server-1           |     "line": 75,
server-1           |     "column": 16
server-1           |   },
server-1           |   {
server-1           |     "function": "async AggregationCursor._initialize",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js",
server-1           |     "line": 56,
server-1           |     "column": 26
server-1           |   },
server-1           |   {
server-1           |     "function": "async AggregationCursor.cursorInit",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js",
server-1           |     "line": 632,
server-1           |     "column": 27
server-1           |   }
server-1           | ])
server-1           | 2025-08-04T04:32:03.708Z info: [BufferService](flushBuffers) Flushed 8 items
server-1           | 2025-08-04T04:32:11.228Z error: [statusPageModule](getStatusPageByUrl) Invalid $project :: caused by :: Unknown expression $sortArray (stack: [
server-1           |   {
server-1           |     "function": "Connection.sendCommand",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/cmap/connection.js",
server-1           |     "line": 298,
server-1           |     "column": 27
server-1           |   },
server-1           |   {
server-1           |     "function": "process.processTicksAndRejections",
server-1           |     "file": "node:internal/process/task_queues",
server-1           |     "line": 95,
server-1           |     "column": 5
server-1           |   },
server-1           |   {
server-1           |     "function": "async Connection.command",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/cmap/connection.js",
server-1           |     "line": 326,
server-1           |     "column": 26
server-1           |   },
server-1           |   {
server-1           |     "function": "async Server.command",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/sdam/server.js",
server-1           |     "line": 167,
server-1           |     "column": 29
server-1           |   },
server-1           |   {
server-1           |     "function": "async AggregateOperation.executeCommand",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/operations/command.js",
server-1           |     "line": 76,
server-1           |     "column": 16
server-1           |   },
server-1           |   {
server-1           |     "function": "async AggregateOperation.execute",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/operations/aggregate.js",
server-1           |     "line": 87,
server-1           |     "column": 16
server-1           |   },
server-1           |   {
server-1           |     "function": "async tryOperation",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/operations/execute_operation.js",
server-1           |     "line": 207,
server-1           |     "column": 20
server-1           |   },
server-1           |   {
server-1           |     "function": "async executeOperation",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/operations/execute_operation.js",
server-1           |     "line": 75,
server-1           |     "column": 16
server-1           |   },
server-1           |   {
server-1           |     "function": "async AggregationCursor._initialize",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js",
server-1           |     "line": 56,
server-1           |     "column": 26
server-1           |   },
server-1           |   {
server-1           |     "function": "async AggregationCursor.cursorInit",
server-1           |     "file": "/app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js",
server-1           |     "line": 632,
server-1           |     "column": 27
server-1           |   }
server-1           | ])

Thanks! EDIT: Wasn't on the latest update, didn't notice the image name change for the ARM infrastructure, everything is fine now

ogamacheDev avatar Aug 04 '25 04:08 ogamacheDev