Skip to content

Single command install

Agate requested to merge single-command-install into master

This MR includes a simple shell script to boostrap a Funkwhale instance based on our Ansible role.

The script will:

  • Prompt the user for mandatory configuration options (domain, admin username and email)
  • install python3 if needed
  • Install ansible if needed
  • Install our ansible role and dependencies
  • Run the ansible role
  • create a superuser account
  • create a basic /srv/funkwhale/manage script to run Funkwhale management commands

This has been tested on:

  • A fresh Debian 9.7 server
  • A fresh Debian 10 server

Try it:

export FUNKWHALE_VERSION=develop
sudo sh -c "$(curl -sSL https://dev.funkwhale.audio/funkwhale/ansible/raw/single-command-install/install.sh)"

Be careful, it will modify your system, and don't run it on a server that already has a Funkwhale pod installed ;)

Todo after this is merged:

  • Document usage of this new installation procedure
  • Add CI/CD steps to build and publish the script on a friendly url, e.g https://get.funkwhale.audio
Typical output
export FUNKWHALE_VERSION=develop
root@test-script-installation-funkwhale:~# sh -c "$(curl -sSL https://dev.funkwhale.audio/funkwhale/ansible/raw/single-command-install/install.sh)"

Enter your desired Funkwhale domain (e.g funkwhale.example): test-installer.funkwhale.audio
Enter the username for the admin account (leave empty to skip account creation) test
Enter the email used for the admin user and Let's Encrypt certificate: contact@eliotberriot.com
Installation summary:
- version: develop
- domain: test-installer.funkwhale.audio
- Admin username: test
- Admin email: contact@eliotberriot.com

Do you want to proceed with the installation? [yes/no] yes

[Beginning installation]
[1/4] Checking python3 version
[1/4] 3.7.3 with sufficient version found, skipping
[1/4] Found Python 3.7.3, skipping upgrade
[2/4] Installing ansible dependencies...
Hit:1 http://security.debian.org buster/updates InRelease
Hit:2 http://mirrors.digitalocean.com/debian buster InRelease
Hit:3 http://mirrors.digitalocean.com/debian buster-updates InRelease
Hit:4 http://mirrors.digitalocean.com/debian buster-backports InRelease
Reading package lists... Done
Reading package lists... Done
Building dependency tree       
Reading state information... Done
curl is already the newest version (7.64.0-4).
sudo is already the newest version (1.8.27-1).
The following additional packages will be installed:
  binutils binutils-common binutils-x86-64-linux-gnu build-essential cpp cpp-8 dh-python dirmngr dpkg-dev fakeroot g++ g++-8 gcc gcc-8 gir1.2-glib-2.0
  git-man gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm iso-codes libalgorithm-diff-perl libalgorithm-diff-xs-perl
  libalgorithm-merge-perl libasan5 libassuan0 libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0 libcurl3-gnutls libdpkg-perl liberror-perl
  libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-8-dev libgdbm-compat4 libgdbm6 libgirepository-1.0-1 libgomp1 libisl19 libitm1 libksba8 liblsan0
  libmpc3 libmpfr6 libmpx2 libnpth0 libperl5.28 libpython3-dev libpython3.7 libpython3.7-dev libquadmath0 libstdc++-8-dev libtsan0 libubsan1 linux-libc-dev
  make manpages manpages-dev patch perl perl-modules-5.28 pinentry-curses python-apt-common python-pip-whl python3-crypto python3-dbus python3-dev
  python3-distutils python3-entrypoints python3-gi python3-keyring python3-keyrings.alt python3-lib2to3 python3-secretstorage python3-setuptools
  python3-wheel python3-xdg python3.7-dev xz-utils
Suggested packages:
  binutils-doc cpp-doc gcc-8-locales dbus-user-session pinentry-gnome3 tor debian-keyring g++-multilib g++-8-multilib gcc-8-doc libstdc++6-8-dbg
  gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-8-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan5-dbg liblsan0-dbg
  libtsan0-dbg libubsan1-dbg libmpx2-dbg libquadmath0-dbg git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-cvs
  git-mediawiki git-svn parcimonie xloadimage scdaemon isoquery glibc-doc bzr libstdc++-8-doc make-doc man-browser ed diffutils-doc perl-doc
  libterm-readline-gnu-perl | libterm-readline-perl-perl libb-debug-perl liblocale-codes-perl pinentry-doc python3-apt-dbg python-apt-doc python-crypto-doc
  python-dbus-doc python3-dbus-dbg gnome-keyring libkf5wallet-bin gir1.2-gnomekeyring-1.0 python-secretstorage-doc python-setuptools-doc
The following NEW packages will be installed:
  binutils binutils-common binutils-x86-64-linux-gnu build-essential cpp cpp-8 dh-python dirmngr dpkg-dev fakeroot g++ g++-8 gcc gcc-8 gir1.2-glib-2.0 git
  git-man gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm iso-codes libalgorithm-diff-perl libalgorithm-diff-xs-perl
  libalgorithm-merge-perl libasan5 libassuan0 libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0 libcurl3-gnutls libdpkg-perl liberror-perl
  libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-8-dev libgdbm-compat4 libgdbm6 libgirepository-1.0-1 libgomp1 libisl19 libitm1 libksba8 liblsan0
  libmpc3 libmpfr6 libmpx2 libnpth0 libperl5.28 libpython3-dev libpython3.7 libpython3.7-dev libquadmath0 libstdc++-8-dev libtsan0 libubsan1 linux-libc-dev
  make manpages manpages-dev patch perl perl-modules-5.28 pinentry-curses python-apt-common python-pip-whl python3-apt python3-crypto python3-dbus
  python3-dev python3-distutils python3-entrypoints python3-gi python3-keyring python3-keyrings.alt python3-lib2to3 python3-pip python3-secretstorage
  python3-setuptools python3-wheel python3-xdg python3.7-dev xz-utils
0 upgraded, 91 newly installed, 0 to remove and 0 not upgraded.
Need to get 129 MB of archives.
After this operation, 410 MB of additional disk space will be used.
Get:1 http://security.debian.org buster/updates/main amd64 linux-libc-dev amd64 4.19.37-5+deb10u1 [1,185 kB]
Get:2 http://mirrors.digitalocean.com/debian buster/main amd64 perl-modules-5.28 all 5.28.1-6 [2,873 kB]
Get:3 http://mirrors.digitalocean.com/debian buster/main amd64 libgdbm6 amd64 1.18.1-4 [64.7 kB]
Get:4 http://mirrors.digitalocean.com/debian buster/main amd64 libgdbm-compat4 amd64 1.18.1-4 [44.1 kB]
Get:5 http://mirrors.digitalocean.com/debian buster/main amd64 libperl5.28 amd64 5.28.1-6 [3,883 kB]
Get:6 http://mirrors.digitalocean.com/debian buster/main amd64 perl amd64 5.28.1-6 [204 kB]
Get:7 http://mirrors.digitalocean.com/debian buster/main amd64 manpages all 4.16-2 [1,295 kB]
Get:8 http://mirrors.digitalocean.com/debian buster/main amd64 xz-utils amd64 5.2.4-1 [183 kB]
Get:9 http://mirrors.digitalocean.com/debian buster/main amd64 binutils-common amd64 2.31.1-16 [2,073 kB]
Get:10 http://mirrors.digitalocean.com/debian buster/main amd64 libbinutils amd64 2.31.1-16 [478 kB]
Get:11 http://mirrors.digitalocean.com/debian buster/main amd64 binutils-x86-64-linux-gnu amd64 2.31.1-16 [1,823 kB]
Get:12 http://mirrors.digitalocean.com/debian buster/main amd64 binutils amd64 2.31.1-16 [56.8 kB]
Get:13 http://mirrors.digitalocean.com/debian buster/main amd64 libc-dev-bin amd64 2.28-10 [275 kB]
Get:14 http://mirrors.digitalocean.com/debian buster/main amd64 libc6-dev amd64 2.28-10 [2,691 kB]
Get:15 http://mirrors.digitalocean.com/debian buster/main amd64 libisl19 amd64 0.20-2 [587 kB]
Get:16 http://mirrors.digitalocean.com/debian buster/main amd64 libmpfr6 amd64 4.0.2-1 [775 kB]
Get:17 http://mirrors.digitalocean.com/debian buster/main amd64 libmpc3 amd64 1.1.0-1 [41.3 kB]
Get:18 http://mirrors.digitalocean.com/debian buster/main amd64 cpp-8 amd64 8.3.0-6 [8,914 kB]
Get:19 http://mirrors.digitalocean.com/debian buster/main amd64 cpp amd64 4:8.3.0-1 [19.4 kB]
Get:20 http://mirrors.digitalocean.com/debian buster/main amd64 libcc1-0 amd64 8.3.0-6 [46.6 kB]
Get:21 http://mirrors.digitalocean.com/debian buster/main amd64 libgomp1 amd64 8.3.0-6 [75.8 kB]
Get:22 http://mirrors.digitalocean.com/debian buster/main amd64 libitm1 amd64 8.3.0-6 [27.7 kB]
Get:23 http://mirrors.digitalocean.com/debian buster/main amd64 libatomic1 amd64 8.3.0-6 [9,032 B]
Get:24 http://mirrors.digitalocean.com/debian buster/main amd64 libasan5 amd64 8.3.0-6 [362 kB]
Get:25 http://mirrors.digitalocean.com/debian buster/main amd64 liblsan0 amd64 8.3.0-6 [131 kB]
Get:26 http://mirrors.digitalocean.com/debian buster/main amd64 libtsan0 amd64 8.3.0-6 [283 kB]
Get:27 http://mirrors.digitalocean.com/debian buster/main amd64 libubsan1 amd64 8.3.0-6 [120 kB]
Get:28 http://mirrors.digitalocean.com/debian buster/main amd64 libmpx2 amd64 8.3.0-6 [11.4 kB]
Get:29 http://mirrors.digitalocean.com/debian buster/main amd64 libquadmath0 amd64 8.3.0-6 [133 kB]
Get:30 http://mirrors.digitalocean.com/debian buster/main amd64 libgcc-8-dev amd64 8.3.0-6 [2,298 kB]
Get:31 http://mirrors.digitalocean.com/debian buster/main amd64 gcc-8 amd64 8.3.0-6 [9,452 kB]
Get:32 http://mirrors.digitalocean.com/debian buster/main amd64 gcc amd64 4:8.3.0-1 [5,196 B]
Get:33 http://mirrors.digitalocean.com/debian buster/main amd64 libstdc++-8-dev amd64 8.3.0-6 [1,532 kB]
Get:34 http://mirrors.digitalocean.com/debian buster/main amd64 g++-8 amd64 8.3.0-6 [9,752 kB]
Get:35 http://mirrors.digitalocean.com/debian buster/main amd64 g++ amd64 4:8.3.0-1 [1,644 B]
Get:36 http://mirrors.digitalocean.com/debian buster/main amd64 make amd64 4.2.1-1.2 [341 kB]
Get:37 http://mirrors.digitalocean.com/debian buster/main amd64 libdpkg-perl all 1.19.7 [1,414 kB]
Get:38 http://mirrors.digitalocean.com/debian buster/main amd64 patch amd64 2.7.6-3 [126 kB]
Get:39 http://mirrors.digitalocean.com/debian buster/main amd64 dpkg-dev all 1.19.7 [1,773 kB]
Get:40 http://mirrors.digitalocean.com/debian buster/main amd64 build-essential amd64 12.6 [7,576 B]
Get:41 http://mirrors.digitalocean.com/debian buster/main amd64 python3-lib2to3 all 3.7.3-1 [76.7 kB]
Get:42 http://mirrors.digitalocean.com/debian buster/main amd64 python3-distutils all 3.7.3-1 [142 kB]
Get:43 http://mirrors.digitalocean.com/debian buster/main amd64 dh-python all 3.20190308 [99.3 kB]
Get:44 http://mirrors.digitalocean.com/debian buster/main amd64 libassuan0 amd64 2.5.2-1 [49.4 kB]
Get:45 http://mirrors.digitalocean.com/debian buster/main amd64 gpgconf amd64 2.2.12-1 [509 kB]
Get:46 http://mirrors.digitalocean.com/debian buster/main amd64 libksba8 amd64 1.3.5-2 [99.7 kB]
Get:47 http://mirrors.digitalocean.com/debian buster/main amd64 libnpth0 amd64 1.6-1 [18.4 kB]
Get:48 http://mirrors.digitalocean.com/debian buster/main amd64 dirmngr amd64 2.2.12-1 [711 kB]
Get:49 http://mirrors.digitalocean.com/debian buster/main amd64 libfakeroot amd64 1.23-1 [45.9 kB]
Get:50 http://mirrors.digitalocean.com/debian buster/main amd64 fakeroot amd64 1.23-1 [85.8 kB]
Get:51 http://mirrors.digitalocean.com/debian buster/main amd64 libgirepository-1.0-1 amd64 1.58.3-2 [92.8 kB]
Get:52 http://mirrors.digitalocean.com/debian buster/main amd64 gir1.2-glib-2.0 amd64 1.58.3-2 [143 kB]
Get:53 http://mirrors.digitalocean.com/debian buster/main amd64 libcurl3-gnutls amd64 7.64.0-4 [329 kB]
Get:54 http://mirrors.digitalocean.com/debian buster/main amd64 liberror-perl all 0.17027-2 [30.9 kB]
Get:55 http://mirrors.digitalocean.com/debian buster/main amd64 git-man all 1:2.20.1-2 [1,619 kB]
Get:56 http://mirrors.digitalocean.com/debian buster/main amd64 git amd64 1:2.20.1-2 [5,621 kB]
Get:57 http://mirrors.digitalocean.com/debian buster/main amd64 gnupg-l10n all 2.2.12-1 [1,008 kB]
Get:58 http://mirrors.digitalocean.com/debian buster/main amd64 gnupg-utils amd64 2.2.12-1 [857 kB]
Get:59 http://mirrors.digitalocean.com/debian buster/main amd64 gpg amd64 2.2.12-1 [862 kB]
Get:60 http://mirrors.digitalocean.com/debian buster/main amd64 pinentry-curses amd64 1.1.0-2 [64.5 kB]
Get:61 http://mirrors.digitalocean.com/debian buster/main amd64 gpg-agent amd64 2.2.12-1 [617 kB]
Get:62 http://mirrors.digitalocean.com/debian buster/main amd64 gpg-wks-client amd64 2.2.12-1 [484 kB]
Get:63 http://mirrors.digitalocean.com/debian buster/main amd64 gpg-wks-server amd64 2.2.12-1 [477 kB]
Get:64 http://mirrors.digitalocean.com/debian buster/main amd64 gpgsm amd64 2.2.12-1 [602 kB]
Get:65 http://mirrors.digitalocean.com/debian buster/main amd64 gnupg all 2.2.12-1 [715 kB]
Get:66 http://mirrors.digitalocean.com/debian buster/main amd64 iso-codes all 4.2-1 [2,713 kB]
Get:67 http://mirrors.digitalocean.com/debian buster/main amd64 libalgorithm-diff-perl all 1.19.03-2 [47.9 kB]
Get:68 http://mirrors.digitalocean.com/debian buster/main amd64 libalgorithm-diff-xs-perl amd64 0.04-5+b1 [11.8 kB]
Get:69 http://mirrors.digitalocean.com/debian buster/main amd64 libalgorithm-merge-perl all 0.08-3 [12.7 kB]
Get:70 http://mirrors.digitalocean.com/debian buster/main amd64 libexpat1-dev amd64 2.2.6-2 [152 kB]
Get:71 http://mirrors.digitalocean.com/debian buster/main amd64 libfile-fcntllock-perl amd64 0.22-3+b5 [35.4 kB]
Get:72 http://mirrors.digitalocean.com/debian buster/main amd64 libpython3.7 amd64 3.7.3-2 [1,498 kB]
Get:73 http://mirrors.digitalocean.com/debian buster/main amd64 libpython3.7-dev amd64 3.7.3-2 [48.4 MB]
Get:74 http://mirrors.digitalocean.com/debian buster/main amd64 libpython3-dev amd64 3.7.3-1 [20.1 kB]
Get:75 http://mirrors.digitalocean.com/debian buster/main amd64 manpages-dev all 4.16-2 [2,232 kB]
Get:76 http://mirrors.digitalocean.com/debian buster/main amd64 python-apt-common all 1.8.4 [94.9 kB]
Get:77 http://mirrors.digitalocean.com/debian buster/main amd64 python-pip-whl all 18.1-5 [1,591 kB]
Get:78 http://mirrors.digitalocean.com/debian buster/main amd64 python3-apt amd64 1.8.4 [182 kB]
Get:79 http://mirrors.digitalocean.com/debian buster/main amd64 python3-crypto amd64 2.6.1-9+b1 [263 kB]
Get:80 http://mirrors.digitalocean.com/debian buster/main amd64 python3-dbus amd64 1.2.8-3 [103 kB]
Get:81 http://mirrors.digitalocean.com/debian buster/main amd64 python3.7-dev amd64 3.7.3-2 [509 kB]
Get:82 http://mirrors.digitalocean.com/debian buster/main amd64 python3-dev amd64 3.7.3-1 [1,264 B]
Get:83 http://mirrors.digitalocean.com/debian buster/main amd64 python3-entrypoints all 0.3-1 [5,508 B]
Get:84 http://mirrors.digitalocean.com/debian buster/main amd64 python3-gi amd64 3.30.4-1 [180 kB]
Get:85 http://mirrors.digitalocean.com/debian buster/main amd64 python3-secretstorage all 2.3.1-2 [14.2 kB]
Get:86 http://mirrors.digitalocean.com/debian buster/main amd64 python3-keyring all 17.1.1-1 [43.1 kB]
Get:87 http://mirrors.digitalocean.com/debian buster/main amd64 python3-keyrings.alt all 3.1.1-1 [18.2 kB]                                                   
Get:88 http://mirrors.digitalocean.com/debian buster/main amd64 python3-pip all 18.1-5 [171 kB]                                                              
Get:89 http://mirrors.digitalocean.com/debian buster/main amd64 python3-setuptools all 40.8.0-1 [306 kB]                                                     
Get:90 http://mirrors.digitalocean.com/debian buster/main amd64 python3-wheel all 0.32.3-2 [19.4 kB]                                                         
Get:91 http://mirrors.digitalocean.com/debian buster/main amd64 python3-xdg all 0.25-5 [35.9 kB]                                                             
Fetched 129 MB in 6s (21.0 MB/s)                                                                                                                             
Extracting templates from packages: 100%
Selecting previously unselected package perl-modules-5.28.
(Reading database ... 27058 files and directories currently installed.)
Preparing to unpack .../00-perl-modules-5.28_5.28.1-6_all.deb ...
Unpacking perl-modules-5.28 (5.28.1-6) ...
Selecting previously unselected package libgdbm6:amd64.
Preparing to unpack .../01-libgdbm6_1.18.1-4_amd64.deb ...
Unpacking libgdbm6:amd64 (1.18.1-4) ...
Selecting previously unselected package libgdbm-compat4:amd64.
Preparing to unpack .../02-libgdbm-compat4_1.18.1-4_amd64.deb ...
Unpacking libgdbm-compat4:amd64 (1.18.1-4) ...
Selecting previously unselected package libperl5.28:amd64.
Preparing to unpack .../03-libperl5.28_5.28.1-6_amd64.deb ...
Unpacking libperl5.28:amd64 (5.28.1-6) ...
Selecting previously unselected package perl.
Preparing to unpack .../04-perl_5.28.1-6_amd64.deb ...
Unpacking perl (5.28.1-6) ...
Selecting previously unselected package manpages.
Preparing to unpack .../05-manpages_4.16-2_all.deb ...
Unpacking manpages (4.16-2) ...
Selecting previously unselected package xz-utils.
Preparing to unpack .../06-xz-utils_5.2.4-1_amd64.deb ...
Unpacking xz-utils (5.2.4-1) ...
Selecting previously unselected package binutils-common:amd64.
Preparing to unpack .../07-binutils-common_2.31.1-16_amd64.deb ...
Unpacking binutils-common:amd64 (2.31.1-16) ...
Selecting previously unselected package libbinutils:amd64.
Preparing to unpack .../08-libbinutils_2.31.1-16_amd64.deb ...
Unpacking libbinutils:amd64 (2.31.1-16) ...
Selecting previously unselected package binutils-x86-64-linux-gnu.
Preparing to unpack .../09-binutils-x86-64-linux-gnu_2.31.1-16_amd64.deb ...
Unpacking binutils-x86-64-linux-gnu (2.31.1-16) ...
Selecting previously unselected package binutils.
Preparing to unpack .../10-binutils_2.31.1-16_amd64.deb ...
Unpacking binutils (2.31.1-16) ...
Selecting previously unselected package libc-dev-bin.
Preparing to unpack .../11-libc-dev-bin_2.28-10_amd64.deb ...
Unpacking libc-dev-bin (2.28-10) ...
Selecting previously unselected package linux-libc-dev:amd64.
Preparing to unpack .../12-linux-libc-dev_4.19.37-5+deb10u1_amd64.deb ...
Unpacking linux-libc-dev:amd64 (4.19.37-5+deb10u1) ...
Selecting previously unselected package libc6-dev:amd64.
Preparing to unpack .../13-libc6-dev_2.28-10_amd64.deb ...
Unpacking libc6-dev:amd64 (2.28-10) ...
Selecting previously unselected package libisl19:amd64.
Preparing to unpack .../14-libisl19_0.20-2_amd64.deb ...
Unpacking libisl19:amd64 (0.20-2) ...
Selecting previously unselected package libmpfr6:amd64.
Preparing to unpack .../15-libmpfr6_4.0.2-1_amd64.deb ...
Unpacking libmpfr6:amd64 (4.0.2-1) ...
Selecting previously unselected package libmpc3:amd64.
Preparing to unpack .../16-libmpc3_1.1.0-1_amd64.deb ...
Unpacking libmpc3:amd64 (1.1.0-1) ...
Selecting previously unselected package cpp-8.
Preparing to unpack .../17-cpp-8_8.3.0-6_amd64.deb ...
Unpacking cpp-8 (8.3.0-6) ...
Selecting previously unselected package cpp.
Preparing to unpack .../18-cpp_4%3a8.3.0-1_amd64.deb ...
Unpacking cpp (4:8.3.0-1) ...
Selecting previously unselected package libcc1-0:amd64.
Preparing to unpack .../19-libcc1-0_8.3.0-6_amd64.deb ...
Unpacking libcc1-0:amd64 (8.3.0-6) ...
Selecting previously unselected package libgomp1:amd64.
Preparing to unpack .../20-libgomp1_8.3.0-6_amd64.deb ...
Unpacking libgomp1:amd64 (8.3.0-6) ...
Selecting previously unselected package libitm1:amd64.
Preparing to unpack .../21-libitm1_8.3.0-6_amd64.deb ...
Unpacking libitm1:amd64 (8.3.0-6) ...
Selecting previously unselected package libatomic1:amd64.
Preparing to unpack .../22-libatomic1_8.3.0-6_amd64.deb ...
Unpacking libatomic1:amd64 (8.3.0-6) ...
Selecting previously unselected package libasan5:amd64.
Preparing to unpack .../23-libasan5_8.3.0-6_amd64.deb ...
Unpacking libasan5:amd64 (8.3.0-6) ...
Selecting previously unselected package liblsan0:amd64.
Preparing to unpack .../24-liblsan0_8.3.0-6_amd64.deb ...
Unpacking liblsan0:amd64 (8.3.0-6) ...
Selecting previously unselected package libtsan0:amd64.
Preparing to unpack .../25-libtsan0_8.3.0-6_amd64.deb ...
Unpacking libtsan0:amd64 (8.3.0-6) ...
Selecting previously unselected package libubsan1:amd64.
Preparing to unpack .../26-libubsan1_8.3.0-6_amd64.deb ...
Unpacking libubsan1:amd64 (8.3.0-6) ...
Selecting previously unselected package libmpx2:amd64.
Preparing to unpack .../27-libmpx2_8.3.0-6_amd64.deb ...
Unpacking libmpx2:amd64 (8.3.0-6) ...
Selecting previously unselected package libquadmath0:amd64.
Preparing to unpack .../28-libquadmath0_8.3.0-6_amd64.deb ...
Unpacking libquadmath0:amd64 (8.3.0-6) ...
Selecting previously unselected package libgcc-8-dev:amd64.
Preparing to unpack .../29-libgcc-8-dev_8.3.0-6_amd64.deb ...
Unpacking libgcc-8-dev:amd64 (8.3.0-6) ...
Selecting previously unselected package gcc-8.
Preparing to unpack .../30-gcc-8_8.3.0-6_amd64.deb ...
Unpacking gcc-8 (8.3.0-6) ...
Selecting previously unselected package gcc.
Preparing to unpack .../31-gcc_4%3a8.3.0-1_amd64.deb ...
Unpacking gcc (4:8.3.0-1) ...
Selecting previously unselected package libstdc++-8-dev:amd64.
Preparing to unpack .../32-libstdc++-8-dev_8.3.0-6_amd64.deb ...
Unpacking libstdc++-8-dev:amd64 (8.3.0-6) ...
Selecting previously unselected package g++-8.
Preparing to unpack .../33-g++-8_8.3.0-6_amd64.deb ...
Unpacking g++-8 (8.3.0-6) ...
Selecting previously unselected package g++.
Preparing to unpack .../34-g++_4%3a8.3.0-1_amd64.deb ...
Unpacking g++ (4:8.3.0-1) ...
Selecting previously unselected package make.
Preparing to unpack .../35-make_4.2.1-1.2_amd64.deb ...
Unpacking make (4.2.1-1.2) ...
Selecting previously unselected package libdpkg-perl.
Preparing to unpack .../36-libdpkg-perl_1.19.7_all.deb ...
Unpacking libdpkg-perl (1.19.7) ...
Selecting previously unselected package patch.
Preparing to unpack .../37-patch_2.7.6-3_amd64.deb ...
Unpacking patch (2.7.6-3) ...
Selecting previously unselected package dpkg-dev.
Preparing to unpack .../38-dpkg-dev_1.19.7_all.deb ...
Unpacking dpkg-dev (1.19.7) ...
Selecting previously unselected package build-essential.
Preparing to unpack .../39-build-essential_12.6_amd64.deb ...
Unpacking build-essential (12.6) ...
Selecting previously unselected package python3-lib2to3.
Preparing to unpack .../40-python3-lib2to3_3.7.3-1_all.deb ...
Unpacking python3-lib2to3 (3.7.3-1) ...
Selecting previously unselected package python3-distutils.
Preparing to unpack .../41-python3-distutils_3.7.3-1_all.deb ...
Unpacking python3-distutils (3.7.3-1) ...
Selecting previously unselected package dh-python.
Preparing to unpack .../42-dh-python_3.20190308_all.deb ...
Unpacking dh-python (3.20190308) ...
Selecting previously unselected package libassuan0:amd64.
Preparing to unpack .../43-libassuan0_2.5.2-1_amd64.deb ...
Unpacking libassuan0:amd64 (2.5.2-1) ...
Selecting previously unselected package gpgconf.
Preparing to unpack .../44-gpgconf_2.2.12-1_amd64.deb ...
Unpacking gpgconf (2.2.12-1) ...
Selecting previously unselected package libksba8:amd64.
Preparing to unpack .../45-libksba8_1.3.5-2_amd64.deb ...
Unpacking libksba8:amd64 (1.3.5-2) ...
Selecting previously unselected package libnpth0:amd64.
Preparing to unpack .../46-libnpth0_1.6-1_amd64.deb ...
Unpacking libnpth0:amd64 (1.6-1) ...
Selecting previously unselected package dirmngr.
Preparing to unpack .../47-dirmngr_2.2.12-1_amd64.deb ...
Unpacking dirmngr (2.2.12-1) ...
Selecting previously unselected package libfakeroot:amd64.
Preparing to unpack .../48-libfakeroot_1.23-1_amd64.deb ...
Unpacking libfakeroot:amd64 (1.23-1) ...
Selecting previously unselected package fakeroot.
Preparing to unpack .../49-fakeroot_1.23-1_amd64.deb ...
Unpacking fakeroot (1.23-1) ...
Selecting previously unselected package libgirepository-1.0-1:amd64.
Preparing to unpack .../50-libgirepository-1.0-1_1.58.3-2_amd64.deb ...
Unpacking libgirepository-1.0-1:amd64 (1.58.3-2) ...
Selecting previously unselected package gir1.2-glib-2.0:amd64.
Preparing to unpack .../51-gir1.2-glib-2.0_1.58.3-2_amd64.deb ...
Unpacking gir1.2-glib-2.0:amd64 (1.58.3-2) ...
Selecting previously unselected package libcurl3-gnutls:amd64.
Preparing to unpack .../52-libcurl3-gnutls_7.64.0-4_amd64.deb ...
Unpacking libcurl3-gnutls:amd64 (7.64.0-4) ...
Selecting previously unselected package liberror-perl.
Preparing to unpack .../53-liberror-perl_0.17027-2_all.deb ...
Unpacking liberror-perl (0.17027-2) ...
Selecting previously unselected package git-man.
Preparing to unpack .../54-git-man_1%3a2.20.1-2_all.deb ...
Unpacking git-man (1:2.20.1-2) ...
Selecting previously unselected package git.
Preparing to unpack .../55-git_1%3a2.20.1-2_amd64.deb ...
Unpacking git (1:2.20.1-2) ...
Selecting previously unselected package gnupg-l10n.
Preparing to unpack .../56-gnupg-l10n_2.2.12-1_all.deb ...
Unpacking gnupg-l10n (2.2.12-1) ...
Selecting previously unselected package gnupg-utils.
Preparing to unpack .../57-gnupg-utils_2.2.12-1_amd64.deb ...
Unpacking gnupg-utils (2.2.12-1) ...
Selecting previously unselected package gpg.
Preparing to unpack .../58-gpg_2.2.12-1_amd64.deb ...
Unpacking gpg (2.2.12-1) ...
Selecting previously unselected package pinentry-curses.
Preparing to unpack .../59-pinentry-curses_1.1.0-2_amd64.deb ...
Unpacking pinentry-curses (1.1.0-2) ...
Selecting previously unselected package gpg-agent.
Preparing to unpack .../60-gpg-agent_2.2.12-1_amd64.deb ...
Unpacking gpg-agent (2.2.12-1) ...
Selecting previously unselected package gpg-wks-client.
Preparing to unpack .../61-gpg-wks-client_2.2.12-1_amd64.deb ...
Unpacking gpg-wks-client (2.2.12-1) ...
Selecting previously unselected package gpg-wks-server.
Preparing to unpack .../62-gpg-wks-server_2.2.12-1_amd64.deb ...
Unpacking gpg-wks-server (2.2.12-1) ...
Selecting previously unselected package gpgsm.
Preparing to unpack .../63-gpgsm_2.2.12-1_amd64.deb ...
Unpacking gpgsm (2.2.12-1) ...
Selecting previously unselected package gnupg.
Preparing to unpack .../64-gnupg_2.2.12-1_all.deb ...
Unpacking gnupg (2.2.12-1) ...
Selecting previously unselected package iso-codes.
Preparing to unpack .../65-iso-codes_4.2-1_all.deb ...
Unpacking iso-codes (4.2-1) ...
Selecting previously unselected package libalgorithm-diff-perl.
Preparing to unpack .../66-libalgorithm-diff-perl_1.19.03-2_all.deb ...
Unpacking libalgorithm-diff-perl (1.19.03-2) ...
Selecting previously unselected package libalgorithm-diff-xs-perl.
Preparing to unpack .../67-libalgorithm-diff-xs-perl_0.04-5+b1_amd64.deb ...
Unpacking libalgorithm-diff-xs-perl (0.04-5+b1) ...
Selecting previously unselected package libalgorithm-merge-perl.
Preparing to unpack .../68-libalgorithm-merge-perl_0.08-3_all.deb ...
Unpacking libalgorithm-merge-perl (0.08-3) ...
Selecting previously unselected package libexpat1-dev:amd64.
Preparing to unpack .../69-libexpat1-dev_2.2.6-2_amd64.deb ...
Unpacking libexpat1-dev:amd64 (2.2.6-2) ...
Selecting previously unselected package libfile-fcntllock-perl.
Preparing to unpack .../70-libfile-fcntllock-perl_0.22-3+b5_amd64.deb ...
Unpacking libfile-fcntllock-perl (0.22-3+b5) ...
Selecting previously unselected package libpython3.7:amd64.
Preparing to unpack .../71-libpython3.7_3.7.3-2_amd64.deb ...
Unpacking libpython3.7:amd64 (3.7.3-2) ...
Selecting previously unselected package libpython3.7-dev:amd64.
Preparing to unpack .../72-libpython3.7-dev_3.7.3-2_amd64.deb ...
Unpacking libpython3.7-dev:amd64 (3.7.3-2) ...
Selecting previously unselected package libpython3-dev:amd64.
Preparing to unpack .../73-libpython3-dev_3.7.3-1_amd64.deb ...
Unpacking libpython3-dev:amd64 (3.7.3-1) ...
Selecting previously unselected package manpages-dev.
Preparing to unpack .../74-manpages-dev_4.16-2_all.deb ...
Unpacking manpages-dev (4.16-2) ...
Selecting previously unselected package python-apt-common.
Preparing to unpack .../75-python-apt-common_1.8.4_all.deb ...
Unpacking python-apt-common (1.8.4) ...
Selecting previously unselected package python-pip-whl.
Preparing to unpack .../76-python-pip-whl_18.1-5_all.deb ...
Unpacking python-pip-whl (18.1-5) ...
Selecting previously unselected package python3-apt.
Preparing to unpack .../77-python3-apt_1.8.4_amd64.deb ...
Unpacking python3-apt (1.8.4) ...
Selecting previously unselected package python3-crypto.
Preparing to unpack .../78-python3-crypto_2.6.1-9+b1_amd64.deb ...
Unpacking python3-crypto (2.6.1-9+b1) ...
Selecting previously unselected package python3-dbus.
Preparing to unpack .../79-python3-dbus_1.2.8-3_amd64.deb ...
Unpacking python3-dbus (1.2.8-3) ...
Selecting previously unselected package python3.7-dev.
Preparing to unpack .../80-python3.7-dev_3.7.3-2_amd64.deb ...
Unpacking python3.7-dev (3.7.3-2) ...
Selecting previously unselected package python3-dev.
Preparing to unpack .../81-python3-dev_3.7.3-1_amd64.deb ...
Unpacking python3-dev (3.7.3-1) ...
Selecting previously unselected package python3-entrypoints.
Preparing to unpack .../82-python3-entrypoints_0.3-1_all.deb ...
Unpacking python3-entrypoints (0.3-1) ...
Selecting previously unselected package python3-gi.
Preparing to unpack .../83-python3-gi_3.30.4-1_amd64.deb ...
Unpacking python3-gi (3.30.4-1) ...
Selecting previously unselected package python3-secretstorage.
Preparing to unpack .../84-python3-secretstorage_2.3.1-2_all.deb ...
Unpacking python3-secretstorage (2.3.1-2) ...
Selecting previously unselected package python3-keyring.
Preparing to unpack .../85-python3-keyring_17.1.1-1_all.deb ...
Unpacking python3-keyring (17.1.1-1) ...
Selecting previously unselected package python3-keyrings.alt.
Preparing to unpack .../86-python3-keyrings.alt_3.1.1-1_all.deb ...
Unpacking python3-keyrings.alt (3.1.1-1) ...
Selecting previously unselected package python3-pip.
Preparing to unpack .../87-python3-pip_18.1-5_all.deb ...
Unpacking python3-pip (18.1-5) ...
Selecting previously unselected package python3-setuptools.
Preparing to unpack .../88-python3-setuptools_40.8.0-1_all.deb ...
Unpacking python3-setuptools (40.8.0-1) ...
Selecting previously unselected package python3-wheel.
Preparing to unpack .../89-python3-wheel_0.32.3-2_all.deb ...
Unpacking python3-wheel (0.32.3-2) ...
Selecting previously unselected package python3-xdg.
Preparing to unpack .../90-python3-xdg_0.25-5_all.deb ...
Unpacking python3-xdg (0.25-5) ...
Setting up python3-entrypoints (0.3-1) ...
Setting up perl-modules-5.28 (5.28.1-6) ...
Setting up libksba8:amd64 (1.3.5-2) ...
Setting up python3-dbus (1.2.8-3) ...
Setting up libpython3.7:amd64 (3.7.3-2) ...
Setting up manpages (4.16-2) ...
Setting up binutils-common:amd64 (2.31.1-16) ...
Setting up linux-libc-dev:amd64 (4.19.37-5+deb10u1) ...
Setting up libcurl3-gnutls:amd64 (7.64.0-4) ...
Setting up libnpth0:amd64 (1.6-1) ...
Setting up libassuan0:amd64 (2.5.2-1) ...
Setting up libgomp1:amd64 (8.3.0-6) ...
Setting up python3-xdg (0.25-5) ...
Setting up python3-wheel (0.32.3-2) ...
Setting up libfakeroot:amd64 (1.23-1) ...
Setting up fakeroot (1.23-1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode
Setting up libasan5:amd64 (8.3.0-6) ...
Setting up python3-secretstorage (2.3.1-2) ...
Setting up make (4.2.1-1.2) ...
Setting up libmpfr6:amd64 (4.0.2-1) ...
Setting up gnupg-l10n (2.2.12-1) ...
Setting up xz-utils (5.2.4-1) ...
update-alternatives: using /usr/bin/xz to provide /usr/bin/lzma (lzma) in auto mode
Setting up libquadmath0:amd64 (8.3.0-6) ...
Setting up libmpc3:amd64 (1.1.0-1) ...
Setting up libatomic1:amd64 (8.3.0-6) ...
Setting up patch (2.7.6-3) ...
Setting up libmpx2:amd64 (8.3.0-6) ...
Setting up libubsan1:amd64 (8.3.0-6) ...
Setting up libisl19:amd64 (0.20-2) ...
Setting up python-apt-common (1.8.4) ...
Setting up gpgconf (2.2.12-1) ...
Setting up python3-keyring (17.1.1-1) ...
Setting up git-man (1:2.20.1-2) ...
Setting up python3-crypto (2.6.1-9+b1) ...
Setting up libgirepository-1.0-1:amd64 (1.58.3-2) ...
Setting up python-pip-whl (18.1-5) ...
Setting up libbinutils:amd64 (2.31.1-16) ...
Setting up cpp-8 (8.3.0-6) ...
Setting up libc-dev-bin (2.28-10) ...
Setting up python3-lib2to3 (3.7.3-1) ...
Setting up libcc1-0:amd64 (8.3.0-6) ...
Setting up iso-codes (4.2-1) ...
Setting up gpg (2.2.12-1) ...
Setting up liblsan0:amd64 (8.3.0-6) ...
Setting up libitm1:amd64 (8.3.0-6) ...
Setting up libgdbm6:amd64 (1.18.1-4) ...
Setting up gnupg-utils (2.2.12-1) ...
Setting up binutils-x86-64-linux-gnu (2.31.1-16) ...
Setting up libtsan0:amd64 (8.3.0-6) ...
Setting up python3-distutils (3.7.3-1) ...
Setting up dh-python (3.20190308) ...
Setting up pinentry-curses (1.1.0-2) ...
Setting up manpages-dev (4.16-2) ...
Setting up gpg-agent (2.2.12-1) ...
Setting up python3-setuptools (40.8.0-1) ...
Setting up python3-apt (1.8.4) ...
Setting up gpgsm (2.2.12-1) ...
Setting up binutils (2.31.1-16) ...
Setting up dirmngr (2.2.12-1) ...
Setting up libgdbm-compat4:amd64 (1.18.1-4) ...
Setting up gir1.2-glib-2.0:amd64 (1.58.3-2) ...
Setting up python3-pip (18.1-5) ...
Setting up libgcc-8-dev:amd64 (8.3.0-6) ...
Setting up libperl5.28:amd64 (5.28.1-6) ...
Setting up gpg-wks-server (2.2.12-1) ...
Setting up cpp (4:8.3.0-1) ...
Setting up python3-keyrings.alt (3.1.1-1) ...
Setting up libc6-dev:amd64 (2.28-10) ...
Setting up libstdc++-8-dev:amd64 (8.3.0-6) ...
Setting up gcc-8 (8.3.0-6) ...
Setting up gpg-wks-client (2.2.12-1) ...
Setting up gcc (4:8.3.0-1) ...
Setting up perl (5.28.1-6) ...
Setting up libexpat1-dev:amd64 (2.2.6-2) ...
Setting up python3-gi (3.30.4-1) ...
Setting up libdpkg-perl (1.19.7) ...
Setting up g++-8 (8.3.0-6) ...
Setting up gnupg (2.2.12-1) ...
Setting up libfile-fcntllock-perl (0.22-3+b5) ...
Setting up libalgorithm-diff-perl (1.19.03-2) ...
Setting up libpython3.7-dev:amd64 (3.7.3-2) ...
Setting up python3.7-dev (3.7.3-2) ...
Setting up dpkg-dev (1.19.7) ...
Setting up liberror-perl (0.17027-2) ...
Setting up git (1:2.20.1-2) ...
Setting up g++ (4:8.3.0-1) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode
Setting up build-essential (12.6) ...
Setting up libalgorithm-diff-xs-perl (0.04-5+b1) ...
Setting up libalgorithm-merge-perl (0.08-3) ...
Setting up libpython3-dev:amd64 (3.7.3-1) ...
Setting up python3-dev (3.7.3-1) ...
Processing triggers for libc-bin (2.28-10) ...
[2/4] Installing Ansible...
Collecting ansible
  Downloading https://files.pythonhosted.org/packages/d8/b5/5c5eb96463427da7b7206ff22a3470aae374656de2317eaac41dfb69a64a/ansible-2.8.2.tar.gz (14.3MB)
    100% |████████████████████████████████| 14.3MB 85kB/s 
Collecting psycopg2-binary
  Downloading https://files.pythonhosted.org/packages/f3/21/b7ccc8ae35e5b6ae62bfe47181353628bae52489c7798f00efd7916de543/psycopg2_binary-2.8.3-cp37-cp37m-manylinux1_x86_64.whl (2.9MB)
    100% |████████████████████████████████| 2.9MB 422kB/s 
Requirement already satisfied: PyYAML in /usr/lib/python3/dist-packages (from ansible) (3.13)
Requirement already satisfied: cryptography in /usr/lib/python3/dist-packages (from ansible) (2.6.1)
Requirement already satisfied: jinja2 in /usr/lib/python3/dist-packages (from ansible) (2.10)
Building wheels for collected packages: ansible
  Running setup.py bdist_wheel for ansible ... done
  Stored in directory: /root/.cache/pip/wheels/51/56/7d/a716240fddb00acde9b7bbbb88b8b37c619e4a905c641d7c32
Successfully built ansible
Installing collected packages: ansible, psycopg2-binary
Successfully installed ansible-2.8.2 psycopg2-binary-2.8.3
[2/4] Creating ansible configuration files in /srv/funkwhale/ansible...
[2/4] Downloading Funkwhale playbook dependencies
- extracting funkwhale to /root/.ansible/roles/funkwhale
- funkwhale (master) was installed successfully
[3/4] Installing Funkwhale using ansible playbook in /srv/funkwhale/ansible...
[3/4] Applying playbook with:
  /root/.local/bin/ansible-playbook  -i inventory.ini playbook.yml -u root --diff
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be 
user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be disabled by setting deprecation_warnings=False in
 ansible.cfg.
 [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details


PLAY [funkwhale-servers] *************************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************************************
ok: [127.0.0.1]

TASK [funkwhale : Set frontend path] *************************************************************************************************************************
ok: [127.0.0.1]

TASK [funkwhale : Install system packages] *******************************************************************************************************************
The following additional packages will be installed:
  fontconfig fontconfig-config fonts-dejavu-core i965-va-driver
  intel-media-va-driver libaacs0 libaom0 libasound2 libasound2-data libass9
  libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7
  libavformat58 libavresample4 libavutil56 libbdplus0 libbluray2 libbs2b0
  libcaca0 libcairo2 libcdio-cdda2 libcdio-paranoia2 libcdio18 libchromaprint1
  libcodec2-0.8.1 libcroco3 libcrystalhd3 libdatrie1 libdc1394-22
  libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1
  libdrm2 libfftw3-double3 libflac8 libflite1 libfontconfig1 libfribidi0
  libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgl1
  libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libgme0
  libgraphite2-3 libgsm1 libharfbuzz0b libice6 libiec61883-0 libigdgmm5
  libjack-jackd2-0 libjbig0 libjpeg62-turbo libjpeg62-turbo-dev liblilv-0-0
  libllvm7 libmp3lame0 libmpg123-0 libmysofa0 libnorm1 libnuma1 libogg0
  libopenal-data libopenal1 libopenjp2-7 libopenmpt0 libopus0 libpango-1.0-0
  libpangocairo-1.0-0 libpangoft2-1.0-0 libpciaccess0 libpgm-5.2-0
  libpixman-1-0 libpostproc55 libpq5 libpulse0 libraw1394-11 librsvg2-2
  librsvg2-common librubberband2 libsamplerate0 libsdl2-2.0-0
  libsensors-config libsensors5 libserd-0-0 libshine3 libsm6 libsnappy1v5
  libsndfile1 libsndio7.0 libsodium23 libsord-0-0 libsoxr0 libspeex1
  libsratom-0-0 libssh-gcrypt-4 libswresample3 libswscale5 libthai-data
  libthai0 libtheora0 libtiff5 libtwolame0 libusb-1.0-0 libva-drm2 libva-x11-2
  libva2 libvdpau-va-gl1 libvdpau1 libvidstab1.1 libvorbis0a libvorbisenc2
  libvorbisfile3 libvpx5 libwavpack1 libwayland-client0 libwayland-cursor0
  libwayland-egl1 libwebp6 libwebpmux3 libx11-6 libx11-data libx11-xcb1
  libx264-155 libx265-165 libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0
  libxcb-present0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1
  libxcb-xfixes0 libxcb1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3
  libxi6 libxinerama1 libxkbcommon0 libxrandr2 libxrender1 libxshmfence1
  libxss1 libxtst6 libxv1 libxvidcore4 libxxf86vm1 libzmq5 libzvbi-common
  libzvbi0 mesa-va-drivers mesa-vdpau-drivers postgresql-client-11
  postgresql-client-common shared-mime-info va-driver-all vdpau-driver-all
  virtualenv x11-common xkb-data
Suggested packages:
  ffmpeg-doc i965-va-driver-shaders libasound2-plugins alsa-utils
  libbluray-bdj firmware-crystalhd libfftw3-bin libfftw3-dev jackd2
  libportaudio2 opus-tools pciutils postgresql-doc-11 pulseaudio
  libraw1394-doc librsvg2-bin lm-sensors serdi sndiod sordi speex
  postgresql-11 zip nvidia-vdpau-driver nvidia-legacy-340xx-vdpau-driver
  nvidia-legacy-304xx-vdpau-driver
The following NEW packages will be installed:
  ffmpeg fontconfig fontconfig-config fonts-dejavu-core i965-va-driver
  intel-media-va-driver libaacs0 libaom0 libasound2 libasound2-data libass9
  libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7
  libavformat58 libavresample4 libavutil56 libbdplus0 libbluray2 libbs2b0
  libcaca0 libcairo2 libcdio-cdda2 libcdio-paranoia2 libcdio18 libchromaprint1
  libcodec2-0.8.1 libcroco3 libcrystalhd3 libdatrie1 libdc1394-22
  libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1
  libdrm2 libfftw3-double3 libflac8 libflite1 libfontconfig1 libfribidi0
  libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgl1
  libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libgme0
  libgraphite2-3 libgsm1 libharfbuzz0b libice6 libiec61883-0 libigdgmm5
  libjack-jackd2-0 libjbig0 libjpeg-dev libjpeg62-turbo libjpeg62-turbo-dev
  libldap2-dev liblilv-0-0 libllvm7 libmagic-dev libmp3lame0 libmpg123-0
  libmysofa0 libnorm1 libnuma1 libogg0 libopenal-data libopenal1 libopenjp2-7
  libopenmpt0 libopus0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0
  libpciaccess0 libpgm-5.2-0 libpixman-1-0 libpostproc55 libpq-dev libpq5
  libpulse0 libraw1394-11 librsvg2-2 librsvg2-common librubberband2
  libsamplerate0 libsasl2-dev libsdl2-2.0-0 libsensors-config libsensors5
  libserd-0-0 libshine3 libsm6 libsnappy1v5 libsndfile1 libsndio7.0
  libsodium23 libsord-0-0 libsoxr0 libspeex1 libsratom-0-0 libssh-gcrypt-4
  libswresample3 libswscale5 libthai-data libthai0 libtheora0 libtiff5
  libtwolame0 libusb-1.0-0 libva-drm2 libva-x11-2 libva2 libvdpau-va-gl1
  libvdpau1 libvidstab1.1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx5
  libwavpack1 libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp6
  libwebpmux3 libx11-6 libx11-data libx11-xcb1 libx264-155 libx265-165 libxau6
  libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-render0
  libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 libxcursor1
  libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 libxkbcommon0
  libxrandr2 libxrender1 libxshmfence1 libxss1 libxtst6 libxv1 libxvidcore4
  libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers
  mesa-vdpau-drivers postgresql-client postgresql-client-11
  postgresql-client-common python-virtualenv python3-virtualenv
  shared-mime-info unzip va-driver-all vdpau-driver-all virtualenv x11-common
  xkb-data
0 upgraded, 184 newly installed, 0 to remove and 0 not upgraded.
changed: [127.0.0.1]

TASK [funkwhale : Install postgresql] ************************************************************************************************************************
The following additional packages will be installed:
  postgresql-11 postgresql-common ssl-cert sysstat
Suggested packages:
  postgresql-doc libjson-perl python-psycopg2-doc openssl-blacklist isag
The following NEW packages will be installed:
  postgresql postgresql-11 postgresql-common python3-psycopg2 ssl-cert sysstat
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
changed: [127.0.0.1]

TASK [funkwhale : Start Postgresql] **************************************************************************************************************************
ok: [127.0.0.1]

TASK [funkwhale : Create funkwhale database] *****************************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Create funkwhale database user] ************************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Grant privileges on database funkwhale to funkwhale user] **********************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Create db extensions] **********************************************************************************************************************
changed: [127.0.0.1] => (item=unaccent)
changed: [127.0.0.1] => (item=citext)

TASK [funkwhale : Install redis] *****************************************************************************************************************************
The following additional packages will be installed:
  libhiredis0.14 libjemalloc2 liblua5.1-0 lua-bitop lua-cjson redis-tools
Suggested packages:
  ruby-redis
The following NEW packages will be installed:
  libhiredis0.14 libjemalloc2 liblua5.1-0 lua-bitop lua-cjson redis-server
  redis-tools
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
changed: [127.0.0.1]

TASK [funkwhale : Start redis-server] ************************************************************************************************************************
ok: [127.0.0.1]

TASK [funkwhale : Create funkwhale user] *********************************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Create funkwhale directories] **************************************************************************************************************
--- before
+++ after
@@ -1,4 +1,4 @@
 {
-    "owner": 0,
+    "owner": 1000,
     "path": "/srv/funkwhale"
 }

changed: [127.0.0.1] => (item=/srv/funkwhale)
--- before
+++ after
@@ -1,5 +1,5 @@
 {
-    "owner": 0,
+    "owner": 1000,
     "path": "/srv/funkwhale/data/media",
-    "state": "absent"
+    "state": "directory"
 }

changed: [127.0.0.1] => (item=/srv/funkwhale/data/media)
--- before
+++ after
@@ -1,5 +1,5 @@
 {
-    "owner": 0,
+    "owner": 1000,
     "path": "/srv/funkwhale/data/static",
-    "state": "absent"
+    "state": "directory"
 }

changed: [127.0.0.1] => (item=/srv/funkwhale/data/static)
--- before
+++ after
@@ -1,5 +1,5 @@
 {
-    "owner": 0,
+    "owner": 1000,
     "path": "/srv/funkwhale/data/music",
-    "state": "absent"
+    "state": "directory"
 }

changed: [127.0.0.1] => (item=/srv/funkwhale/data/music)
--- before
+++ after
@@ -1,5 +1,5 @@
 {
-    "owner": 0,
+    "owner": 1000,
     "path": "/srv/funkwhale/config",
-    "state": "absent"
+    "state": "directory"
 }

changed: [127.0.0.1] => (item=/srv/funkwhale/config)

TASK [funkwhale : Check if django_secret_key file is setup] **************************************************************************************************
ok: [127.0.0.1]

TASK [funkwhale : Generate a random secret key] **************************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Create django_secret_key file] *************************************************************************************************************
--- before
+++ after: /root/.ansible/tmp/ansible-local-2413o2bc28e3/tmpmrej4en2
@@ -0,0 +1 @@
+132db7037b096964d4f07f5d69180a327ec9651f3b92b6669b
\ No newline at end of file

changed: [127.0.0.1]

TASK [funkwhale : Setup a dummy secret key] ******************************************************************************************************************
skipping: [127.0.0.1]

TASK [funkwhale : Retrieve secret key from /srv/funkwhale/config/django_secret_key] **************************************************************************
ok: [127.0.0.1]

TASK [funkwhale : Register secret key] ***********************************************************************************************************************
ok: [127.0.0.1]

TASK [funkwhale : Create funkwhale configuration file] *******************************************************************************************************
--- before
+++ after: /root/.ansible/tmp/ansible-local-2413o2bc28e3/tmprh5avqok/env.j2
@@ -0,0 +1,23 @@
+# Ansible managed
+
+FUNKWHALE_HOSTNAME=test-installer.funkwhale.audio
+FUNKWHALE_PROTOCOL=https
+DJANGO_SECRET_KEY=132db7037b096964d4f07f5d69180a327ec9651f3b92b6669b
+
+FUNKWHALE_API_IP=127.0.0.1
+FUNKWHALE_API_PORT=5000
+FUNKWHALE_WEB_WORKERS=1
+REVERSE_PROXY_TYPE=nginx
+
+DATABASE_URL=postgresql://funkwhale@:5432/funkwhale
+CACHE_URL=redis://127.0.0.1:6379/0
+
+MEDIA_ROOT=/srv/funkwhale/data/media
+STATIC_ROOT=/srv/funkwhale/data/static
+MUSIC_DIRECTORY_PATH=/srv/funkwhale/data/music
+MUSIC_DIRECTORY_SERVE_PATH=/srv/funkwhale/data/music
+FUNKWHALE_FRONTEND_PATH=/srv/funkwhale/front/dist
+FUNKWHALE_SPA_HTML_ROOT=/srv/funkwhale/front/dist/index.html
+NGINX_MAX_BODY_SIZE=100M
+DJANGO_SETTINGS_MODULE=config.settings.production
+

changed: [127.0.0.1]

TASK [funkwhale : Download front-end files] ******************************************************************************************************************
>d++++++.?? front/dist/
>d++++++.?? front/dist/css/
>f++++++.?? front/dist/css/admin.e3aecd96.css
>f++++++.?? front/dist/css/admin~core.fbd995eb.css
>f++++++.?? front/dist/css/core.13351aec.css
>f++++++.?? front/dist/css/embed.10860cea.css
>f++++++.?? front/dist/css/index.eaf1becf.css
>f++++++.?? front/dist/custom.css
>f++++++.?? front/dist/embed.html
>f++++++.?? front/dist/favicon.png
>d++++++.?? front/dist/fonts/
>f++++++.?? front/dist/fonts/brand-icons.8e49b728.eot
>f++++++.?? front/dist/fonts/brand-icons.9f018d10.woff
>f++++++.?? front/dist/fonts/brand-icons.9f4ce3dc.woff2
>f++++++.?? front/dist/fonts/brand-icons.b7d071b9.ttf
>f++++++.?? front/dist/fonts/icons.0be94a07.woff
>f++++++.?? front/dist/fonts/icons.64b3e814.woff2
>f++++++.?? front/dist/fonts/icons.e2675a61.eot
>f++++++.?? front/dist/fonts/icons.f14c3b2f.ttf
>f++++++.?? front/dist/fonts/outline-icons.7980a636.woff2
>f++++++.?? front/dist/fonts/outline-icons.7aaf5675.woff
>f++++++.?? front/dist/fonts/outline-icons.859001f6.eot
>f++++++.?? front/dist/fonts/outline-icons.f3334251.ttf
>d++++++.?? front/dist/img/
>f++++++.?? front/dist/img/brand-icons.38975343.svg
>f++++++.?? front/dist/img/default-cover.89d13c2f.png
>f++++++.?? front/dist/img/default-cover.bde4a13c.jpeg
>f++++++.?? front/dist/img/icons.7726a281.svg
>f++++++.?? front/dist/img/logo.8563a1e9.png
>f++++++.?? front/dist/img/outline-icons.da8a235b.svg
>f++++++.?? front/dist/index.html
>d++++++.?? front/dist/js/
>f++++++.?? front/dist/js/admin.b457d317.js
>f++++++.?? front/dist/js/admin~core.e9f138b5.js
>f++++++.?? front/dist/js/chunk-2d0a30ec.df23eb36.js
>f++++++.?? front/dist/js/chunk-2d0a31b4.b630aab2.js
>f++++++.?? front/dist/js/chunk-2d0a3b34.e784efde.js
>f++++++.?? front/dist/js/chunk-2d0a3ed7.a04ec3a5.js
>f++++++.?? front/dist/js/chunk-2d0a405e.a56df33c.js
>f++++++.?? front/dist/js/chunk-2d0a477c.e8432c98.js
>f++++++.?? front/dist/js/chunk-2d0a4889.12adff22.js
>f++++++.?? front/dist/js/chunk-2d0a4b1f.d8ea66d0.js
>f++++++.?? front/dist/js/chunk-2d0aa7c8.52a38f62.js
>f++++++.?? front/dist/js/chunk-2d0ab30c.218a47f6.js
>f++++++.?? front/dist/js/chunk-2d0ae577.e679c46c.js
>f++++++.?? front/dist/js/chunk-2d0ae5e3.e63f6430.js
>f++++++.?? front/dist/js/chunk-2d0af289.a2380b3c.js
>f++++++.?? front/dist/js/chunk-2d0af470.78d5cff3.js
>f++++++.?? front/dist/js/chunk-2d0af4d7.0036f980.js
>f++++++.?? front/dist/js/chunk-2d0af4e4.0171dcb4.js
>f++++++.?? front/dist/js/chunk-2d0af7cf.65b62e2a.js
>f++++++.?? front/dist/js/chunk-2d0af811.d5bdb352.js
>f++++++.?? front/dist/js/chunk-2d0afe38.dccc0f8b.js
>f++++++.?? front/dist/js/chunk-2d0b1605.293b20f7.js
>f++++++.?? front/dist/js/chunk-2d0b1c1f.1ee3056d.js
>f++++++.?? front/dist/js/chunk-2d0b23c8.1f613d0f.js
>f++++++.?? front/dist/js/chunk-2d0b24f7.c3d42c25.js
>f++++++.?? front/dist/js/chunk-2d0b2918.9fef31fe.js
>f++++++.?? front/dist/js/chunk-2d0b30f7.73dd4363.js
>f++++++.?? front/dist/js/chunk-2d0b32cd.d236bf6a.js
>f++++++.?? front/dist/js/chunk-2d0b37bc.de15de7b.js
>f++++++.?? front/dist/js/chunk-2d0b380d.f7aad9c1.js
>f++++++.?? front/dist/js/chunk-2d0b5d88.ae61b1ab.js
>f++++++.?? front/dist/js/chunk-2d0b616b.92d36d39.js
>f++++++.?? front/dist/js/chunk-2d0b6347.0a2942c3.js
>f++++++.?? front/dist/js/chunk-2d0b6786.d51ad50b.js
>f++++++.?? front/dist/js/chunk-2d0b68ee.252298cc.js
>f++++++.?? front/dist/js/chunk-2d0b7239.3d7273a7.js
>f++++++.?? front/dist/js/chunk-2d0b96a2.ab3383e0.js
>f++++++.?? front/dist/js/chunk-2d0ba919.c000099f.js
>f++++++.?? front/dist/js/chunk-2d0bb1d1.79b8de8b.js
>f++++++.?? front/dist/js/chunk-2d0bb21e.a6497e89.js
>f++++++.?? front/dist/js/chunk-2d0bd822.31502048.js
>f++++++.?? front/dist/js/chunk-2d0bddd4.f2b2d993.js
>f++++++.?? front/dist/js/chunk-2d0c0686.5e373850.js
>f++++++.?? front/dist/js/chunk-2d0c0da9.18b179d0.js
>f++++++.?? front/dist/js/chunk-2d0c1d48.394950ef.js
>f++++++.?? front/dist/js/chunk-2d0c265c.e743fb71.js
>f++++++.?? front/dist/js/chunk-2d0c426a.bd17bc11.js
>f++++++.?? front/dist/js/chunk-2d0c4616.ea530ed5.js
>f++++++.?? front/dist/js/chunk-2d0c49ba.4b6cdb82.js
>f++++++.?? front/dist/js/chunk-2d0c5221.607eda33.js
>f++++++.?? front/dist/js/chunk-2d0c53b7.e4dbcbc3.js
>f++++++.?? front/dist/js/chunk-2d0c7336.a4439b2f.js
>f++++++.?? front/dist/js/chunk-2d0c76d0.b7662403.js
>f++++++.?? front/dist/js/chunk-2d0c7b6e.87b5c4c3.js
>f++++++.?? front/dist/js/chunk-2d0c8095.8448dccc.js
>f++++++.?? front/dist/js/chunk-2d0c8bcc.f958dd80.js
>f++++++.?? front/dist/js/chunk-2d0c8e05.2eba9b31.js
>f++++++.?? front/dist/js/chunk-2d0c95c3.4f7c762c.js
>f++++++.?? front/dist/js/chunk-2d0cc01c.8b0c9a04.js
>f++++++.?? front/dist/js/chunk-2d0cc830.9a99eeed.js
>f++++++.?? front/dist/js/chunk-2d0ceb17.7608a7b2.js
>f++++++.?? front/dist/js/chunk-2d0cf637.e94378b7.js
>f++++++.?? front/dist/js/chunk-2d0d0073.2408d3e9.js
>f++++++.?? front/dist/js/chunk-2d0d0273.afe4735d.js
>f++++++.?? front/dist/js/chunk-2d0d0637.3042e77b.js
>f++++++.?? front/dist/js/chunk-2d0d0662.55ef6ecb.js
>f++++++.?? front/dist/js/chunk-2d0d07f5.fa4c4403.js
>f++++++.?? front/dist/js/chunk-2d0d0902.f91dc63a.js
>f++++++.?? front/dist/js/chunk-2d0d2ea6.bdba1910.js
>f++++++.?? front/dist/js/chunk-2d0d32d2.da229520.js
>f++++++.?? front/dist/js/chunk-2d0d3372.b177dc63.js
>f++++++.?? front/dist/js/chunk-2d0d3884.70088805.js
>f++++++.?? front/dist/js/chunk-2d0d43c9.7705d986.js
>f++++++.?? front/dist/js/chunk-2d0d5f77.b8c7a98d.js
>f++++++.?? front/dist/js/chunk-2d0d7112.5910a735.js
>f++++++.?? front/dist/js/chunk-2d0dab46.92344483.js
>f++++++.?? front/dist/js/chunk-2d0dab5f.5c42daeb.js
>f++++++.?? front/dist/js/chunk-2d0dad11.7da4d6ab.js
>f++++++.?? front/dist/js/chunk-2d0daf44.a55636c2.js
>f++++++.?? front/dist/js/chunk-2d0db207.4b8cc78a.js
>f++++++.?? front/dist/js/chunk-2d0db281.8c78ed51.js
>f++++++.?? front/dist/js/chunk-2d0dd44f.25d82848.js
>f++++++.?? front/dist/js/chunk-2d0dd7cd.5100b3be.js
>f++++++.?? front/dist/js/chunk-2d0dda23.b4f400c5.js
>f++++++.?? front/dist/js/chunk-2d0de512.5d5309c5.js
>f++++++.?? front/dist/js/chunk-2d0de717.34fa9fa1.js
>f++++++.?? front/dist/js/chunk-2d0de775.fbd7051b.js
>f++++++.?? front/dist/js/chunk-2d0dee72.e9e89439.js
>f++++++.?? front/dist/js/chunk-2d0df2e1.a5404616.js
>f++++++.?? front/dist/js/chunk-2d0e1d77.400591bc.js
>f++++++.?? front/dist/js/chunk-2d0e1db2.dd3c1490.js
>f++++++.?? front/dist/js/chunk-2d0e26a5.5d777e6b.js
>f++++++.?? front/dist/js/chunk-2d0e44cc.125e6345.js
>f++++++.?? front/dist/js/chunk-2d0e4ae9.a6c39d37.js
>f++++++.?? front/dist/js/chunk-2d0e581e.e0dd71b0.js
>f++++++.?? front/dist/js/chunk-2d0e583c.360c61df.js
>f++++++.?? front/dist/js/chunk-2d0e5adc.ada2535e.js
>f++++++.?? front/dist/js/chunk-2d0e5f05.6a6ee5f2.js
>f++++++.?? front/dist/js/chunk-2d0e5fb2.8e0d6ab9.js
>f++++++.?? front/dist/js/chunk-2d0e93a5.f48e63fd.js
>f++++++.?? front/dist/js/chunk-2d0e93c4.b165d53a.js
>f++++++.?? front/dist/js/chunk-2d0e97bf.82bbdbbf.js
>f++++++.?? front/dist/js/chunk-2d0f0f47.160b0175.js
>f++++++.?? front/dist/js/chunk-2d0f11a5.a3cf0280.js
>f++++++.?? front/dist/js/chunk-2d207f09.e36debbf.js
>f++++++.?? front/dist/js/chunk-2d20868c.cb6b01f0.js
>f++++++.?? front/dist/js/chunk-2d209427.dbd0d91a.js
>f++++++.?? front/dist/js/chunk-2d20f051.64464ca6.js
>f++++++.?? front/dist/js/chunk-2d20f74b.8384d474.js
>f++++++.?? front/dist/js/chunk-2d20f964.cd3f4c4b.js
>f++++++.?? front/dist/js/chunk-2d20fac5.cfe4d3f7.js
>f++++++.?? front/dist/js/chunk-2d20fada.ccb6f50f.js
>f++++++.?? front/dist/js/chunk-2d21063b.4e944a32.js
>f++++++.?? front/dist/js/chunk-2d210a59.690c32e4.js
>f++++++.?? front/dist/js/chunk-2d213c4a.e4e93ff2.js
>f++++++.?? front/dist/js/chunk-2d215fad.23e16115.js
>f++++++.?? front/dist/js/chunk-2d2174dd.fe21604f.js
>f++++++.?? front/dist/js/chunk-2d217c4a.e4f13a43.js
>f++++++.?? front/dist/js/chunk-2d218078.7b235758.js
>f++++++.?? front/dist/js/chunk-2d21a410.ef2293f7.js
>f++++++.?? front/dist/js/chunk-2d21abe5.1f488916.js
>f++++++.?? front/dist/js/chunk-2d21af78.87299f33.js
>f++++++.?? front/dist/js/chunk-2d21d8af.0c16e2e3.js
>f++++++.?? front/dist/js/chunk-2d21de14.c9ce74e9.js
>f++++++.?? front/dist/js/chunk-2d21eaae.7ed4f7aa.js
>f++++++.?? front/dist/js/chunk-2d21ecdc.9cc7e1ac.js
>f++++++.?? front/dist/js/chunk-2d21f89d.7db96b29.js
>f++++++.?? front/dist/js/chunk-2d222538.dd7c489e.js
>f++++++.?? front/dist/js/chunk-2d2226ed.505ba9b5.js
>f++++++.?? front/dist/js/chunk-2d222735.65509c20.js
>f++++++.?? front/dist/js/chunk-2d222777.139570b3.js
>f++++++.?? front/dist/js/chunk-2d224ad3.9c22423a.js
>f++++++.?? front/dist/js/chunk-2d224eb1.35512582.js
>f++++++.?? front/dist/js/chunk-2d2262fc.cc07a32c.js
>f++++++.?? front/dist/js/chunk-2d228c3b.6467c3bd.js
>f++++++.?? front/dist/js/chunk-2d229065.c10c6942.js
>f++++++.?? front/dist/js/chunk-2d22c13c.be71360c.js
>f++++++.?? front/dist/js/chunk-2d22c8c1.5da17128.js
>f++++++.?? front/dist/js/chunk-2d22cb03.5c7d163d.js
>f++++++.?? front/dist/js/chunk-2d23043b.92503877.js
>f++++++.?? front/dist/js/chunk-2d2306c2.7977841b.js
>f++++++.?? front/dist/js/chunk-2d230dc9.0cb6299e.js
>f++++++.?? front/dist/js/chunk-2d237752.40019751.js
>f++++++.?? front/dist/js/chunk-2d237d42.b28593c3.js
>f++++++.?? front/dist/js/chunk-2d238a76.090e63b2.js
>f++++++.?? front/dist/js/chunk-749f7f40.cda1e28d.js
>f++++++.?? front/dist/js/chunk-74c49c88.f13a3a22.js
>f++++++.?? front/dist/js/chunk-7737dd9e.54761289.js
>f++++++.?? front/dist/js/core.b6c809a5.js
>f++++++.?? front/dist/js/embed.061abd56.js
>f++++++.?? front/dist/js/index.af228ddc.js
>f++++++.?? front/dist/js/vendors~admin~core.78b7e716.js
>f++++++.?? front/dist/js/vendors~core.649138d7.js
>f++++++.?? front/dist/settings.json
 [WARNING]: Module remote_tmp /srv/funkwhale/.ansible/tmp did not exist and was created with a mode of 0700, this may cause issues when running as another
user. To avoid this, create the remote_tmp dir with the correct permissions manually

changed: [127.0.0.1]

TASK [funkwhale : Download api files] ************************************************************************************************************************
>d++++++.?? api/
>f++++++.?? api/.coveragerc
>f++++++.?? api/.dockerignore
>f++++++.?? api/.pylintrc
>f++++++.?? api/Dockerfile
>d++++++.?? api/compose/
>d++++++.?? api/compose/django/
>f++++++.?? api/compose/django/dev-entrypoint.sh
>f++++++.?? api/compose/django/entrypoint.sh
>f++++++.?? api/compose/django/server.sh
>d++++++.?? api/config/
>f++++++.?? api/config/__init__.py
>f++++++.?? api/config/api_urls.py
>f++++++.?? api/config/asgi.py
>f++++++.?? api/config/routing.py
>d++++++.?? api/config/settings/
>f++++++.?? api/config/settings/__init__.py
>f++++++.?? api/config/settings/common.py
>f++++++.?? api/config/settings/local.py
>f++++++.?? api/config/settings/production.py
>f++++++.?? api/config/spa_urls.py
>f++++++.?? api/config/urls.py
>d++++++.?? api/funkwhale_api/
>f++++++.?? api/funkwhale_api/__init__.py
>d++++++.?? api/funkwhale_api/activity/
>f++++++.?? api/funkwhale_api/activity/__init__.py
>f++++++.?? api/funkwhale_api/activity/apps.py
>f++++++.?? api/funkwhale_api/activity/record.py
>f++++++.?? api/funkwhale_api/activity/serializers.py
>f++++++.?? api/funkwhale_api/activity/utils.py
>f++++++.?? api/funkwhale_api/activity/views.py
>d++++++.?? api/funkwhale_api/common/
>f++++++.?? api/funkwhale_api/common/__init__.py
>f++++++.?? api/funkwhale_api/common/admin.py
>f++++++.?? api/funkwhale_api/common/apps.py
>f++++++.?? api/funkwhale_api/common/auth.py
>f++++++.?? api/funkwhale_api/common/authentication.py
>f++++++.?? api/funkwhale_api/common/channels.py
>f++++++.?? api/funkwhale_api/common/consumers.py
>f++++++.?? api/funkwhale_api/common/decorators.py
>f++++++.?? api/funkwhale_api/common/dynamic_preferences_registry.py
>f++++++.?? api/funkwhale_api/common/factories.py
>f++++++.?? api/funkwhale_api/common/fields.py
>f++++++.?? api/funkwhale_api/common/filters.py
>d++++++.?? api/funkwhale_api/common/management/
>f++++++.?? api/funkwhale_api/common/management/__init__.py
>d++++++.?? api/funkwhale_api/common/management/commands/
>f++++++.?? api/funkwhale_api/common/management/commands/__init__.py
>f++++++.?? api/funkwhale_api/common/management/commands/load_test_data.py
>f++++++.?? api/funkwhale_api/common/management/commands/makemigrations.py
>f++++++.?? api/funkwhale_api/common/management/commands/migrate.py
>f++++++.?? api/funkwhale_api/common/management/commands/script.py
>f++++++.?? api/funkwhale_api/common/middleware.py
>d++++++.?? api/funkwhale_api/common/migrations/
>f++++++.?? api/funkwhale_api/common/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/common/migrations/0002_mutation.py
>f++++++.?? api/funkwhale_api/common/migrations/0003_cit_extension.py
>f++++++.?? api/funkwhale_api/common/migrations/__init__.py
>f++++++.?? api/funkwhale_api/common/models.py
>f++++++.?? api/funkwhale_api/common/mutations.py
>f++++++.?? api/funkwhale_api/common/pagination.py
>f++++++.?? api/funkwhale_api/common/permissions.py
>f++++++.?? api/funkwhale_api/common/preferences.py
>f++++++.?? api/funkwhale_api/common/routers.py
>d++++++.?? api/funkwhale_api/common/scripts/
>f++++++.?? api/funkwhale_api/common/scripts/__init__.py
>f++++++.?? api/funkwhale_api/common/scripts/create_actors.py
>f++++++.?? api/funkwhale_api/common/scripts/create_image_variations.py
>f++++++.?? api/funkwhale_api/common/scripts/delete_pre_017_federated_uploads.py
>f++++++.?? api/funkwhale_api/common/scripts/django_permissions_to_user_permissions.py
>f++++++.?? api/funkwhale_api/common/scripts/migrate_to_user_libraries.py
>f++++++.?? api/funkwhale_api/common/scripts/test.py
>f++++++.?? api/funkwhale_api/common/search.py
>f++++++.?? api/funkwhale_api/common/serializers.py
>f++++++.?? api/funkwhale_api/common/session.py
>f++++++.?? api/funkwhale_api/common/signals.py
>f++++++.?? api/funkwhale_api/common/storage.py
>f++++++.?? api/funkwhale_api/common/tasks.py
>f++++++.?? api/funkwhale_api/common/utils.py
>f++++++.?? api/funkwhale_api/common/validators.py
>f++++++.?? api/funkwhale_api/common/views.py
>d++++++.?? api/funkwhale_api/contrib/
>f++++++.?? api/funkwhale_api/contrib/__init__.py
>d++++++.?? api/funkwhale_api/contrib/sites/
>f++++++.?? api/funkwhale_api/contrib/sites/__init__.py
>d++++++.?? api/funkwhale_api/contrib/sites/migrations/
>f++++++.?? api/funkwhale_api/contrib/sites/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/contrib/sites/migrations/0002_set_site_domain_and_name.py
>f++++++.?? api/funkwhale_api/contrib/sites/migrations/0003_auto_20171214_2205.py
>f++++++.?? api/funkwhale_api/contrib/sites/migrations/__init__.py
>f++++++.?? api/funkwhale_api/factories.py
>d++++++.?? api/funkwhale_api/favorites/
>f++++++.?? api/funkwhale_api/favorites/__init__.py
>f++++++.?? api/funkwhale_api/favorites/activities.py
>f++++++.?? api/funkwhale_api/favorites/admin.py
>f++++++.?? api/funkwhale_api/favorites/consumers.py
>f++++++.?? api/funkwhale_api/favorites/factories.py
>f++++++.?? api/funkwhale_api/favorites/filters.py
>d++++++.?? api/funkwhale_api/favorites/migrations/
>f++++++.?? api/funkwhale_api/favorites/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/favorites/migrations/__init__.py
>f++++++.?? api/funkwhale_api/favorites/models.py
>f++++++.?? api/funkwhale_api/favorites/serializers.py
>f++++++.?? api/funkwhale_api/favorites/urls.py
>f++++++.?? api/funkwhale_api/favorites/views.py
>d++++++.?? api/funkwhale_api/federation/
>f++++++.?? api/funkwhale_api/federation/__init__.py
>f++++++.?? api/funkwhale_api/federation/activity.py
>f++++++.?? api/funkwhale_api/federation/actors.py
>f++++++.?? api/funkwhale_api/federation/admin.py
>f++++++.?? api/funkwhale_api/federation/api_serializers.py
>f++++++.?? api/funkwhale_api/federation/api_urls.py
>f++++++.?? api/funkwhale_api/federation/api_views.py
>f++++++.?? api/funkwhale_api/federation/authentication.py
>f++++++.?? api/funkwhale_api/federation/contexts.py
>f++++++.?? api/funkwhale_api/federation/decorators.py
>f++++++.?? api/funkwhale_api/federation/dynamic_preferences_registry.py
>f++++++.?? api/funkwhale_api/federation/exceptions.py
>f++++++.?? api/funkwhale_api/federation/factories.py
>f++++++.?? api/funkwhale_api/federation/fields.py
>f++++++.?? api/funkwhale_api/federation/filters.py
>f++++++.?? api/funkwhale_api/federation/jsonld.py
>f++++++.?? api/funkwhale_api/federation/keys.py
>f++++++.?? api/funkwhale_api/federation/library.py
>d++++++.?? api/funkwhale_api/federation/management/
>f++++++.?? api/funkwhale_api/federation/management/__init__.py
>d++++++.?? api/funkwhale_api/federation/management/commands/
>f++++++.?? api/funkwhale_api/federation/management/commands/__init__.py
>f++++++.?? api/funkwhale_api/federation/management/commands/fix_federation_ids.py
>d++++++.?? api/funkwhale_api/federation/migrations/
>f++++++.?? api/funkwhale_api/federation/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/federation/migrations/0002_auto_20180403_1620.py
>f++++++.?? api/funkwhale_api/federation/migrations/0003_auto_20180407_1010.py
>f++++++.?? api/funkwhale_api/federation/migrations/0004_auto_20180410_2025.py
>f++++++.?? api/funkwhale_api/federation/migrations/0005_auto_20180413_1723.py
>f++++++.?? api/funkwhale_api/federation/migrations/0006_auto_20180521_1702.py
>f++++++.?? api/funkwhale_api/federation/migrations/0007_auto_20180807_1748.py
>f++++++.?? api/funkwhale_api/federation/migrations/0008_auto_20180807_1748.py
>f++++++.?? api/funkwhale_api/federation/migrations/0009_auto_20180822_1956.py
>f++++++.?? api/funkwhale_api/federation/migrations/0010_auto_20180904_2011.py
>f++++++.?? api/funkwhale_api/federation/migrations/0011_auto_20180910_1902.py
>f++++++.?? api/funkwhale_api/federation/migrations/0012_auto_20180920_1803.py
>f++++++.?? api/funkwhale_api/federation/migrations/0013_auto_20181226_1935.py
>f++++++.?? api/funkwhale_api/federation/migrations/0014_auto_20181205_0958.py
>f++++++.?? api/funkwhale_api/federation/migrations/0015_populate_domains.py
>f++++++.?? api/funkwhale_api/federation/migrations/0016_auto_20181227_1605.py
>f++++++.?? api/funkwhale_api/federation/migrations/0017_auto_20190130_0926.py
>f++++++.?? api/funkwhale_api/federation/migrations/0018_fetch.py
>f++++++.?? api/funkwhale_api/federation/migrations/0019_auto_20190611_0851.py
>f++++++.?? api/funkwhale_api/federation/migrations/__init__.py
>f++++++.?? api/funkwhale_api/federation/models.py
>f++++++.?? api/funkwhale_api/federation/mrf_policies.py
>f++++++.?? api/funkwhale_api/federation/parsers.py
>f++++++.?? api/funkwhale_api/federation/renderers.py
>f++++++.?? api/funkwhale_api/federation/routes.py
>f++++++.?? api/funkwhale_api/federation/serializers.py
>f++++++.?? api/funkwhale_api/federation/signing.py
>f++++++.?? api/funkwhale_api/federation/tasks.py
>f++++++.?? api/funkwhale_api/federation/urls.py
>f++++++.?? api/funkwhale_api/federation/utils.py
>f++++++.?? api/funkwhale_api/federation/views.py
>f++++++.?? api/funkwhale_api/federation/webfinger.py
>d++++++.?? api/funkwhale_api/history/
>f++++++.?? api/funkwhale_api/history/__init__.py
>f++++++.?? api/funkwhale_api/history/activities.py
>f++++++.?? api/funkwhale_api/history/admin.py
>f++++++.?? api/funkwhale_api/history/factories.py
>f++++++.?? api/funkwhale_api/history/filters.py
>d++++++.?? api/funkwhale_api/history/migrations/
>f++++++.?? api/funkwhale_api/history/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/history/migrations/0002_auto_20180325_1433.py
>f++++++.?? api/funkwhale_api/history/migrations/__init__.py
>f++++++.?? api/funkwhale_api/history/models.py
>f++++++.?? api/funkwhale_api/history/serializers.py
>f++++++.?? api/funkwhale_api/history/urls.py
>f++++++.?? api/funkwhale_api/history/views.py
>d++++++.?? api/funkwhale_api/instance/
>f++++++.?? api/funkwhale_api/instance/__init__.py
>f++++++.?? api/funkwhale_api/instance/consumers.py
>f++++++.?? api/funkwhale_api/instance/dynamic_preferences_registry.py
>f++++++.?? api/funkwhale_api/instance/nodeinfo.py
>f++++++.?? api/funkwhale_api/instance/stats.py
>f++++++.?? api/funkwhale_api/instance/urls.py
>f++++++.?? api/funkwhale_api/instance/views.py
>d++++++.?? api/funkwhale_api/manage/
>f++++++.?? api/funkwhale_api/manage/__init__.py
>f++++++.?? api/funkwhale_api/manage/filters.py
>f++++++.?? api/funkwhale_api/manage/serializers.py
>f++++++.?? api/funkwhale_api/manage/urls.py
>f++++++.?? api/funkwhale_api/manage/views.py
>d++++++.?? api/funkwhale_api/moderation/
>f++++++.?? api/funkwhale_api/moderation/__init__.py
>f++++++.?? api/funkwhale_api/moderation/admin.py
>f++++++.?? api/funkwhale_api/moderation/apps.py
>f++++++.?? api/funkwhale_api/moderation/dynamic_preferences_registry.py
>f++++++.?? api/funkwhale_api/moderation/factories.py
>f++++++.?? api/funkwhale_api/moderation/filters.py
>d++++++.?? api/funkwhale_api/moderation/management/
>f++++++.?? api/funkwhale_api/moderation/management/__init__.py
>d++++++.?? api/funkwhale_api/moderation/management/commands/
>f++++++.?? api/funkwhale_api/moderation/management/commands/__init__.py
>f++++++.?? api/funkwhale_api/moderation/management/commands/mrf_check.py
>d++++++.?? api/funkwhale_api/moderation/migrations/
>f++++++.?? api/funkwhale_api/moderation/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/moderation/migrations/0002_auto_20190213_0927.py
>f++++++.?? api/funkwhale_api/moderation/migrations/__init__.py
>f++++++.?? api/funkwhale_api/moderation/models.py
>f++++++.?? api/funkwhale_api/moderation/mrf.py
>f++++++.?? api/funkwhale_api/moderation/mrf_policies.py
>f++++++.?? api/funkwhale_api/moderation/serializers.py
>f++++++.?? api/funkwhale_api/moderation/urls.py
>f++++++.?? api/funkwhale_api/moderation/views.py
>d++++++.?? api/funkwhale_api/music/
>f++++++.?? api/funkwhale_api/music/__init__.py
>f++++++.?? api/funkwhale_api/music/admin.py
>f++++++.?? api/funkwhale_api/music/dynamic_preferences_registry.py
>f++++++.?? api/funkwhale_api/music/factories.py
>f++++++.?? api/funkwhale_api/music/fake_data.py
>f++++++.?? api/funkwhale_api/music/filters.py
>f++++++.?? api/funkwhale_api/music/importers.py
>f++++++.?? api/funkwhale_api/music/licenses.py
>d++++++.?? api/funkwhale_api/music/management/
>f++++++.?? api/funkwhale_api/music/management/__init__.py
>d++++++.?? api/funkwhale_api/music/management/commands/
>f++++++.?? api/funkwhale_api/music/management/commands/__init__.py
>f++++++.?? api/funkwhale_api/music/management/commands/check_inplace_files.py
>f++++++.?? api/funkwhale_api/music/management/commands/check_licenses.py
>f++++++.?? api/funkwhale_api/music/management/commands/fix_uploads.py
>f++++++.?? api/funkwhale_api/music/management/commands/import_files.py
>f++++++.?? api/funkwhale_api/music/management/commands/prune_library.py
>f++++++.?? api/funkwhale_api/music/metadata.py
>d++++++.?? api/funkwhale_api/music/migrations/
>f++++++.?? api/funkwhale_api/music/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/music/migrations/0002_auto_20151215_1645.py
>f++++++.?? api/funkwhale_api/music/migrations/0003_auto_20151222_2233.py
>f++++++.?? api/funkwhale_api/music/migrations/0004_track_tags.py
>f++++++.?? api/funkwhale_api/music/migrations/0005_deduplicate.py
>f++++++.?? api/funkwhale_api/music/migrations/0006_unique_mbid.py
>f++++++.?? api/funkwhale_api/music/migrations/0007_track_position.py
>f++++++.?? api/funkwhale_api/music/migrations/0008_auto_20160529_1456.py
>f++++++.?? api/funkwhale_api/music/migrations/0009_auto_20160920_1614.py
>f++++++.?? api/funkwhale_api/music/migrations/0010_auto_20160920_1742.py
>f++++++.?? api/funkwhale_api/music/migrations/0011_rename_files.py
>f++++++.?? api/funkwhale_api/music/migrations/0012_auto_20161122_1905.py
>f++++++.?? api/funkwhale_api/music/migrations/0013_auto_20171213_2211.py
>f++++++.?? api/funkwhale_api/music/migrations/0014_importjob_track_file.py
>f++++++.?? api/funkwhale_api/music/migrations/0015_bind_track_file_to_import_job.py
>f++++++.?? api/funkwhale_api/music/migrations/0016_trackfile_acoustid_track_id.py
>f++++++.?? api/funkwhale_api/music/migrations/0017_auto_20171227_1728.py
>f++++++.?? api/funkwhale_api/music/migrations/0018_auto_20180218_1554.py
>f++++++.?? api/funkwhale_api/music/migrations/0019_populate_mimetypes.py
>f++++++.?? api/funkwhale_api/music/migrations/0020_importbatch_status.py
>f++++++.?? api/funkwhale_api/music/migrations/0021_populate_batch_status.py
>f++++++.?? api/funkwhale_api/music/migrations/0022_importbatch_import_request.py
>f++++++.?? api/funkwhale_api/music/migrations/0023_auto_20180407_1010.py
>f++++++.?? api/funkwhale_api/music/migrations/0024_populate_uuid.py
>f++++++.?? api/funkwhale_api/music/migrations/0025_auto_20180419_2023.py
>f++++++.?? api/funkwhale_api/music/migrations/0026_trackfile_accessed_date.py
>f++++++.?? api/funkwhale_api/music/migrations/0027_auto_20180515_1808.py
>f++++++.?? api/funkwhale_api/music/migrations/0028_importjob_replace_if_duplicate.py
>f++++++.?? api/funkwhale_api/music/migrations/0029_auto_20180807_1748.py
>f++++++.?? api/funkwhale_api/music/migrations/0030_auto_20180825_1411.py
>f++++++.?? api/funkwhale_api/music/migrations/0031_auto_20180914_2007.py
>f++++++.?? api/funkwhale_api/music/migrations/0032_track_file_to_upload.py
>f++++++.?? api/funkwhale_api/music/migrations/0033_auto_20181023_1837.py
>f++++++.?? api/funkwhale_api/music/migrations/0034_auto_20181127_0325.py
>f++++++.?? api/funkwhale_api/music/migrations/0035_auto_20181203_1515.py
>f++++++.?? api/funkwhale_api/music/migrations/0036_track_disc_number.py
>f++++++.?? api/funkwhale_api/music/migrations/0037_auto_20190103_1757.py
>f++++++.?? api/funkwhale_api/music/migrations/0038_attributed_to.py
>f++++++.?? api/funkwhale_api/music/migrations/0039_auto_20190423_0820.py
>f++++++.?? api/funkwhale_api/music/migrations/__init__.py
>f++++++.?? api/funkwhale_api/music/models.py
>f++++++.?? api/funkwhale_api/music/mutations.py
>f++++++.?? api/funkwhale_api/music/serializers.py
>f++++++.?? api/funkwhale_api/music/signals.py
>f++++++.?? api/funkwhale_api/music/spa_views.py
>f++++++.?? api/funkwhale_api/music/tasks.py
>f++++++.?? api/funkwhale_api/music/utils.py
>f++++++.?? api/funkwhale_api/music/views.py
>d++++++.?? api/funkwhale_api/musicbrainz/
>f++++++.?? api/funkwhale_api/musicbrainz/__init__.py
>f++++++.?? api/funkwhale_api/musicbrainz/client.py
>f++++++.?? api/funkwhale_api/musicbrainz/urls.py
>f++++++.?? api/funkwhale_api/musicbrainz/views.py
>d++++++.?? api/funkwhale_api/playlists/
>f++++++.?? api/funkwhale_api/playlists/__init__.py
>f++++++.?? api/funkwhale_api/playlists/admin.py
>f++++++.?? api/funkwhale_api/playlists/dynamic_preferences_registry.py
>f++++++.?? api/funkwhale_api/playlists/factories.py
>f++++++.?? api/funkwhale_api/playlists/filters.py
>d++++++.?? api/funkwhale_api/playlists/migrations/
>f++++++.?? api/funkwhale_api/playlists/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/playlists/migrations/0002_auto_20180316_2217.py
>f++++++.?? api/funkwhale_api/playlists/migrations/0003_auto_20180319_1214.py
>f++++++.?? api/funkwhale_api/playlists/migrations/0004_auto_20180320_1713.py
>f++++++.?? api/funkwhale_api/playlists/migrations/__init__.py
>f++++++.?? api/funkwhale_api/playlists/models.py
>f++++++.?? api/funkwhale_api/playlists/serializers.py
>f++++++.?? api/funkwhale_api/playlists/views.py
>d++++++.?? api/funkwhale_api/providers/
>f++++++.?? api/funkwhale_api/providers/__init__.py
>f++++++.?? api/funkwhale_api/providers/urls.py
>d++++++.?? api/funkwhale_api/radios/
>f++++++.?? api/funkwhale_api/radios/__init__.py
>f++++++.?? api/funkwhale_api/radios/admin.py
>f++++++.?? api/funkwhale_api/radios/factories.py
>f++++++.?? api/funkwhale_api/radios/filters.py
>f++++++.?? api/funkwhale_api/radios/filtersets.py
>d++++++.?? api/funkwhale_api/radios/migrations/
>f++++++.?? api/funkwhale_api/radios/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/radios/migrations/0002_radiosession_session_key.py
>f++++++.?? api/funkwhale_api/radios/migrations/0003_auto_20160521_1708.py
>f++++++.?? api/funkwhale_api/radios/migrations/0004_auto_20180107_1813.py
>f++++++.?? api/funkwhale_api/radios/migrations/__init__.py
>f++++++.?? api/funkwhale_api/radios/models.py
>f++++++.?? api/funkwhale_api/radios/radios.py
>f++++++.?? api/funkwhale_api/radios/registries.py
>f++++++.?? api/funkwhale_api/radios/serializers.py
>f++++++.?? api/funkwhale_api/radios/urls.py
>f++++++.?? api/funkwhale_api/radios/views.py
>d++++++.?? api/funkwhale_api/requests/
>f++++++.?? api/funkwhale_api/requests/__init__.py
>d++++++.?? api/funkwhale_api/requests/migrations/
>f++++++.?? api/funkwhale_api/requests/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/requests/migrations/__init__.py
>f++++++.?? api/funkwhale_api/requests/models.py
>d++++++.?? api/funkwhale_api/static/
>d++++++.?? api/funkwhale_api/static/css/
>f++++++.?? api/funkwhale_api/static/css/project.css
>d++++++.?? api/funkwhale_api/static/fonts/
>f++++++.?? api/funkwhale_api/static/fonts/.gitkeep
>d++++++.?? api/funkwhale_api/static/images/
>f++++++.?? api/funkwhale_api/static/images/favicon.ico
>d++++++.?? api/funkwhale_api/static/js/
>f++++++.?? api/funkwhale_api/static/js/project.js
>d++++++.?? api/funkwhale_api/static/music/
>f++++++.?? api/funkwhale_api/static/music/sample1.ogg
>d++++++.?? api/funkwhale_api/static/sass/
>f++++++.?? api/funkwhale_api/static/sass/project.scss
>d++++++.?? api/funkwhale_api/subsonic/
>f++++++.?? api/funkwhale_api/subsonic/__init__.py
>f++++++.?? api/funkwhale_api/subsonic/authentication.py
>f++++++.?? api/funkwhale_api/subsonic/dynamic_preferences_registry.py
>f++++++.?? api/funkwhale_api/subsonic/filters.py
>f++++++.?? api/funkwhale_api/subsonic/negotiation.py
>f++++++.?? api/funkwhale_api/subsonic/renderers.py
>f++++++.?? api/funkwhale_api/subsonic/serializers.py
>f++++++.?? api/funkwhale_api/subsonic/views.py
>d++++++.?? api/funkwhale_api/tags/
>f++++++.?? api/funkwhale_api/tags/__init__.py
>f++++++.?? api/funkwhale_api/tags/admin.py
>f++++++.?? api/funkwhale_api/tags/factories.py
>f++++++.?? api/funkwhale_api/tags/filters.py
>d++++++.?? api/funkwhale_api/tags/migrations/
>f++++++.?? api/funkwhale_api/tags/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/tags/migrations/__init__.py
>f++++++.?? api/funkwhale_api/tags/models.py
>f++++++.?? api/funkwhale_api/tags/serializers.py
>f++++++.?? api/funkwhale_api/tags/views.py
>d++++++.?? api/funkwhale_api/taskapp/
>f++++++.?? api/funkwhale_api/taskapp/__init__.py
>f++++++.?? api/funkwhale_api/taskapp/celery.py
>d++++++.?? api/funkwhale_api/templates/
>d++++++.?? api/funkwhale_api/templates/account/
>d++++++.?? api/funkwhale_api/templates/account/email/
>f++++++.?? api/funkwhale_api/templates/account/email/email_confirmation_message.txt
>d++++++.?? api/funkwhale_api/templates/registration/
>f++++++.?? api/funkwhale_api/templates/registration/password_reset_email.html
>d++++++.?? api/funkwhale_api/users/
>f++++++.?? api/funkwhale_api/users/__init__.py
>f++++++.?? api/funkwhale_api/users/adapters.py
>f++++++.?? api/funkwhale_api/users/admin.py
>f++++++.?? api/funkwhale_api/users/api_urls.py
>f++++++.?? api/funkwhale_api/users/auth_backends.py
>f++++++.?? api/funkwhale_api/users/dynamic_preferences_registry.py
>f++++++.?? api/funkwhale_api/users/factories.py
>f++++++.?? api/funkwhale_api/users/middleware.py
>d++++++.?? api/funkwhale_api/users/migrations/
>f++++++.?? api/funkwhale_api/users/migrations/0001_initial.py
>f++++++.?? api/funkwhale_api/users/migrations/0002_auto_20171214_2205.py
>f++++++.?? api/funkwhale_api/users/migrations/0003_auto_20171226_1357.py
>f++++++.?? api/funkwhale_api/users/migrations/0004_user_privacy_level.py
>f++++++.?? api/funkwhale_api/users/migrations/0005_user_subsonic_api_token.py
>f++++++.?? api/funkwhale_api/users/migrations/0006_auto_20180517_2324.py
>f++++++.?? api/funkwhale_api/users/migrations/0007_auto_20180524_2009.py
>f++++++.?? api/funkwhale_api/users/migrations/0008_auto_20180617_1531.py
>f++++++.?? api/funkwhale_api/users/migrations/0009_auto_20180619_2024.py
>f++++++.?? api/funkwhale_api/users/migrations/0010_user_avatar.py
>f++++++.?? api/funkwhale_api/users/migrations/0011_auto_20180721_1317.py
>f++++++.?? api/funkwhale_api/users/migrations/0012_user_upload_quota.py
>f++++++.?? api/funkwhale_api/users/migrations/0013_auto_20181206_1008.py
>f++++++.?? api/funkwhale_api/users/migrations/0014_oauth.py
>f++++++.?? api/funkwhale_api/users/migrations/0015_application_scope.py
>f++++++.?? api/funkwhale_api/users/migrations/__init__.py
>f++++++.?? api/funkwhale_api/users/models.py
>d++++++.?? api/funkwhale_api/users/oauth/
>f++++++.?? api/funkwhale_api/users/oauth/__init__.py
>f++++++.?? api/funkwhale_api/users/oauth/permissions.py
>f++++++.?? api/funkwhale_api/users/oauth/scopes.py
>f++++++.?? api/funkwhale_api/users/oauth/serializers.py
>f++++++.?? api/funkwhale_api/users/oauth/server.py
>f++++++.?? api/funkwhale_api/users/oauth/tasks.py
>f++++++.?? api/funkwhale_api/users/oauth/urls.py
>f++++++.?? api/funkwhale_api/users/oauth/views.py
>f++++++.?? api/funkwhale_api/users/rest_auth_urls.py
>f++++++.?? api/funkwhale_api/users/serializers.py
>f++++++.?? api/funkwhale_api/users/views.py
>f++++++.?? api/install_os_dependencies.sh
>f++++++.?? api/manage.py
>d++++++.?? api/requirements/
>f++++++.?? api/requirements.apt
>f++++++.?? api/requirements.pac
>f++++++.?? api/requirements.txt
>f++++++.?? api/requirements/base.txt
>f++++++.?? api/requirements/local.txt
>f++++++.?? api/requirements/test.txt
>f++++++.?? api/setup.cfg
changed: [127.0.0.1]

TASK [funkwhale : Setup virtualenv] **************************************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Install python dependencies] ***************************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Install gunicorn/uvicorn] ******************************************************************************************************************
ok: [127.0.0.1]

TASK [funkwhale : Collect static files] **********************************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Apply database migrations] *****************************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Create funkwhale-* systemd file] ***********************************************************************************************************
--- before
+++ after: /root/.ansible/tmp/ansible-local-2413o2bc28e3/tmpe1tgdmc7/funkwhale-process.service.j2
@@ -0,0 +1,16 @@
+# Ansible managed
+[Unit]
+Description=Funkwhale celery worker
+After=redis.service postgresql.service
+PartOf=funkwhale.target
+
+[Service]
+Restart=on-failure
+RestartSec=10
+User=funkwhale
+WorkingDirectory=/srv/funkwhale/api
+EnvironmentFile=/srv/funkwhale/config/.env
+ExecStart=/srv/funkwhale/virtualenv/bin/celery -A funkwhale_api.taskapp worker -l INFO
+
+[Install]
+WantedBy=multi-user.target

changed: [127.0.0.1] => (item={'name': 'worker', 'description': 'Funkwhale celery worker', 'command': '/srv/funkwhale/virtualenv/bin/celery -A funkwhale_api.taskapp worker -l INFO'})
--- before
+++ after: /root/.ansible/tmp/ansible-local-2413o2bc28e3/tmpo0t7k682/funkwhale-process.service.j2
@@ -0,0 +1,16 @@
+# Ansible managed
+[Unit]
+Description=Funkwhale application server
+After=redis.service postgresql.service
+PartOf=funkwhale.target
+
+[Service]
+Restart=on-failure
+RestartSec=10
+User=funkwhale
+WorkingDirectory=/srv/funkwhale/api
+EnvironmentFile=/srv/funkwhale/config/.env
+ExecStart=/srv/funkwhale/virtualenv/bin/gunicorn config.asgi:application -w ${FUNKWHALE_WEB_WORKERS} -k uvicorn.workers.UvicornWorker -b ${FUNKWHALE_API_IP}:${FUNKWHALE_API_PORT}
+
+[Install]
+WantedBy=multi-user.target

changed: [127.0.0.1] => (item={'name': 'server', 'description': 'Funkwhale application server', 'command': '/srv/funkwhale/virtualenv/bin/gunicorn config.asgi:application -w ${FUNKWHALE_WEB_WORKERS} -k uvicorn.workers.UvicornWorker -b ${FUNKWHALE_API_IP}:${FUNKWHALE_API_PORT}'})
--- before
+++ after: /root/.ansible/tmp/ansible-local-2413o2bc28e3/tmp6083c9nj/funkwhale-process.service.j2
@@ -0,0 +1,16 @@
+# Ansible managed
+[Unit]
+Description=Funkwhale celery beat process
+After=redis.service postgresql.service
+PartOf=funkwhale.target
+
+[Service]
+Restart=on-failure
+RestartSec=10
+User=funkwhale
+WorkingDirectory=/srv/funkwhale/api
+EnvironmentFile=/srv/funkwhale/config/.env
+ExecStart=/srv/funkwhale/virtualenv/bin/celery -A funkwhale_api.taskapp beat -l INFO
+
+[Install]
+WantedBy=multi-user.target

changed: [127.0.0.1] => (item={'name': 'beat', 'description': 'Funkwhale celery beat process', 'command': '/srv/funkwhale/virtualenv/bin/celery -A funkwhale_api.taskapp beat -l INFO'})

TASK [funkwhale : Create funkwhale systemd target file] ******************************************************************************************************
--- before
+++ after: /root/.ansible/tmp/ansible-local-2413o2bc28e3/tmp42anqw61/funkwhale.target.j2
@@ -0,0 +1,3 @@
+[Unit]
+Description=Funkwhale
+Wants=funkwhale-server.service funkwhale-worker.service funkwhale-beat.service

changed: [127.0.0.1]

TASK [funkwhale : Start and enable funkwhale-* services] *****************************************************************************************************
changed: [127.0.0.1] => (item=funkwhale.target)
changed: [127.0.0.1] => (item=funkwhale-worker.service)
changed: [127.0.0.1] => (item=funkwhale-server.service)
changed: [127.0.0.1] => (item=funkwhale-beat.service)

TASK [funkwhale : Install nginx] *****************************************************************************************************************************
The following additional packages will be installed:
  geoip-database libgd3 libgeoip1 libnginx-mod-http-auth-pam
  libnginx-mod-http-dav-ext libnginx-mod-http-echo libnginx-mod-http-geoip
  libnginx-mod-http-image-filter libnginx-mod-http-subs-filter
  libnginx-mod-http-upstream-fair libnginx-mod-http-xslt-filter
  libnginx-mod-mail libnginx-mod-stream libxpm4 nginx-common nginx-full
Suggested packages:
  libgd-tools geoip-bin fcgiwrap nginx-doc
The following NEW packages will be installed:
  geoip-database libgd3 libgeoip1 libnginx-mod-http-auth-pam
  libnginx-mod-http-dav-ext libnginx-mod-http-echo libnginx-mod-http-geoip
  libnginx-mod-http-image-filter libnginx-mod-http-subs-filter
  libnginx-mod-http-upstream-fair libnginx-mod-http-xslt-filter
  libnginx-mod-mail libnginx-mod-stream libxpm4 nginx nginx-common nginx-full
0 upgraded, 17 newly installed, 0 to remove and 0 not upgraded.
changed: [127.0.0.1]

TASK [funkwhale : Start Nginx] *******************************************************************************************************************************
ok: [127.0.0.1]

TASK [funkwhale : Download certbot-auto] *********************************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Install certbot using certbot-auto] ********************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Create letsencrypt certificate] ************************************************************************************************************
changed: [127.0.0.1]

TASK [funkwhale : Add letsencrypt cronjob for cert renewal] **************************************************************************************************
--- before: crontab
+++ after: crontab
@@ -0,0 +1,2 @@
+#Ansible: funkwhale_letsencrypt_renewal
+@weekly certbot-auto -v -n --renew certonly --nginx -m contact@eliotberriot.com --agree-tos -d test-installer.funkwhale.audio 

changed: [127.0.0.1]

TASK [funkwhale : Create funkwhale proxy file] ***************************************************************************************************************
--- before
+++ after: /root/.ansible/tmp/ansible-local-2413o2bc28e3/tmpp1y3s6sh/funkwhale_proxy.conf.j2
@@ -0,0 +1,13 @@
+# global proxy conf
+proxy_set_header Host $host;
+proxy_set_header X-Real-IP $remote_addr;
+proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+proxy_set_header X-Forwarded-Proto $scheme;
+proxy_set_header X-Forwarded-Host $host:$server_port;
+proxy_set_header X-Forwarded-Port $server_port;
+proxy_redirect off;
+
+# websocket support
+proxy_http_version 1.1;
+proxy_set_header Upgrade $http_upgrade;
+proxy_set_header Connection $connection_upgrade;

changed: [127.0.0.1]

TASK [funkwhale : Create funkwhale vhost file] ***************************************************************************************************************
--- before
+++ after: /root/.ansible/tmp/ansible-local-2413o2bc28e3/tmpwp1zg9pe/nginx.conf.j2
@@ -0,0 +1,113 @@
+# Ansible managed
+server {
+    listen 80;
+    listen [::]:80;
+    server_name test-installer.funkwhale.audio;
+    location / { return 301 https://$host$request_uri; }
+}
+# required for websocket support
+map $http_upgrade $connection_upgrade {
+    default upgrade;
+    ''      close;
+}
+
+server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name test-installer.funkwhale.audio;
+    ssl_certificate /etc/letsencrypt/live/test-installer.funkwhale.audio/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/test-installer.funkwhale.audio/privkey.pem;
+    # from https://cipherli.st/
+    ssl_prefer_server_ciphers on;
+    ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
+    ssl_ecdh_curve secp384r1;
+    ssl_session_timeout  10m;
+    ssl_session_cache shared:SSL:10m;
+    ssl_session_tickets off;
+    ssl_stapling on;
+    ssl_stapling_verify on;
+    add_header Strict-Transport-Security "max-age=63072000; preload";
+    root /srv/funkwhale/front/dist;
+
+    # compression settings
+    gzip on;
+    gzip_comp_level    5;
+    gzip_min_length    256;
+    gzip_proxied       any;
+    gzip_vary          on;
+
+    gzip_types
+        application/javascript
+        application/vnd.geo+json
+        application/vnd.ms-fontobject
+        application/x-font-ttf
+        application/x-web-app-manifest+json
+        font/opentype
+        image/bmp
+        image/svg+xml
+        image/x-icon
+        text/cache-manifest
+        text/css
+        text/plain
+        text/vcard
+        text/vnd.rim.location.xloc
+        text/vtt
+        text/x-component
+        text/x-cross-domain-policy;
+
+    # end of compression settings
+    location / {
+        include /etc/nginx/funkwhale_proxy.conf;
+        # this is needed if you have file import via upload enabled
+        client_max_body_size 100M;
+        proxy_pass   http://127.0.0.1:5000/;
+    }
+
+    location /front/ {
+        alias /srv/funkwhale/front/dist/;
+        expires 30d;
+        add_header Pragma public;
+        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
+    }
+
+    location /federation/ {
+        include /etc/nginx/funkwhale_proxy.conf;
+        proxy_pass   http://127.0.0.1:5000/federation/;
+    }
+
+    # You can comment this if you do not plan to use the Subsonic API
+    location /rest/ {
+        include /etc/nginx/funkwhale_proxy.conf;
+        proxy_pass   http://127.0.0.1:5000/api/subsonic/rest/;
+    }
+
+    location /.well-known/ {
+        include /etc/nginx/funkwhale_proxy.conf;
+        proxy_pass   http://127.0.0.1:5000/.well-known/;
+    }
+
+    location /media/ {
+        alias /srv/funkwhale/data/media/;
+    }
+
+    location /_protected/media {
+        # this is an internal location that is used to serve
+        # audio files once correct permission / authentication
+        # has been checked on API side
+        internal;
+        alias   /srv/funkwhale/data/media;
+    }
+    location /_protected/music {
+        # this is an internal location that is used to serve
+        # audio files once correct permission / authentication
+        # has been checked on API side
+        # Set this to the same value as your MUSIC_DIRECTORY_PATH setting
+        internal;
+        alias   /srv/funkwhale/data/music;
+    }
+
+    location /staticfiles/ {
+        # django static files
+        alias /srv/funkwhale/data/static/;
+    }
+}

changed: [127.0.0.1]

RUNNING HANDLER [funkwhale : restart funkwhale] **************************************************************************************************************
changed: [127.0.0.1]

RUNNING HANDLER [funkwhale : reload funkwhale] ***************************************************************************************************************
changed: [127.0.0.1]

RUNNING HANDLER [funkwhale : reload nginx] *******************************************************************************************************************
changed: [127.0.0.1]

PLAY RECAP ***************************************************************************************************************************************************
127.0.0.1                  : ok=40   changed=31   unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   

[4/4] Running final server configuration…
[4/4] Creating simple management script at /srv/funkwhale/manage
[4/4] Creating superuser account…
  Please input the password for the admin account password
Password: 
Password (again): 
Done!
 - Everything was installed in the /srv/funkwhale directory
 - Created a superuser account with username test and the password you supplied
 - Your Funkwhale server is now up and running at https://test-installer.funkwhale.audio
 - You can run management commands by calling /srv/funkwhale/manage, e.g /srv/funkwhale/manage import_files
Edited by Agate

Merge request reports