Think of the NGINX proxy in Lemmy's docker-compose.yml
file as the entry point to Lemmy from outside the Docker network. For instance, I don't have any ports mapped for the individual services except for the NGINX service. The NGINX proxy in this docker-compose file will access the other services through the internal docker network, so it isn't a problem if you set up your nginx.conf
file with the service's names. With that done, you could map any port you want for the NGINX service from the host, then point your internet-facing reverse proxy to that.
I also plan on setting up a Mastodon server, but I haven't gotten to it yet. So I don't have anything specific to add other than it will work similarly by using docker's port mapping or service names depending on whether each service needs to be internet-facing or only communicate internally.
You can use the FQDN of your Lemmy instance in the
nginx.conf
file. I've uploaded my files to a gist here as an example.You should be able just to replace any mention of
lemmy.mydomain.com
with your FQDN of your Lemmy instance and replace anyyour-postgres-password
with your real Postgres password. You must also set your SMTP provider settings in theemail
section ofconfig.hjson
(I use Brevo). In thedocker-compose.yml
file, you can change which port you want to map from the host; I used8976
in mine. Then just point your internet-facing reverse proxy to the host and whichever port you chose.I'm not using Ansible to automate it at all. I'm just updating the files manually, as needed, and doing
docker compose
commands. I'm using Docker volumes to persist the data on them, so feel free to change any of those basic things you want.