diff options
| author | Kumar <kumar@kumardamani.xyz> | 2021-11-23 14:59:08 +0000 |
|---|---|---|
| committer | Kumar Damani <me@kumardamani.net> | 2022-03-25 19:45:25 +0000 |
| commit | a857eb82ec9c4a79ad5e41462e2ab82c2660982e (patch) | |
| tree | 9ca51ddfb551322bd4d2fa3f949fa8898032632d /roles/navidrome | |
initial commit
Diffstat (limited to 'roles/navidrome')
| -rw-r--r-- | roles/navidrome/README.md | 31 | ||||
| -rw-r--r-- | roles/navidrome/defaults/main.yaml | 6 | ||||
| -rw-r--r-- | roles/navidrome/handlers/main.yaml | 7 | ||||
| -rw-r--r-- | roles/navidrome/tasks/main.yaml | 34 | ||||
| -rw-r--r-- | roles/navidrome/templates/docker-compose.yaml.j2 | 18 |
5 files changed, 96 insertions, 0 deletions
diff --git a/roles/navidrome/README.md b/roles/navidrome/README.md new file mode 100644 index 0000000..755d428 --- /dev/null +++ b/roles/navidrome/README.md @@ -0,0 +1,31 @@ +# Ansible - Navidrome + +## Example Playbook +``` +# Access: http://art-jr:4533/music/ +# Domain Access: http://kumardamani.xyz/music +# Create login from GUI +- hosts: compute + gather_facts: false + tags: 'navidrome' + become: true + roles: + - role: navidrome + vars: + navidrome_domain: 'kumardamani.xyz' + navidrome_data_root: '{{ data_vol_ssd }}/music' +``` + +## Nginx Conf +``` + location /music/ { + proxy_pass http://127.0.0.1:4533/music/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Protocol $scheme; + proxy_set_header X-Forwarded-Host $http_host; + proxy_buffering off; + } +``` diff --git a/roles/navidrome/defaults/main.yaml b/roles/navidrome/defaults/main.yaml new file mode 100644 index 0000000..a7c9858 --- /dev/null +++ b/roles/navidrome/defaults/main.yaml @@ -0,0 +1,6 @@ +# Default Values +--- + +navidrome_home_root: '/opt/navidrome' +navidrome_home_db: '/opt/navidrome/db' +navidrome_data_root: '' diff --git a/roles/navidrome/handlers/main.yaml b/roles/navidrome/handlers/main.yaml new file mode 100644 index 0000000..7613b54 --- /dev/null +++ b/roles/navidrome/handlers/main.yaml @@ -0,0 +1,7 @@ +--- + +- name: 'Restart nginx' + systemd: + name: 'nginx' + state: 'restarted' + listen: 'nginx_restart' diff --git a/roles/navidrome/tasks/main.yaml b/roles/navidrome/tasks/main.yaml new file mode 100644 index 0000000..72982c2 --- /dev/null +++ b/roles/navidrome/tasks/main.yaml @@ -0,0 +1,34 @@ +# https://www.navidrome.org/docs/installation/docker/ +--- + +- name: 'Ensure required vars exist' + assert: + that: item | mandatory + loop: + - '{{ navidrome_data_root }}' + no_log: true + +- name: 'Ensure Navidrome dirs exists' + file: + path: '{{ item }}' + state: 'directory' + owner: '{{ ansible_user }}' + group: '{{ ansible_user }}' + mode: '755' + loop: + - '{{ navidrome_home_root }}' + - '{{ navidrome_home_db }}' + - '{{ navidrome_data_root }}' + +- name: 'Copy Navidrome docker compose config to home dir' + become_user: '{{ ansible_user }}' + template: + dest: '{{ navidrome_home_root }}/docker-compose.yaml' + src: 'docker-compose.yaml.j2' + mode: '644' + +- name: 'Create and start services' + become_user: '{{ ansible_user }}' + community.docker.docker_compose: + project_src: '{{ navidrome_home_root }}' + state: 'present' diff --git a/roles/navidrome/templates/docker-compose.yaml.j2 b/roles/navidrome/templates/docker-compose.yaml.j2 new file mode 100644 index 0000000..cc9cf59 --- /dev/null +++ b/roles/navidrome/templates/docker-compose.yaml.j2 @@ -0,0 +1,18 @@ +version: "3" +services: + navidrome: + image: deluan/navidrome:latest + user: 1000:1000 + ports: + - "4533:4533" + restart: unless-stopped + environment: + # Optional: put your config options customization here. Examples: + ND_SCANSCHEDULE: 1h + ND_LOGLEVEL: info + ND_SESSIONTIMEOUT: 24h + ND_BASEURL: "/music" + volumes: + - "{{ navidrome_home_db }}:/data" + - "{{ navidrome_data_root }}:/music:ro" + |
