kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
				
				
				
			
		
			
				
	
	
		
			330 wiersze
		
	
	
		
			12 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
			
		
		
	
	
			330 wiersze
		
	
	
		
			12 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
| Instance configuration
 | |
| ======================
 | |
| 
 | |
| General configuration is achieved using two type of settings:
 | |
| :ref:`environment variables <environment-variables>` and
 | |
| :ref:`instance settings <instance-settings>`.
 | |
| 
 | |
| .. _environment-variables:
 | |
| 
 | |
| Environment variables
 | |
| ---------------------
 | |
| 
 | |
| Those are located in your ``.env`` file, which you should have created
 | |
| during installation. A full list of available variables can be seen
 | |
| :ref:`below <environment-variables>`.
 | |
| 
 | |
| Options from this file are heavily commented, and usually target lower level
 | |
| and technical aspects of your instance, such as database credentials.
 | |
| 
 | |
| .. note::
 | |
| 
 | |
|     You should restart all Funkwhale processes when you change the values
 | |
|     on environment variables.
 | |
| 
 | |
| 
 | |
| .. note::
 | |
| 
 | |
|     Some characters are unsafe to use in configuration variables that are URLs,
 | |
|     such as the user and password in the database and SMTP sections.
 | |
|     If those variables contain such characters, they must be urlencoded, for
 | |
|     instance using the following command:
 | |
|     ``python3 -c 'import urllib.parse; print(urllib.parse.quote_plus("p@ssword"))``
 | |
| 
 | |
|     cf. https://github.com/joke2k/django-environ#using-unsafe-characters-in-urls
 | |
| 
 | |
| .. _instance-settings:
 | |
| 
 | |
| Instance settings
 | |
| -----------------
 | |
| 
 | |
| These settings are stored in the database and do not require a restart of your
 | |
| instance after modification. They typically relate to higher level configuration,
 | |
| such your instance description, signup policy and so on.
 | |
| 
 | |
| You can edit those settings directly from the web application, assuming
 | |
| you have the required permissions. The URL is ``/manage/settings``, and
 | |
| you will also find a link to this page in the sidebar.
 | |
| 
 | |
| If you plan to use acoustid and external imports
 | |
| (e.g. with the YouTube backends), you should edit the corresponding
 | |
| settings in this interface.
 | |
| 
 | |
| .. note::
 | |
| 
 | |
|     If you have any issue with the web application, a management interface is also
 | |
|     available for those settings from :doc:`Django's administration interface <django>`. It's
 | |
|     less user friendly, though, and we recommend you use the web app interface
 | |
|     whenever possible.
 | |
| 
 | |
|     The URL should be ``/api/admin/dynamic_preferences/globalpreferencemodel/`` (prepend your domain in front of it, of course).
 | |
| 
 | |
| 
 | |
| Configuration reference
 | |
| -----------------------
 | |
| 
 | |
| Pod
 | |
| ^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.FUNKWHALE_HOSTNAME
 | |
|     :annotation:
 | |
| .. autodata:: config.settings.common.FUNKWHALE_PROTOCOL
 | |
| 
 | |
| Database and redis
 | |
| ^^^^^^^^^^^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.DATABASE_URL
 | |
|     :annotation:
 | |
| .. autodata:: config.settings.common.DB_CONN_MAX_AGE
 | |
| .. autodata:: config.settings.common.CACHE_URL
 | |
|     :annotation:
 | |
| .. autodata:: config.settings.common.CELERY_BROKER_URL
 | |
|     :annotation:
 | |
| 
 | |
| Accounts and registration
 | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.ACCOUNT_EMAIL_VERIFICATION_ENFORCE
 | |
|     :annotation:
 | |
| .. autodata:: config.settings.common.USERS_INVITATION_EXPIRATION_DAYS
 | |
|     :annotation:
 | |
| .. autodata:: config.settings.common.DISABLE_PASSWORD_VALIDATORS
 | |
|     :annotation:
 | |
| .. autodata:: config.settings.common.ACCOUNT_USERNAME_BLACKLIST
 | |
|     :annotation:
 | |
| .. autodata:: config.settings.common.AUTH_LDAP_ENABLED
 | |
|     :annotation:
 | |
| 
 | |
| Media storage and serving
 | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.MEDIA_URL
 | |
|     :annotation: = https://mypod.audio/media/
 | |
| .. autodata:: config.settings.common.MEDIA_ROOT
 | |
|     :annotation: = /srv/funkwhale/data/media
 | |
| .. autodata:: config.settings.common.PROXY_MEDIA
 | |
|     :annotation: = true
 | |
| .. autodata:: config.settings.common.EXTERNAL_MEDIA_PROXY_ENABLED
 | |
| .. autodata:: config.settings.common.ATTACHMENTS_UNATTACHED_PRUNE_DELAY
 | |
|     :annotation: = true
 | |
| .. autodata:: config.settings.common.REVERSE_PROXY_TYPE
 | |
| .. autodata:: config.settings.common.PROTECT_FILES_PATH
 | |
| 
 | |
| Audio acquisition
 | |
| ^^^^^^^^^^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.MUSIC_DIRECTORY_PATH
 | |
| .. autodata:: config.settings.common.MUSIC_DIRECTORY_SERVE_PATH
 | |
| 
 | |
| S3 Storage
 | |
| ^^^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.AWS_QUERYSTRING_AUTH
 | |
| .. autodata:: config.settings.common.AWS_QUERYSTRING_EXPIRE
 | |
| .. autodata:: config.settings.common.AWS_ACCESS_KEY_ID
 | |
| .. autodata:: config.settings.common.AWS_SECRET_ACCESS_KEY
 | |
| .. autodata:: config.settings.common.AWS_STORAGE_BUCKET_NAME
 | |
| .. autodata:: config.settings.common.AWS_S3_CUSTOM_DOMAIN
 | |
| .. autodata:: config.settings.common.AWS_S3_ENDPOINT_URL
 | |
| .. autodata:: config.settings.common.AWS_S3_REGION_NAME
 | |
| .. autodata:: config.settings.common.AWS_LOCATION
 | |
| 
 | |
| API configuration
 | |
| ^^^^^^^^^^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.THROTTLING_ENABLED
 | |
| .. autodata:: config.settings.common.THROTTLING_RATES
 | |
| .. autodata:: config.settings.common.ADMIN_URL
 | |
| .. autodata:: config.settings.common.EXTERNAL_REQUESTS_VERIFY_SSL
 | |
| .. autodata:: config.settings.common.EXTERNAL_REQUESTS_TIMEOUT
 | |
| 
 | |
| Federation
 | |
| ^^^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.FEDERATION_OBJECT_FETCH_DELAY
 | |
| .. autodata:: config.settings.common.FEDERATION_DUPLICATE_FETCH_DELAY
 | |
| 
 | |
| Metadata
 | |
| ^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.TAGS_MAX_BY_OBJ
 | |
| .. autodata:: config.settings.common.MUSICBRAINZ_HOSTNAME
 | |
| .. autodata:: config.settings.common.MUSICBRAINZ_CACHE_DURATION
 | |
| 
 | |
| Channels and podcasts
 | |
| ^^^^^^^^^^^^^^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.PODCASTS_RSS_FEED_REFRESH_DELAY
 | |
| .. autodata:: config.settings.common.PODCASTS_RSS_FEED_MAX_ITEMS
 | |
| .. autodata:: config.settings.common.PODCASTS_THIRD_PARTY_VISIBILITY
 | |
| 
 | |
| Subsonic
 | |
| ^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.SUBSONIC_DEFAULT_TRANSCODING_FORMAT
 | |
| 
 | |
| Other settings
 | |
| ^^^^^^^^^^^^^^
 | |
| 
 | |
| .. autodata:: config.settings.common.INSTANCE_SUPPORT_MESSAGE_DELAY
 | |
| .. autodata:: config.settings.common.FUNKWHALE_SUPPORT_MESSAGE_DELAY
 | |
| .. autodata:: config.settings.common.MIN_DELAY_BETWEEN_DOWNLOADS_COUNT
 | |
| .. autodata:: config.settings.common.MARKDOWN_EXTENSIONS
 | |
| .. autodata:: config.settings.common.LINKIFIER_SUPPORTED_TLDS
 | |
| 
 | |
| User permissions
 | |
| ----------------
 | |
| 
 | |
| Funkwhale's permission model works as follows:
 | |
| 
 | |
| - Anonymous users cannot do anything unless configured specifically
 | |
| - Logged-in users can use the application, but cannot do things that affect
 | |
|   the whole instance
 | |
| - Superusers can do anything
 | |
| 
 | |
| To make things more granular and allow some delegation of responsibility,
 | |
| superusers can grant specific permissions to specific users. Available
 | |
| permissions are:
 | |
| 
 | |
| - **Manage instance-level settings**: users with this permission can edit instance
 | |
|   settings as described in :ref:`instance-settings`
 | |
| - **Manage library**: users with this permission can import new music in the
 | |
|   instance
 | |
| - **Manage library federation**: users with this permission can ask to federate with
 | |
|   other instances, and accept/deny federation requests from other instances
 | |
| 
 | |
| There is no dedicated interface to manage users permissions, but superusers
 | |
| can login on the :doc:`Django's admin <django>` at ``/api/admin/`` and grant permissions
 | |
| to users at ``/api/admin/users/user/``.
 | |
| 
 | |
| Front-end settings
 | |
| ------------------
 | |
| 
 | |
| We offer a basic mechanism to customize the behavior and look and feel of Funkwhale's Web UI.
 | |
| To use any of the options below, you will need to create a custom JSON configuration file and serve it
 | |
| on ``https://yourinstanceurl/settings.json``.
 | |
| 
 | |
| On typical deployments, this url returns a 404 error, which is simply ignored.
 | |
| 
 | |
| Set-up
 | |
| ------
 | |
| 
 | |
| First, create the settings file:
 | |
| 
 | |
| .. code-block:: shell
 | |
| 
 | |
|     cd /srv/funkwhale/
 | |
| 
 | |
|     # create a directory for your configuration file
 | |
|     # you can use a different name / path of course
 | |
|     mkdir custom
 | |
| 
 | |
|     # populate the configuration file with default values
 | |
|     cat <<EOF > custom/settings.json
 | |
|     {
 | |
|       "additionalStylesheets": [],
 | |
|       "defaultServerUrl": null
 | |
|     }
 | |
|     EOF
 | |
| 
 | |
| Once the ``settings.json`` file is created, you will need to serve it from your reverse proxy.
 | |
| 
 | |
| If you are using nginx, add the following snippet to your vhost configuration::
 | |
| 
 | |
|     location /settings.json {
 | |
|         alias /srv/funkwhale/custom/settings.json;
 | |
|     }
 | |
| 
 | |
| On apache, add the following to your vhost configuration::
 | |
| 
 | |
|     Alias /settings.json /srv/funkwhale/custom/settings.json
 | |
| 
 | |
| Then reload your reverse proxy.
 | |
| 
 | |
| At this point, visiting ``https://yourinstanceurl/settings.json`` should serve the content
 | |
| of the settings.json file.
 | |
| 
 | |
| .. warning::
 | |
| 
 | |
|     The settings.json file must be a valid JSON file. If you have any issue, try linting
 | |
|     the file with a tool such as `<https://github.com/zaach/jsonlint>`_ to detect potential
 | |
|     syntax issues.
 | |
| 
 | |
| Available configuration options
 | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | |
| 
 | |
| Your :file:`settings.json` can contain the following options:
 | |
| 
 | |
| +----------------------------------+--------------------+---------------------------------------+---------------------------------------------------------------+
 | |
| | Name                             | Type               | Example value                         | Description                                                   |
 | |
| +----------------------------------+--------------------+---------------------------------------+---------------------------------------------------------------+
 | |
| | ``additionalStylesheets``        | Array of URLs      | ``["https://test/theme.css"]``        | A list of stylesheets URL (absolute or relative)              |
 | |
| |                                  |                    | (default: ``[]``)                     | that the web UI should load. see the "Theming" section        |
 | |
| |                                  |                    |                                       | below for a detailed explanation                              |
 | |
| |                                  |                    |                                       |                                                               |
 | |
| +----------------------------------+--------------------+---------------------------------------+---------------------------------------------------------------+
 | |
| | ``defaultServerUrl``             | URL                | ``"https://api.yourdomain.com"``      | The URL of the API server this front-end should               |
 | |
| |                                  |                    | (default: ``null``)                   | connect with. If null, the UI will use                        |
 | |
| |                                  |                    |                                       | the value of VUE_APP_INSTANCE_URL                             |
 | |
| |                                  |                    |                                       | (specified during build) or fallback to the current domain    |
 | |
| +----------------------------------+--------------------+---------------------------------------+---------------------------------------------------------------+
 | |
| 
 | |
| Missing options or options with a ``null`` value in the ``settings.json`` file are ignored.
 | |
| 
 | |
| Theming
 | |
| ^^^^^^^
 | |
| 
 | |
| To theme your Funkwhale instance, you need:
 | |
| 
 | |
| 1. A CSS file for your theme, that can be loaded by the front-end
 | |
| 2. To update the value of ``additionalStylesheets`` in your settings.json file to point to your CSS file URL
 | |
| 
 | |
| .. code-block:: shell
 | |
| 
 | |
|     cd /srv/funkwhale/custom
 | |
|     nano settings.json
 | |
|     # append
 | |
|     # "additionalStylesheets": ["/front/custom/custom.css"]
 | |
|     # to the configuration or replace the existing value, if any
 | |
| 
 | |
|     # create a basic theming file changing the background to red
 | |
|     cat <<EOF > custom.css
 | |
|     body {
 | |
|       background-color: red;
 | |
|     }
 | |
|     EOF
 | |
| 
 | |
| The last step to make this work is to ensure your CSS file is served by the reverse proxy.
 | |
| 
 | |
| On nginx, add the following snippet to your vhost config::
 | |
| 
 | |
|     location /custom {
 | |
|         alias /srv/funkwhale/custom;
 | |
|     }
 | |
| 
 | |
| On apache, use the following::
 | |
| 
 | |
|     Alias /custom /srv/funkwhale/custom
 | |
| 
 | |
|     <Directory "/srv/funkwhale/custom">
 | |
|       Options FollowSymLinks
 | |
|       AllowOverride None
 | |
|       Require all granted
 | |
|     </Directory>
 | |
| 
 | |
| Once done, reload your reverse proxy, refresh Funkwhale in your web browser, and you should see
 | |
| a red background.
 | |
| 
 | |
| .. note::
 | |
| 
 | |
|     You can reference external urls as well in ``additionalStylesheets``, simply use
 | |
|     the full urls. Be especially careful with external urls as they may affect your users
 | |
|     privacy.
 | |
| 
 | |
| .. warning::
 | |
| 
 | |
|     Loading additional stylesheets and CSS rules can affect the performance and
 | |
|     usability of your instance. If you encounter issues with the interfaces and use
 | |
|     custom stylesheets, try to disable those to ensure the issue is not caused
 | |
|     by your customizations.
 |