I have setup lemmy verse docker stack on my host 10.0.5.249:

https://join-lemmy.org/docs/administration/install_docker.html



My config files:

cat docker-compose.yml 
x-logging: &default-logging
 driver: "json-file"
 options:
   max-size: "50m"
   max-file: "4"

services:
 proxy:
   image: nginx:1-alpine
   ports:
     # Listen for outside connections on port 10633. You can freely change the left-side
     # number to a different port, eg using port 80 if you don't need a reverse proxy.
     - "10633:8536"
   volumes:
     - ./nginx_internal.conf:/etc/nginx/nginx.conf:ro,Z
     - ./proxy_params:/etc/nginx/proxy_params:ro,Z
   restart: always
   logging: *default-logging
   depends_on:
     - pictrs
     - lemmy-ui

 lemmy:
   image: dessalines/lemmy:0.19.19
   hostname: lemmy
   restart: always
   logging: *default-logging
   environment:
     - RUST_LOG="warn"
   volumes:
     - ./lemmy.hjson:/config/config.hjson:Z
   depends_on:
     - postgres
     - pictrs

 lemmy-ui:
   image: dessalines/lemmy-ui:0.19.19
   environment:
     - LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536
     - LEMMY_UI_LEMMY_EXTERNAL_HOST=lemmy.rmict.nl
     - LEMMY_UI_HTTPS=true
   volumes:
     - ./volumes/lemmy-ui/extra_themes:/app/extra_themes
   depends_on:
     - lemmy
   restart: always
   logging: *default-logging

 pictrs:
   image: asonix/pictrs:0.5.23
   # this needs to match the pictrs url in lemmy.hjson
   hostname: pictrs
   # 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=asd
     - RUST_BACKTRACE=full
     - PICTRS__MEDIA__VIDEO__VIDEO_CODEC=vp9
     - PICTRS__MEDIA__ANIMATION__MAX_WIDTH=256
     - PICTRS__MEDIA__ANIMATION__MAX_HEIGHT=256
     - PICTRS__MEDIA__ANIMATION__MAX_FRAME_COUNT=400
   user: 991:991
   volumes:
     - ./volumes/pictrs:/mnt:Z
   restart: always
   logging: *default-logging

 postgres:
   image: pgautoupgrade/pgautoupgrade:18-alpine
   hostname: postgres
   environment:
     - POSTGRES_USER=lemmy
     - POSTGRES_PASSWORD=asd
     - POSTGRES_DB=lemmy
   shm_size: 1g
   volumes:
     - ./volumes/postgres:/var/lib/postgresql:Z
     - ./customPostgresql.conf:/etc/postgresql.conf
   restart: always
   logging: *default-logging

 postfix:
   image: mwader/postfix-relay
   environment:
     - POSTFIX_myhostname=rmict.nl
   restart: "always"
   logging: *default-logging



 cat lemmy.hjson 
{
 # for more info about the config, check out the documentation
 # https://join-lemmy.org/docs/en/administration/configuration.html

 database: {
   host: postgres
   password: "asd"
   # Alternative way:
   #uri: "postgresql://lemmy:{{ postgres_password }}@postgres/lemmy"
 }
 hostname: "lemmy.rmict.nl"
 tls_enabled: true
 federation: {
   # Limit to the number of concurrent outgoing federation requests per target instance.
   # Set this to a higher value than 1 (e.g. 6) only if you have a huge instance (>10 activities
   # per second) and if a receiving instance is not keeping up.
   concurrent_sends_per_instance: 1
 }
 pictrs: {
   url: "http://pictrs:8080/"
   api_key: "asd"
 }
 email: {
   smtp_server: "10.0.5.253:26"
   smtp_from_address: "[email protected]"
   tls_type: "none"
 }
}







 cat nginx_internal.conf 
worker_processes auto;

events {
   worker_connections 1024;
}

http {
   # Docker internal DNS IP so we always get the newer containers without having to 
   # restart/reload the docker container / nginx configuration
   resolver 127.0.0.11 valid=5s;

   # set the real_ip when from docker internal ranges. Ensuring our internal nginx
   # container can always see the correct ips in the logs
   set_real_ip_from 10.0.0.0/8;
   set_real_ip_from 172.16.0.0/12;
   set_real_ip_from 192.168.0.0/16;

   # We construct a string consistent of the "request method" and "http accept header"
   # and then apply some simple regexp matches to that combination to decide on the
   # HTTP upstream we should proxy the request to.
   #
   # Example strings:
   #
   #   "GET:application/activity+json"
   #   "GET:text/html"
   #   "POST:application/activity+json"
   #
   # You can see some basic match tests in this regex101 matching this configuration
   # https://regex101.com/r/vwMJNc/1
   #
   # Learn more about nginx maps here http://nginx.org/en/docs/http/ngx_http_map_module.html
   map "$request_method:$http_accept" $proxpass {
       # If no explicit matches exists below, send traffic to lemmy-ui
       default "http://lemmy-ui:1234/";

       # GET/HEAD requests that accepts ActivityPub or Linked Data JSON should go to lemmy.
       #
       # These requests are used by Mastodon and other fediverse instances to look up profile information,
       # discover site information and so on.
       "~^(?:GET|HEAD):.*?application\/(?:activity|ld)\+json" "http://lemmy:8536/";

       # All non-GET/HEAD requests should go to lemmy
       #
       # Rather than calling out POST, PUT, DELETE, PATCH, CONNECT and all the verbs manually
       # we simply negate the GET|HEAD pattern from above and accept all possibly $http_accept values
       "~^(?!(GET|HEAD)).*:" "http://lemmy:8536/";
   }

   server {
       set $lemmy_ui "lemmy-ui:1234";
       set $lemmy "lemmy:8536";
       # this is the port inside docker, not the public one yet
       listen 1236;
       listen 8536;

       # change if needed, this is facing the public web
       server_name localhost;
       server_tokens off;

       # Upload limit, relevant for pictrs
       client_max_body_size 20M;

       # Send actual client IP upstream
       include proxy_params;

       # frontend general requests
       location / {
           proxy_pass $proxpass;
           rewrite ^(.+)/+$ $1 permanent;
       }

       # security.txt
       location = /.well-known/security.txt {
           proxy_pass "http://$lemmy_ui";
       }

       # backend
       location ~ ^/(api|pictrs|feeds|nodeinfo|.well-known|version|sitemap.xml) {
           proxy_pass "http://$lemmy";

           # Send actual client IP upstream
           include proxy_params;
       }
   }
}


cat proxy_params 
proxy_set_header Host $http_host;
# Needs to be proxy_add_x_forwarded_for, not remote_addr, which is the docker IP.
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;



I am able to access the url, and created a user and site.

However when i try to upload an avatar picture the following error occurs:
lemmy-1     | Starting HTTP server at 0.0.0.0:8536
lemmy-1     | 2026-06-15T23:17:00.998542Z  WARN lemmy_server::root_span_builder: InvalidUrl: InvalidUrl
lemmy-1     |    0: lemmy_api::local_user::save_settings::save_user_settings
lemmy-1     |            with data=Json(SaveUserSettings { show_nsfw: Some(true), blur_nsfw: Some(true), auto_expand: Some(false), theme: Some("browser"), default_sort_type: Some(Active), default_listing_type: Some(Local), interface_language: Some("en"), avatar: Some("https://lemmy.rmict.nl/pictrs/image/fc408328-eb8c-42c2-b8a5-3e0979aa66ce.png"), banner: None, display_name: None, email: Some(Sensitive), bio: None, matrix_user_id: None, show_avatars: Some(true), send_notifications_to_email: Some(false), bot_account: Some(false), show_bot_accounts: Some(true), show_read_posts: Some(true), discussion_languages: Some([]), open_links_in_new_tab: Some(false), infinite_scroll_enabled: None, post_listing_mode: None, enable_keyboard_navigation: None, enable_animated_images: None, collapse_bot_comments: None, show_scores: Some(false), show_upvotes: Some(true), show_downvotes: Some(true), show_upvote_percentage: Some(false) }) local_user_view=LocalUserView { local_user: LocalUser { id: LocalUserId(1), person_id: PersonId(2), password_encrypted: Sensitive, email: Some(Sensitive), show_nsfw: true, theme: "browser", default_sort_type: Active, default_listing_type: Local, interface_language: "en", show_avatars: true, send_notifications_to_email: false, show_scores: false, show_bot_accounts: true, show_read_posts: true, email_verified: false, accepted_application: false, totp_2fa_secret: None, open_links_in_new_tab: false, blur_nsfw: true, auto_expand: false, infinite_scroll_enabled: false, admin: true, post_listing_mode: List, totp_2fa_enabled: false, enable_keyboard_navigation: false, enable_animated_images: true, collapse_bot_comments: false, last_donation_notification: 2026-04-26T09:11:11.320845Z }, local_user_vote_display_mode: LocalUserVoteDisplayMode { local_user_id: LocalUserId(1), score: false, upvotes: true, downvotes: true, upvote_percentage: false }, person: Person { id: PersonId(2), name: "randy", display_name: None, avatar: None, banned: false, published: 2026-06-15T22:32:39.141645Z, updated: None, actor_id: DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/u/randy", query: None, fragment: None }), bio: None, local: true, private_key: Some(Sensitive), public_key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1uWJPvQkDueuj7sqHsiy\n9nP5cLk/jL5B8Zr685mCYEuvYzP6kQB4a1pFzAXBaLhUJs7usend3IK947Lv8qzX\nKGsDd9tSCrdRDt/nWGEd6n2ZlfA7CfB4tZRk6enP1ScEDmidGNAGJqR9TY57dsIv\not7iCtE/szleZlqsFeu1kFqXFMp/uNi+9NwR6Pj9P43uuj5MJn6bIv/ORDTXo1ea\nJZh8I8L86RXuJKhkAbZ7jUP3vz+gSnO1wVrf9Yg+DciweQ496mO+ximf8qhf3i//\nVJ323ao6it2fqKu5DepsJQe5g6u+szNMscyxhXPGMEa8ElRYKKMl3mOilWLEKZjK\nXwIDAQAB\n-----END PUBLIC KEY-----\n", last_refreshed_at: 2026-06-15T22:32:39.141645Z, banner: None, deleted: false, inbox_url: DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/u/randy/inbox", query: None, fragment: None }), shared_inbox_url: Some(DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/inbox", query: None, fragment: None })), matrix_user_id: None, bot_account: false, ban_expires: None, instance_id: InstanceId(1) }, counts: PersonAggregates { person_id: PersonId(2), post_count: 0, post_score: 0, comment_count: 0, comment_score: 0 } }
lemmy-1     |              at crates/api/src/local_user/save_settings.rs:33
lemmy-1     |    1: lemmy_server::root_span_builder::HTTP request
lemmy-1     |            with http.method=PUT http.scheme="https" http.host=lemmy.rmict.nl http.target=/api/v3/user/save_user_settings otel.kind="server" request_id=2282526c-8a99-443b-a3a2-b6369abe2f09
lemmy-1     |              at src/root_span_builder.rs:16
lemmy-1     | 2026-06-15T23:20:56.040574Z  WARN lemmy_server::root_span_builder: InvalidUrl: InvalidUrl
lemmy-1     |    0: lemmy_api::local_user::save_settings::save_user_settings
lemmy-1     |            with data=Json(SaveUserSettings { show_nsfw: Some(true), blur_nsfw: Some(true), auto_expand: Some(false), theme: Some("browser"), default_sort_type: Some(Active), default_listing_type: Some(Local), interface_language: Some("en"), avatar: Some("https://lemmy.rmict.nl/pictrs/image/66e68922-594a-4cbc-aff6-6fcccad2c3e2.png"), banner: None, display_name: None, email: Some(Sensitive), bio: None, matrix_user_id: None, show_avatars: Some(true), send_notifications_to_email: Some(false), bot_account: Some(false), show_bot_accounts: Some(true), show_read_posts: Some(true), discussion_languages: Some([]), open_links_in_new_tab: Some(false), infinite_scroll_enabled: None, post_listing_mode: None, enable_keyboard_navigation: None, enable_animated_images: None, collapse_bot_comments: None, show_scores: Some(false), show_upvotes: Some(true), show_downvotes: Some(true), show_upvote_percentage: Some(false) }) local_user_view=LocalUserView { local_user: LocalUser { id: LocalUserId(1), person_id: PersonId(2), password_encrypted: Sensitive, email: Some(Sensitive), show_nsfw: true, theme: "browser", default_sort_type: Active, default_listing_type: Local, interface_language: "en", show_avatars: true, send_notifications_to_email: false, show_scores: false, show_bot_accounts: true, show_read_posts: true, email_verified: false, accepted_application: false, totp_2fa_secret: None, open_links_in_new_tab: false, blur_nsfw: true, auto_expand: false, infinite_scroll_enabled: false, admin: true, post_listing_mode: List, totp_2fa_enabled: false, enable_keyboard_navigation: false, enable_animated_images: true, collapse_bot_comments: false, last_donation_notification: 2026-04-26T09:11:11.320845Z }, local_user_vote_display_mode: LocalUserVoteDisplayMode { local_user_id: LocalUserId(1), score: false, upvotes: true, downvotes: true, upvote_percentage: false }, person: Person { id: PersonId(2), name: "randy", display_name: None, avatar: None, banned: false, published: 2026-06-15T22:32:39.141645Z, updated: None, actor_id: DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/u/randy", query: None, fragment: None }), bio: None, local: true, private_key: Some(Sensitive), public_key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1uWJPvQkDueuj7sqHsiy\n9nP5cLk/jL5B8Zr685mCYEuvYzP6kQB4a1pFzAXBaLhUJs7usend3IK947Lv8qzX\nKGsDd9tSCrdRDt/nWGEd6n2ZlfA7CfB4tZRk6enP1ScEDmidGNAGJqR9TY57dsIv\not7iCtE/szleZlqsFeu1kFqXFMp/uNi+9NwR6Pj9P43uuj5MJn6bIv/ORDTXo1ea\nJZh8I8L86RXuJKhkAbZ7jUP3vz+gSnO1wVrf9Yg+DciweQ496mO+ximf8qhf3i//\nVJ323ao6it2fqKu5DepsJQe5g6u+szNMscyxhXPGMEa8ElRYKKMl3mOilWLEKZjK\nXwIDAQAB\n-----END PUBLIC KEY-----\n", last_refreshed_at: 2026-06-15T22:32:39.141645Z, banner: None, deleted: false, inbox_url: DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/u/randy/inbox", query: None, fragment: None }), shared_inbox_url: Some(DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/inbox", query: None, fragment: None })), matrix_user_id: None, bot_account: false, ban_expires: None, instance_id: InstanceId(1) }, counts: PersonAggregates { person_id: PersonId(2), post_count: 0, post_score: 0, comment_count: 0, comment_score: 0 } }
lemmy-1     |              at crates/api/src/local_user/save_settings.rs:33
lemmy-1     |    1: lemmy_server::root_span_builder::HTTP request
lemmy-1     |            with http.method=PUT http.scheme="https" http.host=lemmy.rmict.nl http.target=/api/v3/user/save_user_settings otel.kind="server" request_id=1f8019d0-7c5b-430d-9e94-c771031ce22a
lemmy-1     |              at src/root_span_builder.rs:16
lemmy-1     | 2026-06-15T23:21:22.844567Z  WARN lemmy_server::root_span_builder: InvalidUrl: InvalidUrl
lemmy-1     |    0: lemmy_api::local_user::save_settings::save_user_settings
lemmy-1     |            with data=Json(SaveUserSettings { show_nsfw: Some(true), blur_nsfw: Some(true), auto_expand: Some(false), theme: Some("browser"), default_sort_type: Some(Active), default_listing_type: Some(Local), interface_language: Some("en"), avatar: Some("https://lemmy.rmict.nl/pictrs/image/66e68922-594a-4cbc-aff6-6fcccad2c3e2.png"), banner: None, display_name: None, email: Some(Sensitive), bio: None, matrix_user_id: None, show_avatars: Some(true), send_notifications_to_email: Some(false), bot_account: Some(false), show_bot_accounts: Some(true), show_read_posts: Some(true), discussion_languages: Some([]), open_links_in_new_tab: Some(false), infinite_scroll_enabled: None, post_listing_mode: None, enable_keyboard_navigation: None, enable_animated_images: None, collapse_bot_comments: None, show_scores: Some(false), show_upvotes: Some(true), show_downvotes: Some(true), show_upvote_percentage: Some(false) }) local_user_view=LocalUserView { local_user: LocalUser { id: LocalUserId(1), person_id: PersonId(2), password_encrypted: Sensitive, email: Some(Sensitive), show_nsfw: true, theme: "browser", default_sort_type: Active, default_listing_type: Local, interface_language: "en", show_avatars: true, send_notifications_to_email: false, show_scores: false, show_bot_accounts: true, show_read_posts: true, email_verified: false, accepted_application: false, totp_2fa_secret: None, open_links_in_new_tab: false, blur_nsfw: true, auto_expand: false, infinite_scroll_enabled: false, admin: true, post_listing_mode: List, totp_2fa_enabled: false, enable_keyboard_navigation: false, enable_animated_images: true, collapse_bot_comments: false, last_donation_notification: 2026-04-26T09:11:11.320845Z }, local_user_vote_display_mode: LocalUserVoteDisplayMode { local_user_id: LocalUserId(1), score: false, upvotes: true, downvotes: true, upvote_percentage: false }, person: Person { id: PersonId(2), name: "randy", display_name: None, avatar: None, banned: false, published: 2026-06-15T22:32:39.141645Z, updated: None, actor_id: DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/u/randy", query: None, fragment: None }), bio: None, local: true, private_key: Some(Sensitive), public_key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1uWJPvQkDueuj7sqHsiy\n9nP5cLk/jL5B8Zr685mCYEuvYzP6kQB4a1pFzAXBaLhUJs7usend3IK947Lv8qzX\nKGsDd9tSCrdRDt/nWGEd6n2ZlfA7CfB4tZRk6enP1ScEDmidGNAGJqR9TY57dsIv\not7iCtE/szleZlqsFeu1kFqXFMp/uNi+9NwR6Pj9P43uuj5MJn6bIv/ORDTXo1ea\nJZh8I8L86RXuJKhkAbZ7jUP3vz+gSnO1wVrf9Yg+DciweQ496mO+ximf8qhf3i//\nVJ323ao6it2fqKu5DepsJQe5g6u+szNMscyxhXPGMEa8ElRYKKMl3mOilWLEKZjK\nXwIDAQAB\n-----END PUBLIC KEY-----\n", last_refreshed_at: 2026-06-15T22:32:39.141645Z, banner: None, deleted: false, inbox_url: DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/u/randy/inbox", query: None, fragment: None }), shared_inbox_url: Some(DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/inbox", query: None, fragment: None })), matrix_user_id: None, bot_account: false, ban_expires: None, instance_id: InstanceId(1) }, counts: PersonAggregates { person_id: PersonId(2), post_count: 0, post_score: 0, comment_count: 0, comment_score: 0 } }
lemmy-1     |              at crates/api/src/local_user/save_settings.rs:33
lemmy-1     |    1: lemmy_server::root_span_builder::HTTP request
lemmy-1     |            with http.method=PUT http.scheme="https" http.host=lemmy.rmict.nl http.target=/api/v3/user/save_user_settings otel.kind="server" request_id=dfcc8d4a-b7b4-4cb4-ab8a-983ad0a6b821
lemmy-1     |              at src/root_span_builder.rs:16
lemmy-1     | 2026-06-15T23:24:24.835212Z  WARN lemmy_server::root_span_builder: InvalidUrl: InvalidUrl
lemmy-1     |    0: lemmy_api::local_user::save_settings::save_user_settings
lemmy-1     |            with data=Json(SaveUserSettings { show_nsfw: Some(true), blur_nsfw: Some(true), auto_expand: Some(false), theme: Some("browser"), default_sort_type: Some(Active), default_listing_type: Some(Local), interface_language: Some("en"), avatar: Some("https://lemmy.rmict.nl/pictrs/image/e467eb12-a3b3-48cf-92d6-f1e9286ce0b2.jpeg"), banner: None, display_name: None, email: Some(Sensitive), bio: None, matrix_user_id: None, show_avatars: Some(true), send_notifications_to_email: Some(false), bot_account: Some(false), show_bot_accounts: Some(true), show_read_posts: Some(true), discussion_languages: Some([]), open_links_in_new_tab: Some(false), infinite_scroll_enabled: None, post_listing_mode: None, enable_keyboard_navigation: None, enable_animated_images: None, collapse_bot_comments: None, show_scores: Some(false), show_upvotes: Some(true), show_downvotes: Some(true), show_upvote_percentage: Some(false) }) local_user_view=LocalUserView { local_user: LocalUser { id: LocalUserId(1), person_id: PersonId(2), password_encrypted: Sensitive, email: Some(Sensitive), show_nsfw: true, theme: "browser", default_sort_type: Active, default_listing_type: Local, interface_language: "en", show_avatars: true, send_notifications_to_email: false, show_scores: false, show_bot_accounts: true, show_read_posts: true, email_verified: false, accepted_application: false, totp_2fa_secret: None, open_links_in_new_tab: false, blur_nsfw: true, auto_expand: false, infinite_scroll_enabled: false, admin: true, post_listing_mode: List, totp_2fa_enabled: false, enable_keyboard_navigation: false, enable_animated_images: true, collapse_bot_comments: false, last_donation_notification: 2026-04-26T09:11:11.320845Z }, local_user_vote_display_mode: LocalUserVoteDisplayMode { local_user_id: LocalUserId(1), score: false, upvotes: true, downvotes: true, upvote_percentage: false }, person: Person { id: PersonId(2), name: "randy", display_name: None, avatar: None, banned: false, published: 2026-06-15T22:32:39.141645Z, updated: None, actor_id: DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/u/randy", query: None, fragment: None }), bio: None, local: true, private_key: Some(Sensitive), public_key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1uWJPvQkDueuj7sqHsiy\n9nP5cLk/jL5B8Zr685mCYEuvYzP6kQB4a1pFzAXBaLhUJs7usend3IK947Lv8qzX\nKGsDd9tSCrdRDt/nWGEd6n2ZlfA7CfB4tZRk6enP1ScEDmidGNAGJqR9TY57dsIv\not7iCtE/szleZlqsFeu1kFqXFMp/uNi+9NwR6Pj9P43uuj5MJn6bIv/ORDTXo1ea\nJZh8I8L86RXuJKhkAbZ7jUP3vz+gSnO1wVrf9Yg+DciweQ496mO+ximf8qhf3i//\nVJ323ao6it2fqKu5DepsJQe5g6u+szNMscyxhXPGMEa8ElRYKKMl3mOilWLEKZjK\nXwIDAQAB\n-----END PUBLIC KEY-----\n", last_refreshed_at: 2026-06-15T22:32:39.141645Z, banner: None, deleted: false, inbox_url: DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/u/randy/inbox", query: None, fragment: None }), shared_inbox_url: Some(DbUrl(Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("lemmy.rmict.nl")), port: None, path: "/inbox", query: None, fragment: None })), matrix_user_id: None, bot_account: false, ban_expires: None, instance_id: InstanceId(1) }, counts: PersonAggregates { person_id: PersonId(2), post_count: 0, post_score: 0, comment_count: 0, comment_score: 0 } }
lemmy-1     |              at crates/api/src/local_user/save_settings.rs:33
lemmy-1     |    1: lemmy_server::root_span_builder::HTTP request
postgres-1  | PostgreSQL Database directory appears to contain a 




Message in browser:

Tribute is null, importing... client.js:2:927432
The Notification permission may only be requested from inside a short running user-generated event handler. settings
XHRPUT
https://lemmy.rmict.nl/api/v3/user/save_user_settings
[HTTP/2 400  7ms]

    
auto_expand    false
avatar    "https://lemmy.nu.nl/pictrs/image/2a8a24cc-6f85-445f-923d-b3c75cddcc80.jpeg"
blur_nsfw    true
bot_account    false
default_listing_type    "Local"
default_sort_type    "Active"
discussion_languages    []
email    "[email protected]"
interface_language    "en"
open_links_in_new_tab    false
send_notifications_to_email    false
show_avatars    true
show_bot_accounts    true
show_downvotes    true
show_nsfw    true
show_read_posts    true
show_scores    false
show_upvote_percentage    false
show_upvotes    true
theme    "browser"



Tribute is null, importing... client.js:2:927432
The Notification permission may only be requested from inside a short running user-generated event handler. settings
XHRPUT
https://lemmy.rmict.nl/api/v3/user/save_user_settings
[HTTP/2 400  7ms]

    
error    "invalid_url"



I am able to access the picture on https://lemmy.rmict.nl/pictrs/image/2a8a24cc-6f85-445f-923d-b3c75cddcc80.jpeg 

But it just does not save the setting





I have Nginx proxy manager in front of it but this just forwards to the internal proxy port: 10633

What am i missing, i have had this issue on a newly installed instance and i am unable to find a fix. 
  • randymartin@lemmy.worldOP
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    1 day ago

    The bug report — this is genuinely thorough and will let a maintainer pinpoint it fast:

    Title: InvalidUrl on save_user_settings for any URL field (avatar/banner) — valid same-host URL, 0.19.19 Fresh 0.19.19 docker install. Saving any URL field (avatar, banner) fails HTTP 400 invalid_url at crates/api/src/local_user/save_settings.rs:33. Text fields (bio, display_name) save fine — so it’s isolated to URL validation, not auth or the transaction. The avatar URL is https://lemmy.rmict.nl/pictrs/image/<id>.png — correct host, no port, valid syntax. The image uploads to pictrs successfully and is reachable. Ruled out:

    curl from inside the lemmy container reaches the URL (405 on HEAD, allow: GET) local_site_url_blocklist empty; slur_filter_regex empty instance domain (id=1) = lemmy.rmict.nl (matches) pictrs url = http://pictrs:8080/ (no trailing slash) image_mode tested: default and None — no change Reverse proxy Host forced to lemmy.rmict.nl, X-Forwarded-Proto https — no change Text-only settings save successfully

    Setup: NPM (separate host) terminates TLS → http://<host>:10633 → bundled nginx → lemmy:8536. tls_enabled: true. Debug log shows only the wrapped InvalidUrl: InvalidUrl with no underlying cause. What at save_settings.rs:33 rejects a syntactically valid, reachable, same-host URL?

    • Dessalines@lemmy.mlM
      link
      fedilink
      arrow-up
      1
      ·
      20 hours ago

      Its hard to say, but its probably an issue with nginx proxy mananger, doing some wrong routing on images. I couldn’t even access the images above.