[Question] Installing Lemmy instance from docker -> 502 bad gateway
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 :)
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), then 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?
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 @[email protected] 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.