Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
RedstoneWizard08 opened this issue Feb 25, 2022 · 15 comments
Open

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

RedstoneWizard08 opened this issue Feb 25, 2022 · 15 comments
Labels
help wanted Extra attention is needed improvement Areas that can be improved on

Comments

@RedstoneWizard08
Copy link

RedstoneWizard08 commented 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.

@insertish insertish moved this to Free Issues (open to anyone) in Revolt Project Apr 29, 2022
@insertish insertish added the improvement Areas that can be improved on label Apr 29, 2022
@Vevooltpro
Copy link

Vevooltpro commented 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.

@RedstoneWizard08
Copy link
Author

Yay!

@RedstoneWizard08
Copy link
Author

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.

@Rexogamer
Copy link
Contributor

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

@RedstoneWizard08
Copy link
Author

Ok, good.

@eternalflamestudios
Copy link

eternalflamestudios commented Mar 13, 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"

@RedstoneWizard08
Copy link
Author

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

@xenon154
Copy link

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.

@insertish insertish moved this from Free Issues (open to anyone) to 💡 Open in Revolt Project Mar 27, 2024
@insertish insertish moved this from 💡 Open to 🆕 Untriaged in Revolt Project Mar 27, 2024
@insertish insertish moved this from 🆕 Untriaged to 💡 Open in Revolt Project Mar 28, 2024
@insertish insertish added the help wanted Extra attention is needed label Mar 28, 2024
@RioghanDer2te
Copy link

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?

@insertish
Copy link
Member

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

@CornerSyrup
Copy link

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 🫰🏻

@Docteh
Copy link

Docteh commented 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

@jktam
Copy link

jktam commented 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.

@Docteh
Copy link

Docteh commented May 1, 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 revoltchat/backend#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
Copy link

Docteh commented 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed improvement Areas that can be improved on
Projects
Status: 🕒 Backlog
Development

No branches or pull requests

10 participants