Configuration

The configuration is based on the file config.hjson, which is located by default at config/config.hjson. To change the default location, you can set the environment variable LEMMY_CONFIG_LOCATION.

Additional environment variable are available:

  • LEMMY_DATABASE_URL, which can be used with a PostgreSQL connection string like postgres://lemmy:password@lemmy_db:5432/lemmy, passing all connection details at once,
  • LEMMY_SMTP_PASSWORD, which can be used to set the password to authenticate with the SMTP server.

Those environment variables will override values if specified in the config file.

If the Docker container is not used, manually create the database specified above by running the following commands:

cd server
./db-init.sh

Full config with default values

{
  # settings related to the postgresql database
  database: {
    # Configure the database by specifying a URI
    # 
    # This is the preferred method to specify database connection details since
    # it is the most flexible.
    # Connection URI pointing to a postgres instance
    # 
    # This example uses peer authentication to obviate the need for creating,
    # configuring, and managing passwords.
    # 
    # For an explanation of how to use connection URIs, see [here][0] in
    # PostgreSQL's documentation.
    # 
    # [0]: https://www.postgresql.org/docs/current/libpq-connect.html#id-1.7.3.8.3.6
    uri: "postgresql:///lemmy?user=lemmy&host=/var/run/postgresql"

    # or

    # Configure the database by specifying parts of a URI
    # 
    # Note that specifying the `uri` field should be preferred since it provides
    # greater control over how the connection is made. This merely exists for
    # backwards-compatibility.
    # Username to connect to postgres
    user: "string"
    # Password to connect to postgres
    password: "string"
    # Host where postgres is running
    host: "string"
    # Port where postgres can be accessed
    port: 123
    # Name of the postgres database for lemmy
    database: "string"
    # Maximum number of active sql connections
    pool_size: 5
  }
  # Settings related to activitypub federation
  # Pictrs image server configuration.
  pictrs: {
    # Address where pictrs is available (for image hosting)
    url: "http://localhost:8080/"
    # Set a custom pictrs API key. ( Required for deleting images )
    api_key: "string"
  }
  # Email sending configuration. All options except login/password are mandatory
  email: {
    # Hostname and port of the smtp server
    smtp_server: "localhost:25"
    # Login name for smtp server
    smtp_login: "string"
    # Password to login to the smtp server
    smtp_password: "string"
    # Address to send emails from, eg "noreply@your-instance.com"
    smtp_from_address: "noreply@example.com"
    # Whether or not smtp connections should use tls. Can be none, tls, or starttls
    tls_type: "none"
  }
  # Parameters for automatic configuration of new instance (only used at first start)
  setup: {
    # Username for the admin user
    admin_username: "admin"
    # Password for the admin user. It must be at least 10 characters.
    admin_password: "tf6HHDS4RolWfFhk4Rq9"
    # Name of the site (can be changed later)
    site_name: "My Lemmy Instance"
    # Email for the admin user (optional, can be omitted and set later through the website)
    admin_email: "user@example.com"
  }
  # the domain name of your instance (mandatory)
  hostname: "unset"
  # Address where lemmy should listen for incoming requests
  bind: "0.0.0.0"
  # Port where lemmy should listen for incoming requests
  port: 8536
  # Whether the site is available over TLS. Needs to be true for federation to work.
  tls_enabled: true
  # The number of activitypub federation workers that can be in-flight concurrently
  worker_count: 0
  # The number of activitypub federation retry workers that can be in-flight concurrently
  retry_count: 0
  prometheus: {
    bind: "127.0.0.1"
    port: 10002
  }
}

Lemmy-UI configuration

Lemmy-UI can be configured using environment variables, detailed in its README.