Wykres commitów

1152 Commity (f13a1d2445294b271601fdc45bd4ead165a90081)

Autor SHA1 Wiadomość Data
Eliot Berriot db4c135626
Merge tag '0.12' into develop
0.12 (2018-05-09)
-----------------

Upgrade instructions are available at
  https://docs.funkwhale.audio/upgrading.html

Features:

- Subsonic API implementation to offer compatibility with existing clients such
  as DSub (#75)
- Use nodeinfo standard for publishing instance information (#192)

Enhancements:

- Play button now play tracks immediately instead of appending them to the
  queue (#99, #156)

Bugfixes:

- Fix broken federated import (#193)

Documentation:

- Up-to-date documentation for upgrading front-end files on docker setup (#132)

Subsonic API
^^^^^^^^^^^^

This release implements some core parts of the Subsonic API, which is widely
deployed in various projects and supported by numerous clients.

By offering this API in Funkwhale, we make it possible to access the instance
library and listen to the music without from existing Subsonic clients, and
without developping our own alternative clients for each and every platform.

Most advanced Subsonic clients support offline caching of music files,
playlist management and search, which makes them well-suited for nomadic use.

Please head over :doc:`users/apps` for more informations about supported clients
and user instructions.

At the instance-level, the Subsonic API is enabled by default, but require
and additional endpoint to be added in you reverse-proxy configuration.

On nginx, add the following block::

    location /rest/ {
        include /etc/nginx/funkwhale_proxy.conf;
        proxy_pass   http://funkwhale-api/api/subsonic/rest/;
    }

On Apache, add the following block::

    <Location "/rest">
        ProxyPass ${funkwhale-api}/api/subsonic/rest
        ProxyPassReverse ${funkwhale-api}/api/subsonic/rest
    </Location>

The Subsonic can be disabled at the instance level from the django admin.

.. note::

    Because of Subsonic's API design which assumes cleartext storing of
    user passwords, we chose to have a dedicated, separate password
    for that purpose. Users can generate this password from their
    settings page in the web client.

Nodeinfo standard for instance information and stats
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. warning::

    The ``/api/v1/instance/stats/`` endpoint which was used to display
    instance data in the about page is removed in favor of the new
    ``/api/v1/instance/nodeinfo/2.0/`` endpoint.

In earlier version, we where using a custom endpoint and format for
our instance information and statistics. While this was working,
this was not compatible with anything else on the fediverse.

We now offer a nodeinfo 2.0 endpoint which provides, in a single place,
all the instance information such as library and user activity statistics,
public instance settings (description, registration and federation status, etc.).

We offer two settings to manage nodeinfo in your Funkwhale instance:

1. One setting to completely disable nodeinfo, but this is not recommended
   as the exposed data may be needed to make some parts of the front-end
   work (especially the about page).
2. One setting to disable only usage and library statistics in the nodeinfo
   endpoint. This is useful if you want the nodeinfo endpoint to work,
   but don't feel comfortable sharing aggregated statistics about your library
   and user activity.

To make your instance fully compatible with the nodeinfo protocol, you need to
to edit your nginx configuration file:

.. code-block::

    # before
    ...
    location /.well-known/webfinger {
        include /etc/nginx/funkwhale_proxy.conf;
        proxy_pass   http://funkwhale-api/.well-known/webfinger;
    }
    ...

    # after
    ...
    location /.well-known/ {
        include /etc/nginx/funkwhale_proxy.conf;
        proxy_pass   http://funkwhale-api/.well-known/;
    }
    ...

You can do the same if you use apache:

.. code-block::

    # before
    ...
    <Location "/.well-known/webfinger">
      ProxyPass ${funkwhale-api}/.well-known/webfinger
      ProxyPassReverse ${funkwhale-api}/.well-known/webfinger
    </Location>
    ...

    # after
    ...
    <Location "/.well-known/">
      ProxyPass ${funkwhale-api}/.well-known/
      ProxyPassReverse ${funkwhale-api}/.well-known/
    </Location>
    ...

This will ensure all well-known endpoints are proxied to funkwhale, and
not just webfinger one.

Links:

- About nodeinfo: https://github.com/jhass/nodeinfo
2018-05-09 23:46:32 +02:00
Eliot Berriot 107cca7ba3
Merge branch 'release/0.12' 2018-05-09 23:46:22 +02:00
Eliot Berriot 0997aa4b25
0.12 Version bump and changelog 2018-05-09 23:45:14 +02:00
Eliot Berriot 805f9c6bbc Merge branch '75-subsonic-api' into 'develop'
Resolve "Implement the subsonic API"

Closes #75

See merge request funkwhale/funkwhale!188
2018-05-09 21:27:57 +00:00
Eliot Berriot 12638e1d82
Updated demo script 2018-05-09 23:24:51 +02:00
Eliot Berriot 60412ad51a
Fix #75: changelog 2018-05-09 23:19:58 +02:00
Eliot Berriot a5ebf56f11
See #75: User documentation 2018-05-09 23:07:33 +02:00
Eliot Berriot 24cb1d9519
See #75: user can now manage the Subsonic API token from their settings page 2018-05-09 22:18:33 +02:00
Eliot Berriot 7595936260
See #75: added a preference do enable/disable the subsonic API on the instance level 2018-05-09 22:13:04 +02:00
Eliot Berriot 632aca5153
Dev setup for working with subsonic API 2018-05-09 20:38:26 +02:00
Eliot Berriot 67dc414c8a
See #75: music direcory and indexes endpoints 2018-05-09 20:32:17 +02:00
Eliot Berriot 7c85d1ca81
See #75: can now add multiple tracks to a playlist on creation and update 2018-05-09 20:31:47 +02:00
Eliot Berriot 1674ad919f
See #75: implemented subsonic playlist API endpoints 2018-05-08 23:06:47 +02:00
Eliot Berriot 7e9320fc1c
Queryset methods for playlists 2018-05-08 23:06:29 +02:00
Eliot Berriot e31099ef33
See #75 more subsonic api endpoints (star, unstar, search...) 2018-05-08 21:22:52 +02:00
Eliot Berriot 40cde0cd92
Queryset methods on artist/albums 2018-05-08 21:21:52 +02:00
Eliot Berriot bbd273404a
See #75: initial subsonic implementation that works with http://p.subfireplayer.net 2018-05-08 16:32:07 +02:00
Eliot Berriot 9682299480
See #75: dedicated token for subsonic API access 2018-05-08 16:31:19 +02:00
Eliot Berriot 99c02b4f7e
Can now serve front end via IP 2018-05-08 16:30:42 +02:00
Eliot Berriot 2ef8723485 Merge branch '192-nodeinfo' into 'develop'
Resolve "Use nodeinfo schema for instance statistics"

Closes #192

See merge request funkwhale/funkwhale!187
2018-05-08 07:03:47 +00:00
Eliot Berriot cdc8388118
See #192: renamed name to nodeName, and include anonymousCanListen value as well 2018-05-08 09:01:02 +02:00
Eliot Berriot 095b70db4b
See #192: use proper content type for nodeinfo endpoint 2018-05-07 23:29:07 +02:00
Eliot Berriot a679f48fcf
See #192: removed useless localPosts and localComments 2018-05-07 23:26:48 +02:00
Eliot Berriot 310179c19e
Fix #192: changelog 2018-05-07 22:59:08 +02:00
Eliot Berriot 5dcb81c4af
See #192: updated sample nginx/apache conf for well-known endpoints 2018-05-07 22:29:22 +02:00
Eliot Berriot d88b7869fe
See #192: added .well-known/nodeinfo endpoint 2018-05-07 22:28:46 +02:00
Eliot Berriot 6ff8c2c8da
See #192: use nodeinfo/2.0 namespace to be future proof 2018-05-07 22:28:21 +02:00
Eliot Berriot b536e5a1f9
See #192: use nodeinfo for about page statistics 2018-05-07 22:09:25 +02:00
Eliot Berriot b4ad7a4a71
See #192: replaced old stats endpoint with nodeinfo 2018-05-07 22:09:03 +02:00
Eliot Berriot 00c717406e Fixed typo 2018-05-07 17:47:35 +00:00
Eliot Berriot c3e6c4c7ec Merge branch '193-import' into 'develop'
Resolve "ValueError: Cannot assign "(<Artist: Pearl Jam>, False)": "Album.artist" must be a "Artist" instance."

Closes #193

See merge request funkwhale/funkwhale!186
2018-05-07 17:25:05 +00:00
Eliot Berriot 23d21b0fdb
Fix #193: broken federated import 2018-05-07 19:22:09 +02:00
Eliot Berriot e31bed050e Merge branch '132-static-upgrade-docker' into 'develop'
Resolve "Make static upgrade easier on docker setups"

Closes #132

See merge request funkwhale/funkwhale!185
2018-05-06 22:20:00 +00:00
Eliot Berriot a8e436101c
Fix #132: better upgrading instructions for frontend files on docker 2018-05-07 00:17:42 +02:00
Eliot Berriot 0585868545 Merge branch '99-play-now' into 'develop'
Resolve "Make the play icon more explicit"

Closes #99 and #156

See merge request funkwhale/funkwhale!184
2018-05-06 21:54:27 +00:00
Eliot Berriot c70dc9b778
Fix #99 and #156: Play button now play tracks immediately instead of appending them to the queue 2018-05-06 23:51:14 +02:00
Eliot Berriot 60608c0390
See #191: removed docker note on front-end setup part 2018-05-06 22:45:14 +02:00
Eliot Berriot 0232335ad9
Typo 2018-05-06 16:54:01 +02:00
Eliot Berriot f68805e436
Missing date in changelog 2018-05-06 16:41:07 +02:00
Eliot Berriot a92f69d9fc
Merge tag '0.11' into develop
0.11 (unreleased)
-----------------

Upgrade instructions are available at https://docs.funkwhale.audio/upgrading.html

Special thanks for this release go to @renon:matrix.org (@Hazmo on Gitlab)
for bringing Apache2 support to Funkwhale and contributing on other issues.
Thank you!

Features:

- Funkwhale now works behind an Apache2 reverse proxy (!165)
  check out the brand new documentation at https://docs.funkwhale.audio/installation/index.html#apache2
  if you want to try it!
- Users can now request password reset by email, assuming a SMTP server was
  correctly configured (#187)

Enhancements:

- Added a fix_track_files command to run checks and fixes against library
  (#183)
- Avoid fetching Actor object on every request authentication
- Can now relaunch errored jobs and batches (#176)
- List pending requests by default, added a status filter for requests (#109)
- More structured menus in sidebar, added labels with notifications
- Sample virtual-host file for Apache2 reverse-proxy (!165)
- Store high-level settings (such as federation or auth-related ones) in
  database (#186)

Bugfixes:

- Ensure in place imported files get a proper mimetype (#183)
- Federation cache suppression is now simpler and also deletes orphaned files
  (#189)
- Fixed small UI glitches/bugs in federation tabs (#184)
- X-sendfile not working with in place import (#182)

Documentation:

- Added a documentation area for third-party projects (#180)
- Added documentation for optimizing Funkwhale and reduce its memory footprint.
- Document that the database should use an utf-8 encoding (#185)
- Foundations for API documentation with Swagger (#178)

Database storage for high-level settings
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Due to the work done in #186, the following environment variables have been
deprecated:

- FEDERATION_ENABLED
- FEDERATION_COLLECTION_PAGE_SIZE
- FEDERATION_MUSIC_NEEDS_APPROVAL
- FEDERATION_ACTOR_FETCH_DELAY
- PLAYLISTS_MAX_TRACKS
- API_AUTHENTICATION_REQUIRED

Configuration for this settings has been moved to database, as it will provide
a better user-experience, by allowing you to edit these values on-the-fly,
without restarting Funkwhale processes.

You can leave those environment variables in your .env file for now, as the
values will be used to populate the database entries. We'll make a proper
announcement when the variables won't be used anymore.

Please browse https://docs.funkwhale.audio/configuration.html#instance-settings
for more information about instance configuration using the web interface.

System emails
^^^^^^^^^^^^^

Starting from this release, Funkwhale will send two types
of emails:

- Email confirmation emails, to ensure a user's email is valid
- Password reset emails, enabling user to reset their password without an admin's intervention

Email sending is disabled by default, as it requires additional configuration.
In this mode, emails are simply outputed on stdout.

If you want to actually send those emails to your users, you should edit your
.env file and tweak the EMAIL_CONFIG variable. See :ref:`setting-EMAIL_CONFIG`
for more details.

.. note::

  As a result of these changes, the DJANGO_EMAIL_BACKEND variable,
  which was not documented, has no effect anymore. You can safely remove it from
  your .env file if it is set.

Proxy headers for non-docker deployments
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

For non-docker deployments, add ``--proxy-headers`` at the end of the ``daphne``
command in :file:`/etc/systemd/system/funkwhale-server.service`.

This will ensure the application receive the correct IP address from the client
and not the proxy's one.
2018-05-06 16:24:52 +02:00
Eliot Berriot 104a247d97
Merge branch 'release/0.11' 2018-05-06 16:24:20 +02:00
Eliot Berriot 7908ae3942
Version bump and changelog 2018-05-06 16:24:12 +02:00
Eliot Berriot 82f5dc20f3
Documentation for missing DEFAULT_FROM_EMAIL setting 2018-05-06 16:23:23 +02:00
Eliot Berriot 72c3c0fd85 Merge branch '189-cache-deletion' into 'develop'
Resolve "Federation cached tracks not cleaned by celery task"

Closes #189

See merge request funkwhale/funkwhale!183
2018-05-06 13:49:50 +00:00
Eliot Berriot 480b6d7fd6
Include link to upgrade instructions in changelog 2018-05-06 15:47:34 +02:00
Eliot Berriot 9130e14fa0
fixed missing changelog and typos 2018-05-06 15:43:26 +02:00
Eliot Berriot bc2c9950e3
Fix #189: federation cache should now delete properly, including orphaned files 2018-05-06 15:36:49 +02:00
Eliot Berriot f343159856
Added an accessed_date field on TrackFile for easier cache deletion (#189) 2018-05-06 15:36:18 +02:00
Eliot Berriot 2649ad88ff Merge branch '187-emails' into 'develop'
Resolve "Add email support"

Closes #187

See merge request funkwhale/funkwhale!182
2018-05-06 11:54:00 +00:00
Eliot Berriot 4a7105ae7e
Fix #187: documentation and changelog for email configuration 2018-05-06 13:48:23 +02:00