[Question] Installing Lemmy instance from docker -> 502 bad gateway

Solvena@lemmy.world to Selfhosted@lemmy.world – 2 points –

Hi, does anybody have an idea what the reason could be? I installed a lemmy instance on a VPS using the docker images. Beforehand I installed nginx and got a letsencrypt - certificate (which seems to have worked). I downloaded the nginx.conf file from github and made the configurations, also in the lemmy.config and docker-compose.yml files. However, I'm unsure if there's anything else I should look at. Any tips are welcome :)

7

Hi there!

TL;DR: probably have an nginx misconfiguration. Check the nginx logs for errors.


You don’t need to install and run nginx on the host. It has its own container in the docker-compose.yml which gets started up on docker-compose up -d

If both instances of nginx are trying to bind to the same port, one will start and one will fail.

Is the lemmy proxy nginx docker container running? Check with: docker ps or docker container ls. If the lemmy nginx proxy container isn’t running, try stopping the host instance of nginx (systemctl nginx stop) and restart docker lemmy (docker-compose down, docker-compose up -d), the try to access your site again.

that seems to have been part of the problem, as I indeed had nginx running on the host as well. Now I get the error code "website cannot be reached" when I try to go to my instance in the browser.

I tried to follow the configuration for nginx as was in the template file on github, but I most probably have an error there. One thing confuses me, that's the ports for lemmy and the lemmy UI. I think they should be 8536 an 1235 respectively, but sometimes it says 1234 and 1236 for the UI port as well. Also in the template I'm using (https://github.com/LemmyNet/lemmy-ansible/blob/main/templates/nginx.conf#L63) there is only one section to enter ports: proxy_pass http://0.0.0.0:{{lemmy_port}}; - which port do I enter here?

if you happen to know, please let me know :)

That is a conf for the host system nginx, in which you enter the lemmy port defined on the left side of your proxy service's port section.

...
ports:
      # actual and only port facing any connection from outside
      # Note, change the left number if port 1236 is already in use on your system
      # You could use port 80 if you won't use a reverse proxy
      - "{{ lemmy_port }}:8536"

I'm pretty sure that error indicates nginx isn't receiving a response from the upstream server (Lemmy and Lemmy-UI). So, either your upstream server isn't responding to requests or nginx is misconfigured with the wrong upstream server πŸ€”

As @slashzero@hakbox.social said, if you're using an additional nginx server, your docker nginx can't listen for port 80 or 443. Here's my host nginx reverse proxy's ssl section for reference:

server {
    server_name kek.henlo.fi;

        location / {
	proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        include proxy_params;
        proxy_pass http://localhost:9001;
    }

    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate /etc/letsencrypt/live/kek.henlo.fi/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/kek.henlo.fi/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

Maybe you're missing some proxy headers, or the docker compose isn't forwarding the correct ports.

But it can definitely be something completely different.