I’m trying to get Lemmy up and running on an Ubuntu 22.04 host. I’ve followed this guide supplemented by googling.

I can actually get to the front end, but it gives me “There was an error on the server.” When I dig into the logs, I see this:

"thread 'main' panicked at 'Error connecting to postgres://lemmy:<my pg password>@postgres:5432/lemmy: FATAL:  password authentication failed for user \"lemmy\"\n","stream":"stderr","time":"2023-06-26T03:14:17.47460915Z"}

The only thing I can find about this error related to Lemmy is this thread, which indicates that the password was not defined in the docker-compose.yml file prior to starting the containers. I have since redone the configuration three times, each time deleting the volumes folder and double-checking that my postgre password is correct both in docker-compose.yml and lemmy.hjson.

Any ideas what might be the problem? Thank you kindly for any help you can provide!

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

    First of all, make sure the PostgreSQL username matches as well.

    Does your password contain any special characters such as quotes, dollar signs or backslashes? They can have special meanings in yaml, resulting in the password being different from what you’d expect.

    • tkohhh@waveform.socialOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      Username definitely matches!

      And yes, I have several special characters, but the password is surrounded by single quotes in docker-compose.yml, so that should not matter, right?

        • tkohhh@waveform.socialOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          1 year ago

          This makes sense, and I do have a dollar sign in my password…

          However, I have confirmed that postgres does in fact parse the password correctly, as I can log in with the defined username/password combo directly using psql

          So I think that disproves this theory, doesn’t it?

          edit: I tried getting rid of the dollar sign just in case… unfortunately I’m still getting the same error

  • MarsAgainstVenus@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Are you sure you don’t have a return character in the user name after “lemmy” accidentally? I haven’t set up an instance but it looks like that could be your issue.

  • Max-P@lemmy.max-p.me
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

    You can try setting a different password, maybe it’s got a character in it that messes with things. Or try URL-encoding the password in lemmy.hjson.

    You can also use a PostgreSQL client like the psql command line tool or a full fat DB client like DBeaver and try connecting to it and see if it accepts your password or not.

    Example with just Docker and the PostgreSQL container you’re already running:

    max-p@lemmy-host ~/lemmy % docker exec -it lemmy-postgres-1 /bin/bash
    postgres:/# psql -h 172.16.32.5 -U lemmy -W
    Password: 
    psql (15.3)
    Type "help" for help.
    
    lemmy=# \dt
                      List of relations
     Schema |            Name            | Type  | Owner 
    --------+----------------------------+-------+-------
     public | __diesel_schema_migrations | table | lemmy
    [... more tables ...]
    

    It’ll at least give you pointers as to where the issue lies: on the database side or lemmy’s side.

    • tkohhh@waveform.socialOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      Thank you for enlightening me on the -W option in psql. I have successfully logged in using the expected password for lemmy. This points to something with the connection string. According to the error log, the connection string being used is:

      postgres://lemmy:<my percent-encoded password>@postgres:5432/lemmy
      

      As far as I can tell, the percent encoding is correct. Any ideas how to troubleshoot this further?

      • Max-P@lemmy.max-p.me
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        Yeah the name you want for the database host is postgres, or whatever the container is named in the docker-compose.yml. The full name of what the container ends up being named on the host (usually, lemmy-postgres-1 or something) doesn’t matter, it’s its internal name that’s important.

        That you get a password error specifically also suggests it is communicating with it properly otherwise the error would be connection refused or connection timeout or something similar.

        Maybe try a very simple password temporarily like test, rebuild the postgres container/delete the volumes and see if it works. If it still doesn’t work you have more troubleshooting to do, if it works then you know the password is tripping something somewhere.

        • tkohhh@waveform.socialOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          Yeah the name you want for the database host is postgres, or whatever the container is named in the docker-compose.yml.

          I was curious about this, and it turns out both work. I tested by pinging both postgres and lemmy_postgres_1, and both responded with the same IP address. Good to know, but I did go ahead and change it back to postgres

          Maybe try a very simple password temporarily like test, rebuild the postgres container/delete the volumes and see if it works.

          I did this, and I’m still getting the same error, so obviously something is wrong.

    • tkohhh@waveform.socialOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      1 year ago

      Frustratingly, when you use psql on the terminal, it does not prompt you for a password. So I’m still not sure if the password works or not :(

      Ahh, ok… if you add the -W option when logging in to psql (psql -U lemmy -W), it will prompt for the password.

      The password works! So, apparently it’s something with the connection string.