mirror of
https://github.com/stoatchat/self-hosted.git
synced 2026-07-21 04:25:24 -04:00
feat(arm64): Add support for arm64. #24
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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.
@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 amd64After that just follow the Quick Start tutorial.
@RedstoneWizard08 commented on GitHub (Sep 12, 2022):
Yay!
@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.
@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
@RedstoneWizard08 commented on GitHub (Sep 18, 2022):
Ok, good.
@eternalflamestudios commented on GitHub (Mar 12, 2024):
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 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.
@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.
@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
-> No matching manifest for linux/arm64/v8
-> exec format error
-> 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 commented on GitHub (Nov 13, 2024):
Edited OP, this should only affect the web client now. Backend has arm64 support across all services.
@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 🫰🏻
@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/amd64in compose.yml), and for mongodb I needed to run a different container from https://github.com/themattman/mongodb-raspberrypi-dockerFor 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 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/mongotoarm64v8/mongo, or addplatform: arm64ORplatform:arm64/v8(check the tags).I also commented out the services
webandcrond, 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 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/basecontainer 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 (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
@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?
@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