Take full ownership of your audio experience with a free, decentralized platform designed for music lovers, artists, and podcasters. Whether you want to access your personal music collection from anywhere or publish your own podcasts, this community-driven network gives you total independence. Enjoy your favorite tracks from a web browser or any compatible app, including Subsonic clients and standard podcatchers.
Key benefits include:
services:
postgres:
restart: unless-stopped
env_file: .env
image: postgres:15
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
redis:
restart: unless-stopped
env_file: .env
image: redis:7
volumes:
- ./data/redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
typesense:
restart: unless-stopped
env_file: .env
image: typesense/typesense:0.24.0
volumes:
- ./data/typesense:/data
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8108/health"]
interval: 10s
timeout: 5s
retries: 5
api:
restart: unless-stopped
env_file: .env
image: funkwhale/funkwhale:${FUNKWHALE_VERSION:-latest}
depends_on:
- postgres
- redis
- typesense
volumes:
- ./data/music:/music:ro
- ./data/media:/app/data/media
- ./data/static:/app/data/static
ports:
- "${FUNKWHALE_API_PORT:-5000}:5000"
celeryworker:
restart: unless-stopped
env_file: .env
image: funkwhale/funkwhale:${FUNKWHALE_VERSION:-latest}
depends_on:
- postgres
- redis
command: celery -A funkwhale_api.taskapp worker -l INFO --concurrency=${CELERYD_CONCURRENCY:-0}
volumes:
- ./data/music:/music:ro
- ./data/media:/app/data/media
- ./data/static:/app/data/static
celerybeat:
restart: unless-stopped
env_file: .env
image: funkwhale/funkwhale:${FUNKWHALE_VERSION:-latest}
depends_on:
- postgres
- redis
command: celery -A funkwhale_api.taskapp beat -l INFO
volumes:
- ./data/music:/music:ro
- ./data/media:/app/data/media
- ./data/static:/app/data/static# Funkwhale Version
FUNKWHALE_VERSION=latest
# Instance Configuration
FUNKWHALE_HOSTNAME=yourdomain.funkwhale
FUNKWHALE_PROTOCOL=http
FUNKWHALE_API_PORT=5000
# Security (CHANGE THESE)
DJANGO_SECRET_KEY=change_me_to_a_very_long_random_string
TYPESENSE_API_KEY=change_me_to_a_random_string
POSTGRES_PASSWORD=change_me_to_a_secure_password
# Database Configuration
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_USER=funkwhale
POSTGRES_DB=funkwhale
# Redis Configuration
REDIS_HOST=redis
REDIS_PORT=6379
# Typesense Configuration
TYPESENSE_HOST=typesense
TYPESENSE_PORT=8108
TYPESENSE_PROTOCOL=http
# Internal Container Paths (Do not change unless necessary)
MEDIA_ROOT=/app/data/media
STATIC_ROOT=/app/data/static
# Worker Configuration
CELERYD_CONCURRENCY=2Auto-fetched about 21 hours ago