Spotify like
Je cherchais depuis un moment une alternative libre à Spotify. J’ai finalement opté pour Funkwhale…
Installation
Dans le prolongement du post sur Traefik, je vous propose aujourd’hui de déployer une instance Funkwhale avec Docker.
Je pars du docker-compose.yml
proposé dans la doc officielle et j’apporte quelques modifications:
- utilisation de
named volumes
au lieu debind mount
- directive de
expose
au lieu deports
(inutile d’exposer un port sur la machine hôte) - utilisation du réseau dédié à Traefik
Info
En l’absence de directive container_name
, docker-compose va nommer les conteneurs en <basedir>_<service-name>_<inc>
, dans cette exemple ça donne: funkwhale_funkwale_1
1version: "3"
2services:
3 funkwhale:
4 container_name: funkwhale
5 restart: unless-stopped
6 image: funkwhale/all-in-one:latest
7 env_file: .env
8 networks:
9 - traefik_lan
10 volumes:
11 - app:/data
12 expose:
13 - "80"
14 labels:
15 - "traefik.enable=true"
16 - "traefik.docker.network=traefik_lan"
17 - "traefik.http.routers.funkwhalenotls.rule=Host(`music.domain.tld`)"
18 - "traefik.http.routers.funkwhalenotls.entrypoints=webinsecure"
19 - "traefik.http.routers.funkwhalenotls.middlewares=tlsredir@file"
20 - "traefik.http.routers.funkwhale.rule=Host(`music.domain.tld`)"
21 - "traefik.http.routers.funkwhale.entrypoints=websecure"
22 - "traefik.http.routers.funkwhale.tls=true"
23 - "traefik.http.routers.funkwhale.tls.certresolver=letsencrypt"
24
25networks:
26 traefik_lan:
27 external: true
28
29volumes:
30 app:
Note
Cette configuration ne permet pas d’importer de la music depuis un répertoire local de la machine hôte -> voir doc si cette posibilité vous intéresse.
Il ne reste plus qu’a personnaliser le fichier d’environnement avec votre FQDN:
1touch .env
2chmod 600 .env
3cat > .env << EOF
4# Replace 'your.funkwhale.example' with your actual domain
5FUNKWHALE_HOSTNAME=your.funkwhale.example
6# Protocol may also be: http
7FUNKWHALE_PROTOCOL=https
8# This limits the upload size
9NGINX_MAX_BODY_SIZE=100M
10# Bind to localhost
11FUNKWHALE_API_IP=127.0.0.1
12# Container port you want to expose on the host
13FUNKWHALE_API_PORT=5000
14# Generate and store a secure secret key for your instance
15DJANGO_SECRET_KEY=$(openssl rand -hex 45)
16# Remove this if you expose the container directly on ports 80/443
17NESTED_PROXY=1
18EOF