Skip to content
Snippets Groups Projects
user avatar
Eliot Berriot authored
ed1a1019

Funkwhale ansible role

An ansible role to install and update Funkwhale.

Summary

Using this role, you can install and upgrade a Funkwhale pod, closely matching our standard installation guide. The role will take care of:

  • Installing and configure dependencies and packages
  • Install and configure PostgreSQL, Redis and Nginx (optional)
  • Install and configure Funkwhale and it's dependencies
  • Install and configure a SSL certificate with Let's Encrypt (optional)

Usage

Add the following to your playbook:

- hosts: servers
  roles:
    - role: funkwhale
      funkwhale_hostname: yourdomain.funkwhale
      funkwhale_version: 0.18.3
      funkwhale_letsencrypt_email: contact@youremail.com

See below for a full documentation on available variables.

Role Variables

Required variables

name Example Description
funkwhale_hostname yourdomain.funkwhale The domain name of your Funkwhale pod
funkwhale_version 0.18.3 The version to install/upgrade to. You can also use develop to run the development branch
funkwhale_letsencrypt_email contact@youremail.com The email to associate with your Let's Encrypt certificate (not needed if you set funkwhale_letsencrypt_enabled: false, see below)

Optional variables

name Default Description
funkwhale_api_ip 127.0.0.1 IP adress to bind the Funkwhale server to
funkwhale_api_port 5000 Port to bind the Funkwhale server to
funkwhale_config_path /srv/funkwhale/config Path to Funkwhale's configuration directory
funkwhale_database_managed true If true, the role will manage the database server and Funkwhale's database
funkwhale_database_name funkwhale Name of the Funkwhale database to use
funkwhale_database_user funkwhale Postgresql username to login as
funkwhale_env_vars [] List of environment variables to append to the generated .env file. Example: ["AWS_ACCESS_KEY_ID=myawsid", "AWS_SECRET_ACCESS_KEY=myawskey"]
funkwhale_external_storage_enabled false If true, set up the proper configuration to use an extenal storage for media files
funkwhale_install_path /srv/funkwhale Path were frontend, api and virtualenv files should be stored (no trailing slash)
funkwhale_letsencrypt_certbot_flags null Additional flags to pass to certbot
funkwhale_letsencrypt_enabled true If true, will configure SSL with certbot and Let's Encrypt
funkwhale_media_path /srv/funkwhale/data/media Path were audio and uploaded files should be stored (no trailing slash)
funkwhale_music_path /srv/funkwhale/data/music Path to your existing music library, to use with CLI import (no trailing slash)
funkwhale_nginx_managed true If true, will install and configure nginx
funkwhale_nginx_max_body_size 100M Value of nginx's max_body_size parameter to use
funkwhale_protocol https If set to https, will configure Funkwhale and Nginx to work behind HTTPS. Use http to completely disable SSL.
funkwhale_redis_managed true If true, will install and configure redis
funkwhale_ssl_cert_path `` Path to an existing SSL certificate to use (use in combination with funkwhale_letsencrypt_enabled: false)
funkwhale_ssl_key_path `` Path to an existing SSL key to use (use in combination with funkwhale_letsencrypt_enabled: false)
funkwhale_static_path /srv/funkwhale/data/static Path were Funkwhale static files should be stored
funkwhale_systemd_after redis.service postgresql.service Configuration used for Systemd After= directive. Modify it if you have a database or redis server on a separate host
funkwhale_systemd_service_name funkwhale Name of the generated Systemd service, e.g when calling systemctl start <xxx>
funkwhale_username funkwhale Username of the system user and owner of Funkwhale data, files and configuration

Supported platforms

  • Debian 9
  • More to come

Dependencies

This roles has no other dependencies.

License

AGPL3

Author Information

Contact us at https://funkwhale.audio/community/