Funkwhale: наконец-то нормальный децентрализованный музыкальный сервис



    Grooveshark уже пять лет как закрыт. За это время появились десятки проектов поменьше с той же идеей — но на базе децентрализованных сетей. Проблема Grooveshark была в его централизации, которая позволила правообладателям завалить компанию исками, в итоге потопившими её. С тех пор любая музыкальная платформа с пользовательским контентом обязательно включает в слоганы «децентрализацию», «peer-to-peer», «криптографию» и конечно, блокчейн. У всех общие проблемы: несмотря на использование федеративных сетей и модных протоколов, всё управление стартапом сосредоточено в одном офисе. Пока платформа слишком мала чтобы её заметили, она слабо развивается. Стоит ей дорасти до более-менее крупной пользовательской базы, и через несколько месяцев она тонет под напором DMCA и судебных исков.

    Единственной жизнеспособной альтернативой, которая не закроется в любой момент, становятся community-driven проекты без головного офиса (и зачастую вообще без юрлица). Но даже в этом случае нет гарантии, что в один прекрасный день используемый вами сервер/хаб не накроется медным тазом, а значит нужна ещё и селф-хостед версия. Список сужается до единиц проектов, а если добавить вменяемый интерфейс и относительную легкость в развёртывании и использовании ноды, то мы останавливаемся на Funkwhale.

    Фичи


    • Разумеется, проект бесплатный, децентрализованный, без стоящей над ним организации
    • Редкое явление для подобных платформ, Funkwhale по протоколу Subsonic поддерживает сразу несколько (в том числе опенсорсных) приложений на iOS и Android, на десктопе есть Clementine
    • Вытекает из предыдущего, платформой можно пользоваться на всех девайсах, раздавая музыку, скажем, с домашнего хранилища
    • Хостить свою ноду (здесь их называют подами) необязательно, можно слушать с чужих
    • Каналы Funkwhale доступны из других федеративных сетей по протоколу ActivityPub
    • Чтобы захостить свой под не нужно часами долбиться с настройкой, есть вагон готовых сборок, и главное — нормально настроенный докер-образ!
    • У проекта хорошая поддержка комьюнити, как пользователей, так и разработчиков
    • Это опенсорс.

    Разворачиваем свой под


    Установить под можно на любую машину, и для вариантов с годами накопленных терабайтов музыки я бы рассматривал любой подкроватный сервер, подключенный к NAS. Кстати, судя по отдельным комментариям, под при желании можно запустить даже на Raspberry Pi, но я не проверял. У меня довольно мало музыки, поэтому я беру самый дешёвый VPS и разворачиваю систему на нём.

    Заказываем сервер


    Это статья в корпоративном блоге, поэтому берём сервер у VDSina. Я выбираю копеечный вариант с убунтой, хотя можно взять и любую другю систему, даже Windows Server. Но зачем?



    Не забудьте при создании подключить свой SSH-ключ, это удобнее, чем импортировать его вручную.

    Устанавливаем под


    Самый простой вариант — поставить под из докера. Здесь нужно понимать нюанс использования: хорошей практикой считается импортирование всей музыки из прокси-каталога с символическими ссылками на реальные каталоги, которые при этом могут быть как угодно раскиданы по машине и даже лежать на примонтированном устройстве. При обычной установке Funkwhale может ходить по всему хосту и брать музыку откуда угодно. При установке в докере надо либо париться с пробросом, либо хранить всю музыку внутри контейнера. Для моего варианта с одним небольшим архивом музыки это подходит. Кстати, по умолчанию под ставится в один контейнер, но если вы планируете создать масштабный хаб с высокими нагрузками, можно рассмотреть атомарную установку, так как она отлично масштабируется. Здесь мы её рассматривать не будем, потому что это очень уж специфичный случай, но вот ссылка на мануал.

    Docker


    Разумеется, нужно установить сам докер и docker-compose. Подробно расписывать этот процесс нет смысла, вот доки: docker, docker-compose.

    Создаем пользователя funkwhale


      sudo useradd -r -s /usr/bin/nologin -m -d /srv/funkwhale -U -G docker funkwhale
      cd /srv/funkwhale
    

    Логинимся и дальше работаем из-под него

      sudo -u funkwhale -H bash
    

    Создаем файл .env


      touch .env
      chmod 600 .env  # reduce permissions on the .env file since it contains sensitive data
      cat > .env << EOF
      # Replace 'your.funkwhale.example' with your actual domain
      FUNKWHALE_HOSTNAME=your.funkwhale.example
      # Protocol may also be: http
      FUNKWHALE_PROTOCOL=https
      # This limits the upload size
      NGINX_MAX_BODY_SIZE=100M
      # Bind to localhost
      FUNKWHALE_API_IP=127.0.0.1
      # Container port you want to expose on the host
      FUNKWHALE_API_PORT=5000
      # Generate and store a secure secret key for your instance
      DJANGO_SECRET_KEY=$(openssl rand -hex 45)
      # Remove this if you expose the container directly on ports 80/443
      NESTED_PROXY=1
      EOF
    

    Создаем docker-compose.yml


      version: "3"
      services:
        funkwhale:
          container_name: funkwhale
          restart: unless-stopped
          # change version number here when you want to do an upgrade
          image: funkwhale/all-in-one:1.0.1
          env_file: .env
          environment:
            # adapt to the pid/gid that own /srv/funkwhale/data
            - PUID=1000
            - PGID=1000
          volumes:
            - /srv/funkwhale/data:/data
            - /path/to/your/music/dir:/music:ro
          ports:
            - "5000:80"
    

    /path/to/your/music/dir — путь, по которому загружается музыка. Тот самый прокси-каталог, например.

    Поднимаем сервис


      docker-compose up -d
    

    Настраиваем reverse-proxy


    Установим nginx, так как на чистой системе его ещё не было

      sudo apt-get update
      sudo apt-get install nginx
    

    Применяем следующие команды:

      export FUNKWHALE_VERSION="1.0.1"
      # download the needed files
      curl -L -o /etc/nginx/funkwhale_proxy.conf "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/1.0.1/deploy/funkwhale_proxy.conf"
      curl -L -o /etc/nginx/sites-available/funkwhale.template "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/1.0.1/deploy/docker.proxy.template"
    

      # create a final nginx configuration using the template based on your environment
      set -a && source /srv/funkwhale/.env && set +a
      envsubst "`env | awk -F = '{printf \" $%s\", $$1}'`" \
          < /etc/nginx/sites-available/funkwhale.template \
          > /etc/nginx/sites-available/funkwhale.conf
      
      ln -s /etc/nginx/sites-available/funkwhale.conf /etc/nginx/sites-enabled/
    

    Готово! Сервис доступен на порту 5000




    Далее нужно будет зарегистрироваться в Funkwhale и импортировать музыку. Вот подробные доки для нетривиальных кейсов.

    Заключение


    Я рад, что наконец-то нашелся нормальный селф-хостед сервис для музыки, с которым не нужно проводить часы за установкой и настройкой. Вся процедура занимает минут пять, а продвинутая конфигурация хорошо описана в документации. При этом количество остальных плюшек впечатляет, особенно возможность выбрать под себя нормальное приложение для прослушивания на телефоне.

    Хорошего пользования!



    На правах рекламы


    Виртуальные серверы с мгновенной активацией на Linux или Windows. Сервер готов к работе через минуту после оплаты!

    VDSina.ru хостинг серверов
    Серверы в Москве и Амстердаме

    Комментарии 13

      +2
      то мы останавливаемся на Funkwhale.

      В последнем сообщении создатель ищет людей, кому передать проект
      https://blog.funkwhale.audio/~/Announcements/funkwhale-is-looking-for-new-maintainers

        +2

        Очень полезный и нужный проект, недавняя история с гуглмузыкой в очередной раз показала что доверия к продуктам от мегакорпораций нет.

          0
          После этой истории перешел на Spotify ( гуглмузыкой пользовался несколько лет)
            0

            Пользовался ей с 2012, но сейчас и на спотифай нет желания переходить, потому что снова нет гарантий, что завтра им что-нибудь в голову не ударит из-за чего они решат перейти на новую мОднЕьКую кОнЦепЦию с переписыванием всего.

              0
              к Споти больше доверия, так как муз сервис это основная ориентация, и пока у споти вроде нет других направлений на которые она могла бы переметнуться (плюс у гугла это не первый опыт закрывать проекты)
          0

          Прочитал. Даже перечитал. Совсем не понял какие плюсы относительно той же гугломузыки?

            +1
            Некоторая защита от жалоб правообладателей. Если нейросеть гугла посчитает, что музыка что-то нарушает, то гугл моментально удалит музыку или вообще забанит учётку. Централизованный сервис (который не выполнит указания гугла) тоже нетрудно забанить (на уровне хостинга или доменного имени). А тут бан чуть более сложный.
              +2

              Тем, что гуглмузыку завтра закроют, вместо нее будет убогое поделие, куда не перенесется часть библиотеки, приложение будет неудобным, а копирасты не дадут добро на часть библиотеки и твои купленные треки превратятся в тыкву.

                0
                Если вы про перенос на ютуб музыку, сначала тоже протестовал против, сейчас (два месяца как переехал) мне там не хватает только кубика «мне повезет». В остальном, мне он даже больше нравится, особенно в плане подбора треков и наличия музыки, которую более нигде не найдешь.

                По поводу правообладателей и этого всего — на гугломузыке (возможно мне так повезло) ни разу не встречал, что бы треки из библиотеки пропадали.
                  +1

                  А мне не зашло.
                  И это нормально.
                  Но меня лишают выбора (

              0

              Больше похоже не на децентрализированный сервис, а на группу централизированных сервисов. Даже торренты больше можно назвать сервисом, чем это. На первый взгляд, это обычное файлохранилище, где каждый сервер сам по себе.

                0
                Объясните пожалуйста, а какой в этом смысл?
                На картинке аренда сервера 10р в день. То есть примерно 300р в месяц. И это с ограничением на 15гб(если я правильно понял. У меня на ПК больше музыки сохранено)
                Я так понимаю, всю музыку перед этим надо самому найти и закачать. То есть хочешь новую песню, найди, скачай, закачай.

                За 300р в месяц можно спокойно купить подписку на какой-нибудь сервис, получить доступ почти ко всей музыке мира, рекомендациям, мобильным приложениям и веб версиям для прослушивания музыки.

                  0
                  За 300р в месяц можно спокойно купить подписку на какой-нибудь сервис, получить доступ почти ко всей музыке мира, рекомендациям, мобильным приложениям и веб версиям для прослушивания музыки.

                  Всё-таки не ко всей. Часть направлений представлена в стримингах хорошо, часть весьма плохо. И вот тогда проще самому собрать.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое