this post was submitted on 20 Jul 2023
7 points (88.9% liked)
Lemmy Support
4657 readers
2 users here now
Support / questions about Lemmy.
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
So, here's something that might work. I tested it on my local machine, up to Caddy but without HTTPS, but I'm confident it'll work once deployed on a server.
Prerequisites:
Setup
First, create a folder and download the following files:
nginx.conf
Then, generate passwords for PostgreSQL and your admin user, store them somewhere safe.
Config changes
lemmy.hjson
You'll want to change the
admin_username
,admin_password
andsite_name
to match your primary user's credentials and the name you want to give your instance.Then, change
hostname
to match your domain name: if it issub.domain.tld
then it should readhostname: "sub.domain.tld"
.The base config file does not have proper configuration for the database, so you'll have to edit the
database
field as follows with the password you previously created:Additionally, if you want to send emails for registration confirmation and password resets, add the following before the closing
}
and change to match your email provider configuration.docker-compose.yml
By default the compose file is meant to build a development version of Lemmy, we will change this by removing the blocks with
build
and uncomment those withimage
. Note: think to update the images to0.18.2
since it fixes some vulnerabilities.Also, since we will use a reverse proxy and I don't now if your server has a firewall, we should remove the
ports
blocks which are used to expose the services' ports on the host.Finally, make sure to change the
POSTGRES_PASSWORD
field to match the PostgreSQL password you set inlemmy.hjson
.It should look something like that:
Caddy
For the final touch, we are going to setup Caddy, a reverse proxy with HTTPS support out of the box.
First, create a file nammed
Caddyfile
and write the following in it:Make sure to match your actual domain name.
Finally, update the
docker-compose.yml
file to add the following at the end (make sure that it's correctly tabulated)Launching the instance
Before starting the stack, we have a few things left to do:
mkdir -p volumes/postgres volumes/pictrs
volumes/pictrs
:sudo chown -R 991:991 pictrs
Finally, to start everything:
docker compose up -d