aboutsummaryrefslogtreecommitdiff
path: root/roles/navidrome
diff options
context:
space:
mode:
Diffstat (limited to 'roles/navidrome')
-rw-r--r--roles/navidrome/README.md31
-rw-r--r--roles/navidrome/defaults/main.yaml6
-rw-r--r--roles/navidrome/handlers/main.yaml7
-rw-r--r--roles/navidrome/tasks/main.yaml34
-rw-r--r--roles/navidrome/templates/docker-compose.yaml.j218
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"
+