I’m interested in running Lemmy on an ARM64 host, mostly just for fun and because it’s possible.
I’ve tried a couple of things without getting it right yet:
Building from scratch on Ubuntu 20.04 This went quite well but I was unable to get pict-rs working, so there was no image hosting. I followed this guide: https://join-lemmy.org/docs/administration/from_scratch.html I had to build imagemagick to get the ARM64 binary, however pict-rs did not run. Is it correct that it’s included with the lemmy-server binary or am I understanding how it works wrong?
Using Docker images I was able to get Lemmy up and running using 0.17.3 ARM64 docker images (unfortunately 0.17.4 images don’t exist yet). I set up an nginx reverse proxy on the host and was able to access the instance OK, however there was no connectivity between my instance and external sites. Looking in the logs I saw timeout errors:
lemmy_1 | LemmyError { message: None, inner: Request error: error sending request for url (https://kbin.social/u/Emptiness): operation timed out
lemmy_1 |
lemmy_1 | Caused by:
lemmy_1 | 0: error sending request for url (https://kbin.social/u/Emptiness): operation timed out
So I was wondering if anybody had a guide out there to hosting Lemmy (preferably 0.17.4) on an ARM64 host, either by building it from scratch or by using Docker images. Or any other method really.
That second error is not a matter of your ARM64 architecture, but a networking thing. If you launch a bash shell in your container, does any network activity work? That will tell you if it’s the container, or just Lemmy.
I thought of trying that, but the lemmy container doesn’t have ping/wget/curl, unless there is a way to test this without those tools.
I have the same errors regarding kbin.social with my instances running on
x86_64
, and have yet been successful in federating with them on0.17.4
. I am subscribed to 4 of their “magazines”, but cannot get content to start coming in, and have similar errors:LemmyError { message: None, inner: Request error: error sending request for url (https://kbin.social/u/Larvitar): operation timed out
lemmy.ml instances seem to get stuck on pending subscription as well. Other instances I have subscribed to have no issue. Sorry this doesn’t answer your
arm64
question, but just wanted to share those errors aren’t limited toarm64
.The easiest would probably be waiting for official ARM containers for 0.17.4. You could also build the containers yourself, the dockerfile should be somewhere in the Lemmy repositories.
Also, nothing’s stopping you from building Lemmy from scratch and having Postgres and pictrs in container. Just make sure to forward the necessary ports.
No idea what the error is unfortunately. Are you sure you set all ENV and config variables correctly?
I might try building from scratch again and running pict-rs in a docker container.
I built my own arm64 v0.17.4 docker image. It’s available on docker hub:
mpatton/lemmy:0.17.4-linux-arm
mpatton/lemmy-ui:0.17.4-linux-arm
What are you using as your reverse proxy?
I ended up using your images and it’s working great. Currently playing around with 0.18.0-rc.5
The default docker-compose.yml from the guide has the docker lemmy network set as internal. You need to make it not an Internal network.
Source: Did the same thing with the same problem, on Oracle ARM64 VPS.
I had to work out all of the issues myself to get it working on my RaspberryPi 4. For this error, did you add a network to your “lemmy” container that would allow it access to the internet?
https://github.com/LemmyNet/lemmy/issues/3167#issuecomment-1595846910
I’m still using 0.17.3, btw. I haven’t checked if 0.17.4 for arm64 is out yet.
Edit: Just checked and it looks like they’re just skipping past 0.17.4 and moving on to 0.18.0 on their docker hub. https://hub.docker.com/r/dessalines/lemmy/tags
My script should get you running 0.17.4 on ARM64:
https://github.com/ubergeek77/Lemmy-Easy-Deploy
It will take a while to compile, since no Docker images are available, but otherwise it should work.
It does the reverse proxy and HTTPS setup for you, no need for Nginx. If the reverse proxy is your problem, maybe this will help?
I don’t have a lot of testers for ARM64, but I have heard of success, so hopefully it will work for you. And if you have any bugs, I’d be happy to fix them for the benefit of everyone :)
I’ve just given the script a go and it seems to have failed
=> => transferring context: 23.07MB 0.2s => [lemmy lemmy 2/6] RUN apt-get update && apt-get -y install --no-install-recommends postgresql-client libc6 libssl1.1 ca-certificates && rm -rf /var/lib/apt/lists/* 18.7s => [lemmy builder 2/7] RUN apt-get update && apt-get -y install --no-install-recommends libssl-dev pkg-config libpq-dev git && rm -rf /var/lib/apt/lists/* 14.7s => [lemmy lemmy 3/6] RUN addgroup --gid 1000 lemmy 0.5s => [lemmy lemmy 4/6] RUN useradd --no-create-home --shell /bin/sh --uid 1000 --gid 1000 lemmy 0.4s => [lemmy builder 3/7] WORKDIR /app 0.0s => [lemmy builder 4/7] COPY ./ ./ 0.2s => [lemmy builder 5/7] RUN echo "pub const VERSION: &str = "$(git describe --tag)";" > "crates/utils/src/version.rs" 0.2s => ERROR [lemmy builder 6/7] RUN cargo build --release 399.8s
Altough the building timer is still running
[+] Building 761.3s (15/18)
Is there somewhere I can access logs to see what happened?
Edit: Managed to screenshot the error prior to it disappearing
Well, that’s a new one. Never seen a build fail before.
I see some issues on Lemmy’s tracker about builds failing due to network issues. Something about not being able to clone files it needs for the build.
Can you try the build again, and if this happens consistently, file an issue on my tracker? I’ll try to reproduce the issue and fix it if possible.