Hi,

I've been trying to host my own lemmy instance for a while. i've almost got it working (i think). But my problem now is that whenever i try to post something with a picture i get an error SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data. In firefox i get a 502 bad gateway error pointing to https://lemmy.emphisia.nl/pictrs/image I don't really know why because everything seems to be working

Sign in to add comment

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 :(

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.

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 :)