/docker-funkwhale

All-in-one funkwhale docker image.

Primary LanguageDockerfile

Funkwhale Docker Container

Funkwhale is a modern, self-hosted, free and open-source music server.

Usage

docker create \
	--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

Parameters

  • -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.

Instructions

Creation

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 /bin/sh in the terminal prompt, enter /usr/local/bin/manage createsuperuser

Importing Music

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: b8756c0d-839b-461f-b334-583983dc9ead. Set the 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 develop tag).

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 .