feat(arm64): Add support for arm64. #24

Open
opened 2026-02-16 12:51:09 -05:00 by yindo · 17 comments
Owner

Originally created by @RedstoneWizard08 on GitHub (Feb 25, 2022).

This is the issue for a PR I made (#35). There are more details there.


Maintainer edit: this only affects the web client now.

Originally created by @RedstoneWizard08 on GitHub (Feb 25, 2022). This is the issue for a PR I made (#35). There are more details there. --- Maintainer edit: this only affects the web client now.
yindo added the help wantedimprovement labels 2026-02-16 12:51:09 -05:00
Author
Owner

@Vevooltpro commented on GitHub (Sep 1, 2022):

Hi, @RedstoneWizard08!
We have successfully added support for arm64 instances. Please these instructions:
Here are the installation steps:
docker run --privileged --rm tonistiigi/binfmt --install amd64
After that just follow the Quick Start tutorial.

@Vevooltpro commented on GitHub (Sep 1, 2022): Hi, @RedstoneWizard08! We have successfully added support for arm64 instances. Please these instructions: Here are the installation steps: ``` docker run --privileged --rm tonistiigi/binfmt --install amd64 ``` After that just follow the Quick Start tutorial.
Author
Owner

@RedstoneWizard08 commented on GitHub (Sep 12, 2022):

Yay!

@RedstoneWizard08 commented on GitHub (Sep 12, 2022): Yay!
Author
Owner

@RedstoneWizard08 commented on GitHub (Sep 12, 2022):

Btw I have tried to use binfmt and qemu and emulation with several different methods, and they always end in errors, glitches, or general slowness. What I was talking about for this was more of a native solution that does not have to use emulation.

@RedstoneWizard08 commented on GitHub (Sep 12, 2022): Btw I have tried to use binfmt and qemu and emulation with several different methods, and they always end in errors, glitches, or general slowness. What I was talking about for this was more of a native solution that does not have to use emulation.
Author
Owner

@Rexogamer commented on GitHub (Sep 13, 2022):

That's more of a temporary solution than an actual fix (which we're interested in pursuing) - native ARM support is much better

@Rexogamer commented on GitHub (Sep 13, 2022): That's more of a temporary solution than an actual fix (which we're interested in pursuing) - native ARM support is much better
Author
Owner

@RedstoneWizard08 commented on GitHub (Sep 18, 2022):

Ok, good.

@RedstoneWizard08 commented on GitHub (Sep 18, 2022): Ok, good.
Author
Owner

@eternalflamestudios commented on GitHub (Mar 12, 2024):

Hi, @RedstoneWizard08! We have successfully added support for arm64 instances. Please these instructions: Here are the installation steps: docker run --privileged --rm tonistiigi/binfmt --install amd64 After that just follow the Quick Start tutorial.

This did not work for me. It still said something along the lines of "/Linux/ARM64/v8 not found in the manifest list entries"

@eternalflamestudios commented on GitHub (Mar 12, 2024): > Hi, @RedstoneWizard08! We have successfully added support for arm64 instances. Please these instructions: Here are the installation steps: `docker run --privileged --rm tonistiigi/binfmt --install amd64` After that just follow the Quick Start tutorial. This did not work for me. It still said something along the lines of "/Linux/ARM64/v8 not found in the manifest list entries"
Author
Owner

@RedstoneWizard08 commented on GitHub (Mar 13, 2024):

Yeah. Binfmt/qemu is a temporary solution. Those arm64 images will be made available when arm64 binary builds are.

@RedstoneWizard08 commented on GitHub (Mar 13, 2024): Yeah. Binfmt/qemu is a temporary solution. Those arm64 images will be made available when arm64 binary builds are.
Author
Owner

@xenon154 commented on GitHub (Mar 16, 2024):

Is there any way for me to selfhost Revolt on an ARM64-based system like a Raspberry Pi in the meantime through emulation or something similar? The command that VevooltPro provided did not fix the issue.

@xenon154 commented on GitHub (Mar 16, 2024): Is there any way for me to selfhost Revolt on an ARM64-based system like a Raspberry Pi in the meantime through emulation or something similar? The command that VevooltPro provided did not fix the issue.
Author
Owner

@RioghanDer2te commented on GitHub (Oct 11, 2024):

I tried hosting it on my Raspberry Pi 3.
turns out it has insufficient power, but I'd still like an opinion in case I upgrade to a RaPi 4 or 5

  1. First tried it as mentioned in the quickstart
    -> No matching manifest for linux/arm64/v8
  2. found a fix that let me get started
    -> exec format error
  3. undid step 2 and run the emulation solution from this issue
    -> MongoDB 5.0+ requires a CPU with AVX support

did my step 2 screw everything up or did an update make this impossible again?

@RioghanDer2te commented on GitHub (Oct 11, 2024): I tried hosting it on my Raspberry Pi 3. <sub>turns out it has insufficient power, but I'd still like an opinion in case I upgrade to a RaPi 4 or 5</sub> 1. First tried it as mentioned in the quickstart -> No matching manifest for linux/arm64/v8 3. found a [fix](https://stackoverflow.com/a/73614527) that let me get started -> exec format error 5. undid step 2 and run the [emulation solution](https://github.com/revoltchat/self-hosted/issues/37#issuecomment-1234281914) from this issue -> MongoDB 5.0+ requires a CPU with AVX support did my step 2 screw everything up or did an update make this impossible again?
Author
Owner

@insertish commented on GitHub (Nov 13, 2024):

Edited OP, this should only affect the web client now. Backend has arm64 support across all services.

@insertish commented on GitHub (Nov 13, 2024): Edited OP, this should only affect the web client now. Backend has arm64 support across all services.
Author
Owner

@CornerSyrup commented on GitHub (Feb 24, 2025):

Hi, I'm facing the same problem here.

By the "the web client" you mean "web" and "caddy"?
Can I just skip those 2 service and run the compose?

I'm still getting the no matching manifest for linux/arm64/v8 in the manifest list entries, perhaps it's something adjustable in deployment steps?

Thx for contributing and answering 🫰🏻

@CornerSyrup commented on GitHub (Feb 24, 2025): Hi, I'm facing the same problem here. By the "the web client" you mean "web" and "caddy"? Can I just skip those 2 service and run the compose? I'm still getting the `no matching manifest for linux/arm64/v8 in the manifest list entries`, perhaps it's something adjustable in deployment steps? Thx for contributing and answering 🫰🏻
Author
Owner

@Docteh commented on GitHub (Apr 25, 2025):

I just tried this on a Raspberry Pi 4, I needed to run emulation for the web container (platform: linux/amd64 in compose.yml), and for mongodb I needed to run a different container from https://github.com/themattman/mongodb-raspberrypi-docker

For the version 7.0.14 of mongodb that is provided by themattman I changed the healthcheck to go to mongo rather than mongosh

Oops, just noticed that I could have pinned and tried mongodb 4.4 as mentioned in the self-hosted readme

@Docteh commented on GitHub (Apr 25, 2025): I just tried this on a Raspberry Pi 4, I needed to run emulation for the web container (`platform: linux/amd64` in compose.yml), and for mongodb I needed to run a different container from https://github.com/themattman/mongodb-raspberrypi-docker For the version 7.0.14 of mongodb that is provided by themattman I changed the healthcheck to go to mongo rather than mongosh Oops, just noticed that I could have pinned and tried mongodb 4.4 as mentioned in the [self-hosted readme](https://github.com/revoltchat/self-hosted#mongo-compatibility)
Author
Owner

@jktam commented on GitHub (Apr 25, 2025):

Here's my experience trying to run this on an ARM64 instance (I'm using Oracle Cloud's Always Free instances):

Followed all the steps as shown in the README.md, but a few more changes to the compose.yml were necessary.

I looked up all the docker images whether in docker hub or the revoltchat github (just copy the path in the image: line). I saw whether I needed to change the image path or add a platform specification. I would either have to change the image path, for example, docker.io/mongo to arm64v8/mongo, or add platform: arm64 OR platform:arm64/v8 (check the tags).

I also commented out the services web and crond, which I assume breaks web client connectivity. These had no appropriate tags or supported images, it just wouldn't work for me.

Also found out I would need to build the desktop client for my specific instance (https://github.com/orgs/revoltchat/discussions/846), which I don't know if I'll get to.

Hope this helps some people getting here from search engines, as well as those looking for Discord alternatives after the CEO news.

TL;DR: I did not get this working on an ARM64 host, but hope the info here leads some people to success. I also hope some official support is achieved.

@jktam commented on GitHub (Apr 25, 2025): Here's my experience trying to run this on an ARM64 instance (I'm using Oracle Cloud's Always Free instances): Followed all the steps as shown in the README.md, but a few more changes to the compose.yml were necessary. I looked up all the docker images whether in docker hub or the revoltchat github (just copy the path in the `image:` line). I saw whether I needed to change the image path or add a platform specification. I would either have to change the image path, for example, `docker.io/mongo` to `arm64v8/mongo`, or add `platform: arm64` OR `platform:arm64/v8` (check the tags). I also commented out the services `web` and `crond`, which I assume breaks web client connectivity. These had no appropriate tags or supported images, it just wouldn't work for me. Also found out I would need to build the desktop client for my specific instance ([https://github.com/orgs/revoltchat/discussions/846](https://github.com/orgs/revoltchat/discussions/846)), which I don't know if I'll get to. Hope this helps some people getting here from search engines, as well as those looking for Discord alternatives after the CEO news. TL;DR: I did not get this working on an ARM64 host, but hope the info here leads some people to success. I also hope some official support is achieved.
Author
Owner

@Docteh commented on GitHub (Apr 30, 2025):

@jktam crond according to the readme at https://github.com/revoltchat/backend is for cleaning up unused files, not required. But it is close to being available as an ARM64 container. I think I can just nudge it over the line in https://github.com/revoltchat/backend/pull/413

But if anyone needs the arm64 crond executable its available in ghcr.io/revoltchat/base container at /home/rust/src/target/release/revolt-crond. Building the Dockerfile at https://github.com/revoltchat/backend/blob/main/crates/daemons/crond/Dockerfile will pull down that base container, extract the one file and stick it in a container image for ya.

I did also learn that the binfmt stuff mentioned earlier doesn't stay after a reboot, so I might look into just building the web container locally and seeing where that gets me.

@Docteh commented on GitHub (Apr 30, 2025): @jktam crond according to the readme at https://github.com/revoltchat/backend is for cleaning up unused files, not required. But it is close to being available as an ARM64 container. I think I can just nudge it over the line in https://github.com/revoltchat/backend/pull/413 But if anyone needs the arm64 crond executable its available in `ghcr.io/revoltchat/base` container at `/home/rust/src/target/release/revolt-crond`. Building the Dockerfile at https://github.com/revoltchat/backend/blob/main/crates/daemons/crond/Dockerfile will pull down that base container, extract the one file and stick it in a container image for ya. I did also learn that the binfmt stuff mentioned earlier doesn't stay after a reboot, so I might look into just building the web container locally and seeing where that gets me.
Author
Owner

@Docteh commented on GitHub (May 5, 2025):

I poked at Github Actions and Docker just enough to repackage the web container for arm64: https://github.com/Docteh/revolt-revite-arm64

I named the repo revolt-revite-arm64, but its a slimmer docker image available for both arm64 and amd64

@Docteh commented on GitHub (May 5, 2025): I poked at Github Actions and Docker just enough to repackage the web container for arm64: https://github.com/Docteh/revolt-revite-arm64 I named the repo revolt-revite-arm64, but its a slimmer docker image available for both arm64 and amd64
Author
Owner

@LZeugirdor commented on GitHub (Feb 11, 2026):

Mongo doesn't work on my pi 4, i understand the pi isn't particularly powerful but I would like to be able to set it up anyways. Is there any way to use postgres rather than mongo?

@LZeugirdor commented on GitHub (Feb 11, 2026): Mongo doesn't work on my pi 4, i understand the pi isn't particularly powerful but I would like to be able to set it up anyways. Is there any way to use postgres rather than mongo?
Author
Owner

@Docteh commented on GitHub (Feb 15, 2026):

@LZeugirdor did you try any of the alternatives for a mongo image in this thread? Switching a database engine is never trivial

@Docteh commented on GitHub (Feb 15, 2026): @LZeugirdor did you try any of the alternatives for a mongo image in this thread? Switching a database engine is never trivial
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: stoatchat/self-hosted#24