Hello, I’ve been trying to host my own lemmy instance for a little while now but have yet to be successful.

I recently had my lemmy instance running but i could not find other communities, so i decided to remove everything and try again. Now however when i try to create an account or log in i get the error 404 for the file /api/v3/user/loginand nothing happens.

I’ve tried removing everything again and starting again but it is still not working

in the lemmy docker container i get the following error

2023-07-06T12:27:55.845049Z  WARN lemmy_server::root_span_builder: couldnt_find_that_username_or_email: Record not found
   1: lemmy_server::root_span_builder::HTTP request
   0: lemmy_api::local_user::login::perform
             at crates/api/src/local_user/login.rs:16
           with http.method=POST http.scheme="http" http.host=lemmy.emphisia.nl http.target=/api/v3/user/login otel.kind="server" request_id=7896c156-ba9f-42cd-8f1a-c0233c3018a7
LemmyError { message: Some("couldnt_find_that_username_or_email"), inner: Record not found, context: SpanTrace [{ target: "lemmy_api::local_user::login", name: "perform", fields: "self=Login { username_or_email: Sensitive, password: Sensitive, totp_2fa_token: None }", file: "crates/api/src/local_user/login.rs", line: 16 }, { target: "lemmy_server::root_span_builder", name: "HTTP request", fields: "http.method=POST http.scheme=\"http\" http.host=lemmy.emphisia.nl http.target=/api/v3/user/login otel.kind=\"server\" request_id=7896c156-ba9f-42cd-8f1a-c0233c3018a7", file: "src/root_span_builder.rs", line: 16 }] }
           with self=Login { username_or_email: Sensitive, password: Sensitive, totp_2fa_token: None }
             at src/root_span_builder.rs:16

edit: i just managed to log in, however the federation does not seem to be working. None show up in the communities tab and if i look for any communities i get no results and this in the log

2023-07-06T14:09:32.699162Z  WARN lemmy_server::root_span_builder: couldnt_find_object: Failed to resolve actor via webfinger

   0: lemmy_apub::fetcher::search::search_query_to_object_id

             at crates/apub/src/fetcher/search.rs:19

   1: lemmy_apub::api::resolve_object::perform

           with self=ResolveObject { q: "!asklemmy", auth: Sensitive }

             at crates/apub/src/api/resolve_object.rs:21

   2: lemmy_server::root_span_builder::HTTP request

           with http.method=GET http.scheme="http" http.host=lemmy.emphisia.nl http.target=/api/v3/resolve_object otel.kind="server" request_id=34386e88-9099-4d83-a6a2-360ee7924064

             at src/root_span_builder.rs:16

LemmyError { message: Some("couldnt_find_object"), inner: Failed to resolve actor via webfinger, context: SpanTrace [{ target: "lemmy_apub::fetcher::search", name: "search_query_to_object_id", file: "crates/apub/src/fetcher/search.rs", line: 19 }, { target: "lemmy_apub::api::resolve_object", name: "perform", fields: "self=ResolveObject { q: \"!asklemmy\", auth: Sensitive }", file: "crates/apub/src/api/resolve_object.rs", line: 21 }, { target: "lemmy_server::root_span_builder", name: "HTTP request", fields: "http.method=GET http.scheme=\"http\" http.host=lemmy.emphisia.nl http.target=/api/v3/resolve_object otel.kind=\"server\" request_id=34386e88-9099-4d83-a6a2-360ee7924064", file: "src/root_span_builder.rs", line: 16 }] }

it doesn’t matter what i search, this always happens

      • youpie_temp@reddthat.comOP
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        1 year ago

        is this one for the internal Lemmy nginx or the reverse proxy? edit: the name makes that quite clear

      • youpie_temp@reddthat.comOP
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        I am actually already running that config in the internal nginx, but i’ve never changed anything about it. what do i need to specify when they say “# this needs to map to the lemmy (server) docker service hostname” do they want the name of the docker container, and do they want the internal or external port?

        • Andreas
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          I don’t use NGINX as my proxy server, but it’s a bit strange that you would need two configs for this while mine runs perfectly with one config and two open ports (:8536 for Lemmy-BE and :1234 for Lemmy-UI). And why are you using different versions of Lemmy-BE (18.1-rc9) and Lemmy-UI (18.1-rc4)?

          If you are using the default docker-compose.yml on the Lemmy repo, that part of the NGINX config uses https:// + the name of the Docker containers. And you always give NGINX the external port (the number on the right side of the colon defined in ports:, like 1234 in 1234:5678). The port on the left is only known to the container the port is defined for.

          If it’s still broken after you correct the NGINX config, what are your docker-compose.yml and config.hjson like? There’s several versions of them floating around and you might have combined incompatible versions with each other.

          • youpie_temp@reddthat.comOP
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 year ago

            according to portainer, no other docker containers are using ports, so i don’t know what ports to set them as. I assume they are communicating over an internal network and the nginx is the only open external port.

            I am using two nginx servers because one nginx server is used by lemmy to give me one port to access. And the other one i use to set up my reverse proxy so that i can host more than one service on my server.

            I dont know why i have different versions of the ui and backend. I am just using the latest version avalible on the docker website.

            My docker compose file looks like this and the lemmy config file looks like this i got this config from here because i was looking for a way to correctly set-up my email because de documentation about the config file is really bad. But when using the default config file (found here).

            • Andreas
              link
              fedilink
              English
              arrow-up
              1
              ·
              1 year ago

              Yeah, the config file on the documentation sucks. I had to poke through several discussions on /c/selfhosting to find a config that wasn’t the extremely minimal one linked in the documentation. Your config.hjson is fine from what I can tell, although I’m not sure why you censored the hostname there as it’s supposed to be lemmy.emphisia.nl and not anything confidential.

              Honestly, I don’t have enough understanding of NGINX to debug its config, so I’ll just share my docker-compose.yml for leddit.danmark.party which worked correctly and federated out of the box, with a few adjustments to match your deployment. Note that you’ll have to tear down your existing deployment if you want to use this docker-compose.yml because they use the same ports.

              I should probably self-host my own pastebin
              version: "3.9"
              x-logging:
                &default-logging
                options:
                  max-size: '10m'
                driver: json-file
              
              services:
                caddy:
                  image: caddy:2
                  volumes:
                    - ./volumes/caddy:/data
                    - ./volumes/caddy:/config
                  # See Caddy's documentation for customizing this line
                  # https://caddyserver.com/docs/quick-starts/reverse-proxy
                  command:
                    - /bin/sh
                    - -c
                    - |
                      cat <<EOF > /etc/caddy/Caddyfile && caddy run --config /etc/caddy/Caddyfile
                      
                      {
                        debug
                      }
                      
                      (common) {
                      	encode gzip
                      	header {
                      		-Server
                      		Strict-Transport-Security "max-age=31536000; include-subdomains;"
                      		X-XSS-Protection "1; mode=block"
                      		X-Frame-Options "DENY"
                      		X-Content-Type-Options nosniff
                      		Referrer-Policy no-referrer-when-downgrade
                      		X-Robots-Tag "none"
                      	}
                      }       
                      
                      # Lemmy instance
                      lemmy.emphisia.nl {
                        log
                        import common
                        reverse_proxy http://lemmy-ui:1234 # lemmy-ui
                        
                        @lemmy {
                      		path /api/*
                      		path /pictrs/*
                      		path /feeds/*
                      		path /nodeinfo/*
                      		path /.well-known/*
                      	}
                       
                       	@lemmy-hdr {
                      		header Accept application/*
                      	}
                        
                        handle @lemmy {
                          reverse_proxy http://lemmy:8085 # lemmy
                        }
                        
                        handle @lemmy-hdr {
                          reverse_proxy http://lemmy:8085
                        }
                        
                        @lemmy-post {
                      		method POST
                      	}
                      
                      	handle @lemmy-post {
                      		reverse_proxy http://lemmy:8085
                      	}
                      }
                      EOF
                  lemmy:
                    image: dessalines/lemmy:0.18.1-rc.9
                    ports:
                      - 8085:8536
                    volumes:
                      - ./lemmy.hjson:/config/config.hjson
                    depends_on:
                      - postgres
                      - pictrs
                    restart: always
                    logging: *default-logging
                    
                  lemmy-ui:
                    image: dessalines/lemmy-ui:0.18.1-rc.9
                    ports:
                     - 1234:1234
                    environment:
                      - LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8085
                      - LEMMY_UI_LEMMY_EXTERNAL_HOST=localhost:1236
                    depends_on:
                      - lemmy
                    volumes:
                      - ./volumes/lemmy-ui/extra_themes:/app/extra_themes
                    restart: always
                    logging: *default-logging
                 
                  postgres:
                    image: postgres:15-alpine
                    ports:
                      - 5432:5432
                    environment:
                      - POSTGRES_USER=MyPostgresUser
                      - POSTGRES_DB=MyPostgresDb
                      - POSTGRES_PASSWORD=MyPostgresPassword
                    volumes:
                      - ./volumes/postgres:/var/lib/postgresql/data
                    restart: always
                    logging: *default-logging
                    
                  pictrs:
                    image: asonix/pictrs:0.4.0-rc.7
                    user: 991:991
                    hostname: pictrs
                    environment:
                      - 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
                    volumes:
                      - ./volumes/pictrs:/mnt
                    restart: always
                    logging: *default-logging
              	  
                  postfix:
                    image: mwader/postfix-relay
                    environment:
                     - POSTFIX_myhostname=lemmy.emphisia.nl
                    restart: "always"
                    logging: *default-logging
              
              • youpie_temp@reddthat.comOP
                link
                fedilink
                English
                arrow-up
                1
                ·
                1 year ago

                thank you very much for your config file, however on pasting it and running it, i get the error

                ERROR: The Compose file './docker-compose.yml' is invalid because:
                Unsupported config option for services.caddy: 'lemmy'
                
                  • youpie_temp@reddthat.comOP
                    link
                    fedilink
                    English
                    arrow-up
                    1
                    ·
                    1 year ago

                    thank you, the config now runs, unfortunately i am now getting a bad gateway when visiting the website. Also in the logs i see two errors that catch my eye thread 'main' panicked at 'Failed to load settings file, see documentation (https://join-lemmy.org/docs/en/administration/configuration.html): LemmyError { message: None, inner: Is a directory (os error 21), context: SpanTrace [] }', crates/utils/src/settings/mod.rs:20:20 and caddy_1 | {"level":"error","ts":1688725909.314515,"logger":"http.acme_client","msg":"challenge failed","identifier":"lemmy.emphisia.nl","challenge_type":"http-01","problem":{"type":"","title":"","detail":"","instance":"","subproblems":[]}}

                    Also according to portainer, no ports are open on the caddy server. I have never used caddy. Thank you btw for trying to help me :))

        • ActuallyRuben@actuallyruben.nl
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          Yes, the hostname of a docker container is the name you set in the docker-compose file. IIRC the port should be the internal port.