diff --git a/ansible/host_vars/pve-docker/main.yml b/ansible/host_vars/pve-docker/main.yml index 9933440..87079f4 100644 --- a/ansible/host_vars/pve-docker/main.yml +++ b/ansible/host_vars/pve-docker/main.yml @@ -7,6 +7,7 @@ docker_compose_directory_mask: 0775 docker_compose_file_mask: 0664 install_directory: /srv +vpn_listen_port: 61383 sonarr_api_key: !vault | $ANSIBLE_VAULT;1.1;AES256 @@ -26,4 +27,26 @@ radarr_api_key: !vault | 66613735373430636437343135303238663534316632363534323130313934306536633862303632 6431656565666466303837336430613062346331646432306164 -vpn_listen_port: 61383 +slskd_api_key: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 39666166376666636338643866636262356665363135386336343030326539363163333963626163 + 6666313861613930663433623933343439366562356563340a663639363566336435376436303762 + 65613536356139356364653432643736366436333139666165383736323834656130393036306339 + 3065646663366136320a383936643239343039656334336236623232313035633664303434383030 + 66626663303961333936306661623339333634653433633035633734373261366231333365383062 + 33633863366639326236373234326264616136656463353164353730376366373939643061306239 + 36353234333363386563643066313861343633376236333162313737366536613066303633363566 + 36633636653261343431356230666234626162333630333536633233313036326661373836333766 + 39343331396465323261393563306631666632343330306637636365373963613430633236656539 + 63663665386334306235336262656438396336633037363534666438373534623333333061646130 + 653230663539386239396337306130373531 + +lidarr_api_key: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 64336163343037336539353364636235383462643538396534636630323266333730353636366235 + 3938396634613464613639356466616365353738633433320a323333333339316332613266373939 + 33613133653436316230623634323066383535653961386465643334396166353064666135343030 + 3638613966616630390a613261336531343934393634316263303632353038643634663236666162 + 62653835383739653661363962303862613338333865363430383335643635353037656537323034 + 6164633230363736306565646233333466313362653738303065 + diff --git a/ansible/main.yml b/ansible/main.yml index 8576b16..75727ce 100644 --- a/ansible/main.yml +++ b/ansible/main.yml @@ -13,7 +13,9 @@ - ntfy - gluetun - autobrr - - name: lidarr + - name: slskd + tags: test + - name: soularr tags: test - beets - qbittorrent @@ -29,7 +31,7 @@ - firefly3 - sabnzbd - unifi-controller - - slskd + - lidarr - navidrome - recyclarr - lubelogger diff --git a/ansible/roles/slskd/handlers/main.yml b/ansible/roles/slskd/handlers/main.yml index 65c1f5f..680218b 100644 --- a/ansible/roles/slskd/handlers/main.yml +++ b/ansible/roles/slskd/handlers/main.yml @@ -1,4 +1,4 @@ - name: restart service community.docker.docker_compose_v2: project_src: "{{ install_directory }}/{{ role_name }}" - restarted: true + state: restarted diff --git a/ansible/roles/slskd/templates/docker-compose.yml b/ansible/roles/slskd/templates/docker-compose.yml index f81cbf1..bc6193e 100644 --- a/ansible/roles/slskd/templates/docker-compose.yml +++ b/ansible/roles/slskd/templates/docker-compose.yml @@ -8,7 +8,7 @@ services: user: "{{ service_user.uid }}:{{ media_gid }}" volumes: - "{{ data_dir }}/{{ role_name }}:/app" - - "{{ media_storage_mnt }}/data/import/music/soulseek:/downloads" + - "{{ media_storage_mnt }}/data/ddl/soulseek:/downloads" - "{{ media_storage_mnt }}/data/media/music:/music:ro" labels: traefik.enable: true diff --git a/ansible/roles/slskd/templates/slskd.yml b/ansible/roles/slskd/templates/slskd.yml index bf13673..4403930 100644 --- a/ansible/roles/slskd/templates/slskd.yml +++ b/ansible/roles/slskd/templates/slskd.yml @@ -1,5 +1,5 @@ # debug: false -remote_configuration: true +remote_configuration: false directories: downloads: /downloads @@ -34,3 +34,8 @@ web: port: 5030 url_base: / logging: false + authentication: + api_keys: + my_api_key: + key: "{{ slskd_api_key }}" + #cidr: 10.0.0.0/24,172.16.0.0/12 diff --git a/ansible/roles/soularr/handlers/main.yml b/ansible/roles/soularr/handlers/main.yml new file mode 100644 index 0000000..680218b --- /dev/null +++ b/ansible/roles/soularr/handlers/main.yml @@ -0,0 +1,4 @@ +- name: restart service + community.docker.docker_compose_v2: + project_src: "{{ install_directory }}/{{ role_name }}" + state: restarted diff --git a/ansible/roles/soularr/tasks/main.yml b/ansible/roles/soularr/tasks/main.yml new file mode 100644 index 0000000..4cc8bb7 --- /dev/null +++ b/ansible/roles/soularr/tasks/main.yml @@ -0,0 +1,44 @@ +- name: Create service user + user: + name: "{{ role_name }}" + system: true + register: service_user + become: true + +- name: Create install directory + file: + path: "{{ install_directory }}/{{ role_name }}" + state: directory + owner: "{{ docker_user }}" + mode: "{{ docker_compose_directory_mask }}" + become: true + +- name: Create config directory + file: + path: "{{ data_dir }}/{{ role_name }}" + state: directory + owner: "{{ service_user.uid }}" + group: "{{ media_gid }}" + mode: "{{ docker_compose_directory_mask }}" + become: true + +- name: Copy docker-compose file to destination + template: + src: docker-compose.yml + dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml" + owner: "{{ docker_user }}" + mode: "{{ docker_compose_file_mask }}" + validate: docker compose -f %s config + become: true + +- name: Install config.ini + ansible.builtin.template: + src: config.ini + dest: "{{ data_dir }}/{{ role_name }}/config.ini" + notify: restart service + +- name: Start docker container + community.docker.docker_compose_v2: + project_src: "{{ install_directory }}/{{ role_name }}" + pull: always + remove_orphans: yes diff --git a/ansible/roles/soularr/templates/config.ini b/ansible/roles/soularr/templates/config.ini new file mode 100644 index 0000000..5c0eeb7 --- /dev/null +++ b/ansible/roles/soularr/templates/config.ini @@ -0,0 +1,44 @@ +[Lidarr] +api_key = {{ lidarr_api_key }} +host_url = https://lidarr.local.{{ personal_domain }} +# This is the soulseek downloads directory as lidarr sees it +download_dir = /data/ddl/soulseek +disable_sync = False + +[Slskd] +api_key = {{ slskd_api_key }} +host_url = https://soulseek.local.{{ personal_domain }} +url_base = / +download_dir = /downloads +delete_searches = False +stalled_timeout = 3600 + +[Release Settings] +use_most_common_tracknum = True +allow_multi_disc = True +accepted_countries = Europe,Japan,United Kingdom,United States,[Worldwide],Australia,Canada +skip_region_check = False +accepted_formats = CD,Digital Media,Vinyl + +[Search Settings] +search_timeout = 5000 +maximum_peer_queue = 50 +minimum_peer_upload_speed = 0 +minimum_filename_match_ratio = 0.8 +allowed_filetypes = flac 24/192,flac 16/44.1,flac +ignored_users = User1,User2,Fred,Bob +search_for_tracks = True +album_prepend_artist = False +track_prepend_artist = True +search_type = incrementing_page +number_of_albums_to_grab = 10 +remove_wanted_on_failure = False +title_blacklist = BlacklistWord1,blacklistword2 +search_source = missing + +[Logging] +level = INFO +# https://docs.python.org/3/library/logging.html#logrecord-attributes +format = [%(levelname)s|%(module)s|L%(lineno)d] %(asctime)s: %(message)s +# https://docs.python.org/3/library/time.html#time.strftime +datefmt = %Y-%m-%dT%H:%M:%S%z diff --git a/ansible/roles/soularr/templates/docker-compose.yml b/ansible/roles/soularr/templates/docker-compose.yml new file mode 100644 index 0000000..0d6a4c8 --- /dev/null +++ b/ansible/roles/soularr/templates/docker-compose.yml @@ -0,0 +1,11 @@ +services: + soularr: + container_name: "soularr" + image: mrusse08/soularr:latest + restart: unless-stopped + user: "{{ service_user.uid }}:{{ media_gid }}" + environment: + - "TZ={{ timezone }}" + volumes: + - "{{ data_dir }}/{{ role_name }}:/data" + - "{{ media_storage_mnt }}/data/ddl/soulseek:/downloads"