diff --git a/ansible/host_vars/pve-docker/main.yml b/ansible/host_vars/pve-docker/main.yml index 3a634ff..9933440 100644 --- a/ansible/host_vars/pve-docker/main.yml +++ b/ansible/host_vars/pve-docker/main.yml @@ -26,3 +26,4 @@ radarr_api_key: !vault | 66613735373430636437343135303238663534316632363534323130313934306536633862303632 6431656565666466303837336430613062346331646432306164 +vpn_listen_port: 61383 diff --git a/ansible/main.yml b/ansible/main.yml index f0a836c..d06d952 100644 --- a/ansible/main.yml +++ b/ansible/main.yml @@ -23,3 +23,5 @@ tags: test - navidrome - webtrees + - name: slskd + tags: test diff --git a/ansible/roles/beets/templates/docker-compose.yml b/ansible/roles/beets/templates/docker-compose.yml index 8831199..8de3c77 100644 --- a/ansible/roles/beets/templates/docker-compose.yml +++ b/ansible/roles/beets/templates/docker-compose.yml @@ -18,6 +18,7 @@ services: volumes: - "{{ data_dir }}/{{ role_name }}:/config" - "{{ media_storage_mnt }}/data/media/music:/music" + - "{{ media_storage_mnt }}/data/import/music:/import" labels: traefik.enable: true traefik.http.routers.beets.rule: "Host(`beets.local.{{ personal_domain }}`)" diff --git a/ansible/roles/gluetun/templates/docker-compose.yml b/ansible/roles/gluetun/templates/docker-compose.yml index f555cc8..16b80fb 100644 --- a/ansible/roles/gluetun/templates/docker-compose.yml +++ b/ansible/roles/gluetun/templates/docker-compose.yml @@ -22,7 +22,7 @@ services: VPN_SERVICE_PROVIDER: mullvad WIREGUARD_PRIVATE_KEY: "{{ wireguard_private_key }}" WIREGUARD_ADDRESSES: "10.65.208.63/32" - FIREWALL_VPN_INPUT_PORTS: 61383 + FIREWALL_VPN_INPUT_PORTS: {{ vpn_listen_port }} SERVER_CITIES: "Chicago IL" DOT: "off" DNS_ADRESS: 10.64.0.1 diff --git a/ansible/roles/slskd/handlers/main.yml b/ansible/roles/slskd/handlers/main.yml new file mode 100644 index 0000000..4bbe7b8 --- /dev/null +++ b/ansible/roles/slskd/handlers/main.yml @@ -0,0 +1,4 @@ +- name: restart service + community.docker.docker_compose: + project_src: "{{ install_directory }}/{{ role_name }}" + restarted: true diff --git a/ansible/roles/slskd/tasks/main.yml b/ansible/roles/slskd/tasks/main.yml index 6a6ab04..be443dc 100644 --- a/ansible/roles/slskd/tasks/main.yml +++ b/ansible/roles/slskd/tasks/main.yml @@ -22,6 +22,14 @@ mode: "{{ docker_compose_directory_mask }}" become: true +- name: Copy config file to config directory + template: + src: slskd.yml + dest: "{{ data_dir }}/{{ role_name }}" + owner: "{{ service_user.uid }}" + become: true + notify: restart service + - name: Copy docker-compose file to destination template: src: docker-compose.yml diff --git a/ansible/roles/slskd/templates/docker-compose.yml b/ansible/roles/slskd/templates/docker-compose.yml index 6deff3f..4110fff 100644 --- a/ansible/roles/slskd/templates/docker-compose.yml +++ b/ansible/roles/slskd/templates/docker-compose.yml @@ -5,17 +5,14 @@ services: container_name: "slskd" image: slskd/slskd restart: unless-stopped - network_mode: container:gluetun + network_mode: "container:gluetun" user: "{{ service_user.uid }}:{{ media_gid }}" - environment: - - SLSKD_SHARED_DIR=/music - - SLSKD_REMOTE_CONFIGURATION=True - - SLSKD_DOWNLOADS_DIR=/downloads volumes: - "{{ data_dir }}/{{ role_name }}:/app" - - "{{ data_dir }}/{{ role_name }}/downloads:/downloads" + - "{{ media_storage_mnt }}/data/import/music/soulseek:/downloads" - "{{ media_storage_mnt }}/data/media/music:/music:ro" labels: traefik.enable: true traefik.http.routers.slskd.rule: "Host(`soulseek.local.{{ personal_domain }}`)" traefik.http.routers.slskd.middlewares: lan-whitelist@file + traefik.http.services.slskd.loadbalancer.server.port: 5030 diff --git a/ansible/roles/slskd/templates/slskd.yml b/ansible/roles/slskd/templates/slskd.yml new file mode 100644 index 0000000..bf13673 --- /dev/null +++ b/ansible/roles/slskd/templates/slskd.yml @@ -0,0 +1,36 @@ +# debug: false +remote_configuration: true + +directories: + downloads: /downloads +shares: + directories: + - '/music' + filters: + - \.ini$ + - Thumbs.db$ + - \.DS_Store$ + cache: + storage_mode: memory + +global: + upload: + slots: 20 + speed_limit: 1000 + download: + slots: 500 + +soulseek: + description: A slskd user. https://github.com/slskd/slskd + username: {{ soulseek_username }} + password: {{ soulseek_password }} + #listen_port: {{ vpn_listen_port }} + connection: + timeout: + connect: 10000 + inactivity: 15000 + +web: + port: 5030 + url_base: / + logging: false diff --git a/ansible/roles/slskd/vars/main.yml b/ansible/roles/slskd/vars/main.yml new file mode 100644 index 0000000..9cf5c3f --- /dev/null +++ b/ansible/roles/slskd/vars/main.yml @@ -0,0 +1,2 @@ +soulseek_username: mikewilzn +soulseek_password: humptydumpty