The typical beginner error is that their pictrs folder is not owned by the 991 user from inside the container.
Otherwise... you need to provide more details about your setup.
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.
Beginning of January 1st 2024 this rule WILL be enforced. Posts that are not tagged will be warned and if not fixed within 24h then removed!
The typical beginner error is that their pictrs folder is not owned by the 991 user from inside the container.
Otherwise... you need to provide more details about your setup.
yeah I've already done that, I did sudo chown -r 991:991 volumes/pictrs
.
what details do you need about my setup?
edit: I do know another program is already using port 8080 on my host machine, or does that not matter when it's running inside docker?
Depends. If it runs in a separated docker network then not. Pict-rs only needs to be reachable by the lemmy backend and have out-going internet access. But I would try changing the port as I think the official docker-compose script removed the internal network for some reason, not sure (I am using my own Podman based setup).
it does appear to be in its own network (according to portainer) the error log in the lemmy container is
2023-07-23T13:58:44.850844Z WARN lemmy_server::root_span_builder: Request error: error sending request for url (http://127.0.0.1:8080/image): error trying to connect: tcp connect error: Connection refused (os error 111)
Reqwest(reqwest::Error { kind: Request, url: Url { scheme: "http", cannot_be_a_base: false, username: "", password: None, host: Some(Ipv4(127.0.0.1)), port: Some(8080), path: "/image", query: None, fragment: None }, source: hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })) })
no errors appear when i look at the pictrs log. I don't know why it says password: None
as i've set a password
Hmm not sure. The api-key ENV variable changed with pict-rs 0.4 to PICTRS__SERVER__API_KEY
, maybe double-check that this is correctly updated and also the same as in your lemmy.hjson config file.
PICTRS__SERVER__API_KEY
the config in docker compose looks like
pictrs:
image: asonix/pictrs:0.4.0
# this needs to match the pictrs url in lemmy.hjson
hostname: 127.0.0.1
# we can set options to pictrs like this, here we set max. image size and forced format for conversion
# entrypoint: /sbin/tini -- /usr/local/bin/pict-rs -p /mnt -m 4 --image-format webp
environment:
- PICTRS_OPENTELEMETRY_URL=http://otel:4137
- PICTRS__SERVER__API_KEY=****
- RUST_LOG=debug
- RUST_BACKTRACE=full
- PICTRS__MEDIA__VIDEO_CODEC=vp9
- PICTRS__MEDIA__GIF__MAX_WIDTH=256
- PICTRS__MEDIA__GIF__MAX_HEIGHT=256
- PICTRS__MEDIA__GIF__MAX_AREA=65536
- PICTRS__MEDIA__GIF__MAX_FRAME_COUNT=400
user: 991:991
and in the config it is
pictrs: {
url: "http://127.0.0.1:8080/"
api_key: "****"
}
the password on both is the same so i don't see what is going wrong :(
I haven't done this setup myself, but the hostname being 127.0.0.1 is suspect, especially since it mentions a pictrs URL config in lemmy.
yeah i changed that because i was testing. but i now realize that was dumb. ive change both the hostname and the url to pictrs. OMG that just worked..... i feel so dumb rn. it is strange tho because that wasnt working before. Thanks for all the help :)
Well, did you try changing the 8080 port to rule that out?
hmm after looking i dont even see an option to change the port (in pictrs). it seems stuck at 8080, but since its running on its own network, i doubt it would matter.
just change the port the container exposes, like -p 8081:8080