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?

      • 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.

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

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

                    Oh shit, I forgot that your Caddy would be running on a bridge network by default because mine is on the host network where all ports are already exposed to it! (It’s generally a bad idea to use the host network, so don’t do this if you’re only using Caddy with containers on the same network) I edited the Gist to expose 80 and 443 for HTTP/S on that container, the updated file uses the same Github link. Really sorry about that!