Funkwhale Docker Container
Funkwhale is a modern, self-hosted, free and open-source music server.
docker run \ --name=funkwhale \ -e FUNKWHALE_HOSTNAME=<yourdomain.funkwhale> \ -e NESTED_PROXY=0 \ -v </path/to/data>:/data \ -v </path/to/path>:/music:ro \ -p 3030:80 \ thetarkus/funkwhale
-e PUID- Optional user ID for volume ownership.
-e PGID- Optional group ID for volume ownership.
-e FUNKWHALE_HOSTNAME- Hostname of your Funkwhale instance.
-e NESTED_PROXY- Set to 1 when container is behind a reverse proxy.
-v /data- Volume to save media files and database.
-v /music- Path to your music.
-p 3030:80- Access Funkwhale on port 3030.
Creation of the container will take a minute or two. The commands in the sections below will not work until the initialization is complete. For any subsequent runs (assuming you are re-using the
/data volume), there will be no wait time.
Create an initial superuser account
On the creation of your container, you will need to create an account. Running the following command will prompt you for a username, email, and password for your new account.
docker exec -it funkwhale manage createsuperuser
all this does is run
/usr/local/bin/manage createsuperuser on the docker
if you are running on synology docker, in the funkwhale docker window go to Terminal, click the drop-down arrow by create and enter
in the terminal prompt, enter
To import your music, open your Funkwhale instance in your browser and find the libraries page under "Add content" and create a library. Click the "details" button on your newly created library and get the library ID from the URL bar. It will look similar to the format of:
LIBRARY_ID environment variable (or replace it inside of the command) with your library ID, then run the command below.
# For file structures similar to ./Artist/Album/Track.mp3 docker exec -it funkwhale manage import_files $LIBRARY_ID "/music/**/**/*.mp3" --in-place --async
For more information see the Funkwhale docs on importing music.
Running behind a proxy
In more involved deployments, you may have a reverse proxy in front of the container.
If it is the case, add the
-e NESTED_PROXY=1 flag to the docker run command, or ensure
NESTED_PROXY=1 is available in the container environment.
Build this image
This image is built and pushed automatically on
funkwhale/all-in-one, for all Funkwhale releases and for the development version as well (using the
If you want to build it manually, you can run the following:
image_name='mycustomimage' # choose a name for the image version='develop' # replace 'develop' with any tag or branch name arch='amd64' # set your cpu architecture # download Funkwhale front and api artifacts and nginx configuration ./scripts/download-artifact.sh src/ $version build_front ./scripts/download-artifact.sh src/ $version build_api ./scripts/download-nginx-template.sh src/ $version docker build --build-arg $arch -t $image_name:$version .