Some things the documentation didn’t cover very clearly and I wanted to elaborate on. Maybe one day I’ll organize this into a pull request and modify the documentation. I used the Ansible method to deploy Lemmy, so that’s what I’m going to cover here.

When you start your config.jhson file, it looks like this:

{
  database: {
    host: postgres
    password: "{{ postgres_password }}"
  }
  hostname: "{{ domain }}"
  pictrs: {
    url: "http://pictrs:8080/"
    api_key: "{{ postgres_password }}"
  }
  email: {
    smtp_server: "postfix:25"
    smtp_from_address: "noreply@{{ domain }}"
    tls_type: "none"
  }
}

Now what the documentation does not tell you is that pictrs, postfix, and postgres are the names of your docker containers. When you first build your instance, it will look something a little more like this:

{
  database: {
    host: prime8sxyz_postgres_1
    password: "{{ postgres_password }}"
  }
  hostname: "{{ domain }}"
  pictrs: {
    url: "http://prime8sxyz_pictrs_1:8080/"
    api_key: "{{ postgres_password }}"
  }
 email: {
    smtp_server: "smtp-relay.service.com:587"
    smtp_login: "noreply"
    smtp_from_address: "noreply@prime8s.xyz"
    smtp_password: "SMTP_KEY_HERE"
    tls_type: "tls"
  }
  tls_enabled: true
  bind: "0.0.0.0"
  port: 8536
}

Notice how the name of my docker containers have changed. Luckily, docker compose seems to base it on a predictable pattern, and running the playbook again doesn’t change the names of the containers. I spent quite a bit of time setting up the email and pictrs, with a lot of trial and error, I hope this post saves you that.