From 6fc30522d0be86ea3e172667f0d757c72ab0c3a0 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Mon, 23 Dec 2024 17:08:15 +0300 Subject: [PATCH] Add music app --- files/apps/music/docker-compose.yml | 20 +++++++++++ playbook-app-music.yml | 43 +++++++++++++++++++++++ roles/docker_rclone_plugin/tasks/main.yml | 2 +- templates/Caddyfile.j2 | 8 +++++ templates/env.j2 | 3 ++ vars/ports.yml | 1 + 6 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 files/apps/music/docker-compose.yml create mode 100644 playbook-app-music.yml create mode 100644 templates/env.j2 diff --git a/files/apps/music/docker-compose.yml b/files/apps/music/docker-compose.yml new file mode 100644 index 0000000..b930d39 --- /dev/null +++ b/files/apps/music/docker-compose.yml @@ -0,0 +1,20 @@ +services: + navidrome: + image: deluan/navidrome:0.54.2 + ports: + - "127.0.0.1:${WEB_SERVER_PORT}:4533" + restart: unless-stopped + environment: + ND_BASEURL: "https://music.vakhrushev.me" + ND_LOGLEVEL: "info" + ND_SCANSCHEDULE: "0" + ND_SESSIONTIMEOUT: "24h" + volumes: + - "./data:/data" + - "yandex-storage:/music:ro" + +volumes: + yandex-storage: + driver: "rclone" + driver_opts: + remote: "yandex-s3-music-encrypted:" diff --git a/playbook-app-music.yml b/playbook-app-music.yml new file mode 100644 index 0000000..466d363 --- /dev/null +++ b/playbook-app-music.yml @@ -0,0 +1,43 @@ +--- +- name: 'Configure music application' + hosts: all + + vars_files: + - vars/ports.yml + - vars/vars.yml + + vars: + base_dir: '/home/major/applications/music/' + + tasks: + + - name: 'Create application directories' + ansible.builtin.file: + path: '{{ item }}' + state: 'directory' + mode: '0755' + loop: + - '{{ base_dir }}' + - '{{ (base_dir, "data") | path_join }}' + + - name: 'Copy application files' + ansible.builtin.copy: + src: '{{ item }}' + dest: '{{ base_dir }}' + mode: '0644' + loop: + - './files/apps/music/docker-compose.yml' + + - name: 'Set up environment variables for application' + ansible.builtin.template: + src: 'env.j2' + dest: '{{ (base_dir, ".env") | path_join }}' + mode: '0644' + vars: + env_dict: + WEB_SERVER_PORT: '{{ navidrome_port }}' + + - name: 'Run application with docker compose' + community.docker.docker_compose_v2: + project_src: '{{ base_dir }}' + state: 'present' diff --git a/roles/docker_rclone_plugin/tasks/main.yml b/roles/docker_rclone_plugin/tasks/main.yml index 1433d92..386d9ec 100644 --- a/roles/docker_rclone_plugin/tasks/main.yml +++ b/roles/docker_rclone_plugin/tasks/main.yml @@ -12,7 +12,7 @@ community.docker.docker_plugin: plugin_name: 'rclone/docker-volume-rclone:amd64' alias: 'rclone' - state: 'present' + state: 'enable' plugin_options: args: '-v' diff --git a/templates/Caddyfile.j2 b/templates/Caddyfile.j2 index c21214d..6c6cba8 100644 --- a/templates/Caddyfile.j2 +++ b/templates/Caddyfile.j2 @@ -57,3 +57,11 @@ outline.vakhrushev.me { to 127.0.0.1:{{ outline_port }} } } + +music.vakhrushev.me { + tls anwinged@ya.ru + + reverse_proxy { + to 127.0.0.1:{{ navidrome_port }} + } +} diff --git a/templates/env.j2 b/templates/env.j2 new file mode 100644 index 0000000..ff0a495 --- /dev/null +++ b/templates/env.j2 @@ -0,0 +1,3 @@ +{% for name in env_dict.keys() | sort %} +{{ name }}={{ env_dict[name] }} +{% endfor %} diff --git a/vars/ports.yml b/vars/ports.yml index 664d88f..13d5217 100644 --- a/vars/ports.yml +++ b/vars/ports.yml @@ -10,3 +10,4 @@ nomie_db_port: "{{ base_port + 7 }}" gitea_port: "{{ base_port + 8 }}" keycloak_port: "{{ base_port + 9 }}" outline_port: "{{ base_port + 10 }}" +navidrome_port: "{{ base_port + 11 }}"