- Edited
Hello all,
Happy new year to whoever reads this
@Sporiff Late last year I followed the instructions on the Develop branch to install Funkwhale using Docker, as you suggested on GitLab.
My compliment on the rework you did there - it's a big big improvement! While going through the process from scratch (I wiped everything I had and started over), I noted a few points that weren't entirely clear to me or didn't go 100% smooth. I just wanted to share them here as it might help for further improvements.
3.1 Pull the containers to download all the required services
docker-compose pull
The syntax in the install guide is based on Compose standalone (with the dash), however, that's no longer a supported scenario.
Instead, Compose v2 uses a space.
2.5 Open the
.env
file in a text editor
Instructions are clear. I had some doubts, however, about the env file itself:
# If you're tweaking this file from the template, ensure you edit at least the
# following variables:
...
# Additional options you may want to check:
# - MUSIC_DIRECTORY_PATH and MUSIC_DIRECTORY_SERVE_PATH if you plan to use
# in-place import
And so I check this section:
# In-place import settings
# You can safely leave those settings uncommented if you don't plan to use
# in place imports.
But I do plan to use in-place imports as my files will be stored on the NAS, separate from Funkwhale. So I go on:
# Typical docker setup:
# MUSIC_DIRECTORY_PATH=/music # docker-only
# MUSIC_DIRECTORY_SERVE_PATH=/srv/funkwhale/data/music
As per the docs
On Docker setups the value of
MUSIC_DIRECTORY_PATH
may be different from the actual path on your server
- In my compose file, can I adjust the first (source) and/or the second (target)? I now have it working so I guess I did figure it out (that
MUSIC_DIRECTORY_PATH
should be the same as the volume specified in the compose file and thatMUSIC_DIRECTORY_SERVE_PATH
should be the actual location), but I think it'd be helpful to make this a bit clearer in the env file template. I would suggest:
# In-place import settings
#
Even if you don't plan to use in place import
you can safely leave those settings
active (
uncommented
)
if you don't plan to use
# in place imports.
(because currently this first line that says 'leave uncommented' contradicts the comment after the referenced line, which says 'stays commented' for non-docker set-ups)
# Typical docker setup:
# MUSIC_DIRECTORY_PATH=/music #
docker-only
volume specified in the compose file
# MUSIC_DIRECTORY_SERVE_PATH=/srv/funkwhale/data/music #
location of the folder on your drive
- I would also update the documentation slightly: https://docs.funkwhale.audio/develop/administrator_documentation/configuration_docs/env_file.html#config.settings.common.MUSIC_DIRECTORY_PATH. I would suggest:
The path on your server from where Funkwhale
placespicks up files from in-place imports.
(because, if I understand correctly, in-place import actually doesn't place/copy any file, but rather puts existing file locations in the database)
On Docker installations, we recommend you
use the defaultchange the default value to/music
path.
(because /music
is not the default path in the template file, but this: MUSIC_DIRECTORY_PATH=/srv/funkwhale/data/music
)
Though all in all I'm thinking it might be better to just remove the default alltogether and tell people to uncomment if needed (only in case of Docker)?
- And the import documentation: https://docs.funkwhale.audio/develop/administrator_documentation/import_docs/index.html#link-your-file-directory
To do this, you need to add the directory to the
api
andceleryworker
andfront
blocks in yourdocker-compose.yml
file
(IIRC I was told in the Matrix channel that also front needs access to the music volume - that's in any case how I got it working now)
- rather than repeating the volumes in each of the three blocks, isn't it possible to declare the necessary volumes once and reference them in the three blocks? That'd be a bit less error-prone.
- I also noted back when doing this that "I can add my in-place import location to docker-compose.yml as volume (to the 3 containers) but editing the
.env
file (/srv/funkwhale/data/music
-->/NAS/music
) has the same effect & is easier"
- type: bind
source: /media/nfsshare
destination: /srv/funkwhale/data/music/nfsshare
That didn't work for me and, again, IIRC, I was told in the Matrix channel that this wasn't correct. I now have just removed this because the NFS share is mounted to a folder, and I've just referenced that in the .env
file as mentioned above.
2.3 Reduce the permissions on your
.env
file to600
. This means that only your user can read and write this file
As I went through the whole instructions using sudo
(due to Docker permissions), this prevented me from source
ing the .env
file while updating. Maybe this'll be addressed already by #2025.
I'm sorry for this wall of text. Really they're relatively minor points, but I wanted to share them anyway.