Unified repository for both the API and the front-end
Go to file
Eliot Berriot 25e263d474
Merge tag '0.6' into develop
0.6 (2018-03-04)
----------------

Features:

- Basic activity stream for listening and favorites (#23)
- Switched to django-channels and daphne for serving HTTP and websocket (#34)

Upgrades notes
**************

This version contains breaking changes in the way funkwhale is deployed,
please read the notes carefully.

Instance timeline
^^^^^^^^^^^^^^^^^

A new "Activity" page is now available from the sidebar, where you can
browse your instance activity. At the moment, this includes other users
favorites and listening, but more activity types will be implemented in the
future.

Internally, we implemented those events by following the Activity Stream
specification, which will help us to be compatible with other networks
in the long-term.

A new settings page has been added to control the visibility of your activity.
By default, your activity will be browsable by anyone on your instance,
but you can switch to a full private mode where nothing is shared.

The setting form is available in your profile.

Switch from gunicorn to daphne
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This release include an important change in the way we serve the HTTP API.
To prepare for new realtime features and enable websocket support in Funkwhale,
we are now using django-channels and daphne to serve HTTP and websocket traffic.

This replaces gunicorn and the switch should be easy assuming you
follow the upgrade process described bellow.

If you are using docker, please remove the command instruction inside the
api service, as the up-to-date command is now included directly in the image
as the default entry point:

.. code-block:: yaml

    api:
      restart: unless-stopped
      image: funkwhale/funkwhale:${FUNKWHALE_VERSION:-latest}
      command: ./compose/django/gunicorn.sh  # You can remove this line

On non docker setups, you'll have to update the [Service] block of your
funkwhale-server systemd unit file to launch the application server using daphne instead of gunicorn.

The new configuration should be similar to this:

.. code-block:: ini

    [Service]
    User=funkwhale
    # adapt this depending on the path of your funkwhale installation
    WorkingDirectory=/srv/funkwhale/api
    EnvironmentFile=/srv/funkwhale/config/.env
    ExecStart=/usr/local/bin/daphne -b ${FUNKWHALE_API_IP} -p ${FUNKWHALE_API_PORT} config.asgi:application

Ensure you update funkwhale's dependencies as usual to install the required
packages.

On both docker and non-docker setup, you'll also have to update your nginx
configuration for websocket support. Ensure you have the following blocks
included in your virtualhost file:

.. code-block:: txt

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

    server {
        ...
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

Remember to reload your nginx server after the edit.
2018-03-04 15:17:02 +01:00
api Version bump and changelog 2018-03-04 15:16:35 +01:00
changes Version bump and changelog 2018-03-04 15:16:35 +01:00
demo Fixed a typo in track importing instructions 2017-06-25 23:39:18 +02:00
deploy Sample updates, changelog and documentation for channels and activity 2018-03-03 23:18:33 +01:00
docker/nginx Initial channels integration 2018-03-01 18:38:31 +01:00
docs Fixed #85: broken documentation 2018-02-27 13:18:49 +01:00
front Added setting form to manage privacy level 2018-03-03 12:40:01 +01:00
.dockerignore Initial commit that merge both the front end and the API in the same repository 2017-06-23 23:00:42 +02:00
.editorconfig Initial commit that merge both the front end and the API in the same repository 2017-06-23 23:00:42 +02:00
.env.dev Removed now useless BACKEND_URL setting 2018-02-18 14:42:17 +01:00
.gitattributes Initial commit that merge both the front end and the API in the same repository 2017-06-23 23:00:42 +02:00
.gitignore Ignore useless files 2018-02-18 22:05:35 +01:00
.gitlab-ci.yml Added FUNWHALE_URL setting to use in activity stream in representations 2018-03-01 18:38:32 +01:00
CHANGELOG Version bump and changelog 2018-03-04 15:16:35 +01:00
CONTRIBUTORS.txt Initial commit that merge both the front end and the API in the same repository 2017-06-23 23:00:42 +02:00
LICENSE Initial commit that merge both the front end and the API in the same repository 2017-06-23 23:00:42 +02:00
README.rst Initial commit that merge both the front end and the API in the same repository 2017-06-23 23:00:42 +02:00
dev.yml Minor fixes to docker setup 2018-03-02 00:14:55 +01:00
pyproject.toml Now use towncrier for changelog management 2018-02-27 19:04:50 +01:00

README.rst

Funkwhale
=============

A self-hosted tribute to Grooveshark.com.

LICENSE: BSD

Setting up a development environment (docker)
----------------------------------------------

First of all, pull the repository.

Then, pull and build all the containers::

    docker-compose -f dev.yml build
    docker-compose -f dev.yml pull


API setup
^^^^^^^^^^

You'll have apply database migrations::

    docker-compose -f dev.yml run celeryworker python manage.py migrate

And to create an admin user::

    docker-compose -f dev.yml run celeryworker python manage.py createsuperuser


Launch all services
^^^^^^^^^^^^^^^^^^^

Then you can run everything with::

    docker-compose up

The API server will be accessible at http://localhost:6001, and the front-end at http://localhost:8080.

Running API tests
------------------

Everything is managed using docker and docker-compose, just run::

    ./api/runtests

This bash script invoke `python manage.py test` in a docker container under the hood, so you can use
traditional django test arguments and options, such as::

    ./api/runtests funkwhale_api.music   # run a specific app test