# If you have any doubts about what a setting does,
# @see https://docs.funkwhale.audio/configuration.html#configuration-reference
# @see https://docs.funkwhale.audio/administrator/configuration/env-file.html

# If you're tweaking this file from the template, ensure you edit at least the
# following variables:
# - EMAIL_CONFIG and DEFAULT_FROM_EMAIL if you plan to send e-mails)
# On non-docker setup **only**, you'll also have to tweak/uncomment those variables:
# - DATABASE_URL
# - CACHE_URL
#
# You **don't** need to update those variables on pure docker setups.
#
# Additional options you may want to check:
# - MUSIC_DIRECTORY_PATH and MUSIC_DIRECTORY_SERVE_PATH if you plan to use
#   in-place import
#
# Docker only
# -----------
MUSIC_DIRECTORY_PATH={{funkwhale_music_directory_path}}

# End of web-app-only configuration

# General configuration
# ---------------------
# Assuming that the following variable isn't used anymore. 
# @todo remove it if this is true
FUNKWHALE_API_IP=127.0.0.1
# Assuming that the following variable isn't used anymore. 
# @todo remove it if this is true
FUNKWHALE_API_PORT={{ funkwhale_docker_api_port }}

# The number of web workers to start in parallel. Higher means you can handle
# more concurrent requests, but also leads to higher CPU/Memory usage
FUNKWHALE_WEB_WORKERS=4
# Replace this by the definitive, public domain you will use for
# your instance. It cannot be changed after initial deployment
# without breaking your instance.
FUNKWHALE_HOSTNAME={{ domains | get_domain(application_id) }}
FUNKWHALE_PROTOCOL={{ WEB_PROTOCOL }}

# Log level (debug, info, warning, error, critical)
LOGLEVEL={% if MODE_DEBUG | bool %}debug{% else %}error{% endif %}

# Could be that this is redundant
DJANGO_LOGLEVEL={% if MODE_DEBUG | bool %}debug{% else %}error{% endif %}

# Configure e-mail sending using this variale
# By default, funkwhale will output e-mails sent to stdout
# here are a few examples for this setting
# EMAIL_CONFIG=consolemail://         # output e-mails to console (the default)
# EMAIL_CONFIG=dummymail://          # disable e-mail sending completely
# On a production instance, you'll usually want to use an external SMTP server:
# If `user` or `password` contain special characters (eg.
# `noreply@youremail.host` as `user`), be sure to urlencode them, using
# for example the command:
# `python3 -c 'import urllib.parse; print(urllib.parse.quote_plus
# ("noreply@youremail.host"))'`
# (returns `noreply%40youremail.host`)
# EMAIL_CONFIG=smtp://user:password@youremail.host:25
# EMAIL_CONFIG=smtp+ssl://user:password@youremail.host:465
EMAIL_CONFIG=smtp+tls://{{ users['no-reply'].username }}:{{ users['no-reply'].mailu_token }}@{{ SYSTEM_EMAIL.HOST }}:{{ SYSTEM_EMAIL.PORT }}

# Make e-mail verification mandatory before using the service
# Doesn't apply to admins.
# ACCOUNT_EMAIL_VERIFICATION_ENFORCE=false

# The e-mail address to use to send system e-mails.
DEFAULT_FROM_EMAIL={{ users['no-reply'].email }}

# Depending on the reverse proxy used in front of your funkwhale instance,
# the API will use different kind of headers to serve audio files
# Allowed values: nginx, apache2
REVERSE_PROXY_TYPE=nginx

# API/Django configuration

# Number of worker processes to execute. Defaults to 0, in which case it uses your number of CPUs
# Celery workers handle background tasks (such file imports or federation
# messaging). The more processes a worker gets, the more tasks
# can be processed in parallel. However, more processes also means
# a bigger memory footprint.
CELERYD_CONCURRENCY={{celeryd_concurrency}}

# Where media files (such as album covers or audio tracks) should be stored
# on your system?
# (Ensure this directory actually exists)
MEDIA_ROOT={{funkwhale_media_root}}

# Where static files (such as API css or icons) should be compiled
# on your system?
# (Ensure this directory actually exists)
STATIC_ROOT={{funkwhale_static_root}}

# which settings module should django use?
# You don't have to touch this unless you really know what you're doing
DJANGO_SETTINGS_MODULE=config.settings.production

# Generate one using `openssl rand -base64 45`, for example
DJANGO_SECRET_KEY={{ applications | get_app_conf(application_id, 'credentials.django_secret', True)}}

{% if applications | get_app_conf(application_id, 'features.ldap', False) %}
# LDAP settings
# Use the following options to allow authentication on your Funkwhale instance
# using a LDAP directory.
# Have a look at https://docs.funkwhale.audio/installation/ldap.html for
# detailed instructions.
# Commit: https://gitea.fudaoyuan.icu/Github/funkwhale/commit/4ce46ff2a000646a3dbab80f0ca9fd8d7f8ae24c

LDAP_ENABLED                     =  True
LDAP_SERVER_URI                  =  "{{ LDAP.SERVER.URI }}"
LDAP_BIND_DN                     =  "{{ LDAP.DN.ADMINISTRATOR.DATA }}"
LDAP_BIND_PASSWORD               =  "{{ LDAP.BIND_CREDENTIAL }}"
LDAP_SEARCH_FILTER               =  "{{ LDAP.FILTERS.USERS.LOGIN | replace('%' ~ LDAP.USER.ATTRIBUTES.ID, '{0}') }}"
LDAP_START_TLS                   =  False
LDAP_ROOT_DN                     =  "{{ LDAP.DN.ROOT }}"
LDAP_USER_ATTR_MAP='{"username":"uid","first_name":"givenName","last_name":"sn","email":"mail"}'
{% endif %}

FUNKWHALE_FRONTEND_PATH=/srv/funkwhale/front/dist

DATABASE_URL = {{ database_url_full }}
WEB_CONCURRENCY="{{ POSTGRES_ALLOWED_AVG_CONNECTIONS }}"
WORKER_THREADS="{{ POSTGRES_ALLOWED_AVG_CONNECTIONS | int // 2 }}"
