Compare commits

...

15 Commits

Author SHA1 Message Date
Mike Wilson
9ef90db07b Add tor and bitcoin-daemon steps 2025-09-05 17:03:39 -04:00
Mike Wilson
458506e798 Add step to enable ufw rules 2025-09-05 16:11:25 -04:00
Mike Wilson
874c759f85 Add UFW task 2025-09-05 15:54:07 -04:00
Mike Wilson
237b07e76c Switch from overseerr to jellyseerr 2025-09-03 11:37:21 -04:00
Mike Wilson
3d5a5afe8d Add Upload.cx tracker 2025-09-03 11:36:46 -04:00
Mike Wilson
53007a1c1b Add seedpool tag to qbitmanage 2025-08-21 15:25:35 -04:00
Mike Wilson
d9db074e62 Add SDTV quality to Sonarr Old profiles 2025-08-21 15:23:49 -04:00
Mike Wilson
84549cb8d1 Add archlinux tag to qbm 2025-08-21 15:23:23 -04:00
Mike Wilson
b3129bcb53 Add seedpool to cross-seed 2025-08-21 15:23:00 -04:00
Mike Wilson
3451147e66 Update qbittorrent from 5.1.0 to 5.1.2 2025-07-30 12:07:28 -04:00
Mike Wilson
f26e1c518b Add soularr 2025-06-27 15:26:23 -04:00
Mike Wilson
c1ae312ea3 Lidarr arr-scripts configuration 2025-06-27 13:39:46 -04:00
Mike Wilson
260a40ceb2 Remove deprecated docker compose version attribute 2025-06-27 11:33:57 -04:00
Mike Wilson
9923a6a9e8 Remove FreeLeech CF since it was causing duplicate downloads 2025-06-27 11:33:57 -04:00
Mike Wilson
8b9577920a Beets changes 2025-06-27 11:33:57 -04:00
62 changed files with 366 additions and 111 deletions

View File

@@ -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

View File

@@ -1,37 +1,3 @@
- hosts: pve-docker
roles:
- pve-docker
- docker-compose
- traefik
- tautulli
- searxng
- prowlarr
- sonarr
- radarr
- firefly3
- overseerr
- ntfy
- gluetun
- autobrr
- name: qbittorrent
tags: test
- nextcloud
- redlib
- readarr
- calibre
- calibre-web
- deemix
- barassistant
- mealie
- recyclarr
- firefly3
- sabnzbd
- unifi-controller
- slskd
- navidrome
- lidarr
- lubelogger
- searxng
- synapse
- rimgo
- gitea
- qbittorrent

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,42 +1,37 @@
plugins: fetchart embedart scrub replaygain lastgenre chroma web inline
directory: /music
library: /config/musiclibrary.blb
art_filename: cover
threaded: yes
original_date: no
per_disc_numbering: yes
plugins: fetchart web inline lyrics
paths:
default: $albumartist/$album%aunique{}/%if{$multidisc,$disc}$track - $title
singleton: Non-Album/$artist - $title
comp: Various Artists/$album%aunique{}/%if{$multidisc,$disc}$track - $title
albumtype_soundtrack: Soundtracks/$album/$track $title
item_fields:
multidisc: 1 if disctotal > 1 else 0 # Makes it so track number is preceded by disc number only if album contains multiple discs
import:
write: yes
copy: no
move: yes
hardlink: yes
resume: ask
incremental: yes
quiet_fallback: skip
timid: no
log: /config/beet.log
languages: "en jp es"
lastgenre:
auto: yes
source: album
asciify_paths: yes
embedart:
auto: yes
fetchart:
auto: yes
replaygain:
auto: no
high_resolution: yes
lyrics:
sources: [lrclib, genius]
scrub:
auto: yes

View File

@@ -1,5 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:
external: true

View File

@@ -0,0 +1,11 @@
- name: Install bitcoin daemon
ansible.builtin.package:
name: bitcoin-daemon
state: present
become: true
- name: Enable bitcoind
ansible.builtin.service:
name: bitcoind
state: started
enabled: yes

View File

@@ -0,0 +1,6 @@
- name: Install tor
ansible.builtin.package:
name: tor
state: present

View File

@@ -0,0 +1,32 @@
- name: Install Uncomplicated Firewall
ansible.builtin.package:
name: ufw
state: present
# UFW logging can full up the kernel (dmesg) and message logs
- name: Disable logging
community.general.ufw:
logging: 'off'
- name: Allow OpenSSH inbound
community.general.ufw:
rule: allow
name: OpenSSH # Uses standard profile located in /etc/ufw/applications.d
- name: Apply rate limiting to ssh inbound
community.general.ufw:
rule: limit
port: ssh
proto: tcp
- name: Enable ufw system service
ansible.builtin.service:
name: ufw
state: started
enabled: yes
# This is necessary in addition to enabling the system service
- name: Enable ufw rules
community.general.ufw:
state: enabled
policy: deny

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
firefly_iii:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,10 +1,3 @@
- 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 }}"

View File

@@ -1,5 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:
external: true
@@ -7,16 +5,21 @@ networks:
services:
{{ role_name }}:
container_name: "{{ role_name }}"
image: lscr.io/linuxserver/overseerr:latest
image: fallenbagel/jellyseerr:latest
restart: unless-stopped
networks:
- traefik
environment:
- "PUID={{ service_user.uid }}"
- "PGID={{ service_user.uid }}"
- LOG_LEVEL=debug
- "TZ={{ timezone }}"
volumes:
- "{{ data_dir }}/{{ role_name }}:/config"
- "{{ data_dir }}/{{ role_name }}:/app/config"
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
start_period: 20s
timeout: 3s
interval: 15s
retries: 3
labels:
traefik.enable: true
traefik.http.routers.{{ role_name }}.rule: "Host(`requests.{{ personal_domain }}`)"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/with-contenv bash
set -euo pipefail
curl -sfL https://raw.githubusercontent.com/RandomNinjaAtk/arr-scripts/main/lidarr/setup.bash | bash
exit

View File

@@ -24,6 +24,32 @@
validate: docker compose -f %s config
become: true
- name: Create data directory
ansible.builtin.file:
path: "{{ data_dir }}/{{ item }}"
state: directory
owner: "{{ service_user.uid }}"
group: "{{ primary_gid }}"
mode: "{{ docker_compose_directory_mask }}"
become: true
loop:
- "{{ role_name }}/config"
- "{{ role_name }}/custom-services"
- "{{ role_name }}/custom-cont"
- name: Copy arr-scripts init script
ansible.builtin.copy:
src: "scripts_init.bash"
dest: "{{ data_dir }}/{{ role_name }}/custom-cont"
owner: "{{ service_user.uid }}"
mode: 0564
become: true
- name: Copy extended.conf
ansible.builtin.template:
src: "extended.conf"
dest: "{{ data_dir }}/{{ role_name }}/config"
- name: Start docker container
community.docker.docker_compose_v2:
project_src: "{{ install_directory }}/{{ role_name }}"

View File

@@ -1,5 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:
external: true
@@ -17,8 +15,11 @@ services:
- "TZ={{ timezone }}"
- "UMASK=002"
volumes:
- "{{ data_dir }}/{{ role_name }}:/config"
- "{{ data_dir }}/{{ role_name }}/config:/config"
- "{{ media_storage_mnt }}/data:/data"
# arr-scripts - https://github.com/RandomNinjaAtk/arr-scripts/blob/main/lidarr/readme.md
- "{{ data_dir }}/{{ role_name }}/custom-services:/custom-services.d"
- "{{ data_dir }}/{{ role_name }}/custom-cont:/custom-cont-init.d"
labels:
traefik.enable: true
traefik.http.routers.{{ role_name }}.rule: "Host(`{{ role_name }}.local.{{ personal_domain }}`)"

View File

@@ -0,0 +1,89 @@
##### LIDARR EXTENDED SCRIPTS SETTINGS #####
##### PATHS
downloadPath="/config/extended/downloads" # OPTIONAL, only change if needed.... Temporary Download Location for incoming Audio files from included clients
importPath="/config/extended/import" # OPTIONAL, only change if needed.... Completed downloads are stored here for the Usenet Blackhole client to import from. When Using queue cleaner, failed imports will be automatically cleaned up.
videoPath="" # Final destination/location of completed Videos
##### SCRIPT ENABLEMENT
enableAutoConfig="true" # true = enabled :: Automatically configures Lidarr with optimal settings
enableAudio="true" # true = enabled :: Enables the Audio script to run automatically
enableVideo="false" # true = enabled :: Enables the Video script to run automatically
enableUnmappedFilesCleaner="false" # true = enabled :: Enables the UnmappedFilesCleaner script to run automatically
enableQueueCleaner="true" # true = enabled :: Enables the QueueCleaner script to run automatically
##### SCRIPT INTERVALS
audioScriptInterval=15m #s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when script is enabled
videoScriptInterval=15m #s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when script is enabled
autoArtistAdderInterval=12h #s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when script is enabled
unmappedFolderCleanerScriptInterval=15m #s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when script is enabled
queueCleanerScriptInterval=15m #s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when script is enabled
##### AUTOCONFIG SCRIPT SETTINGS
configureMediaManagement="true" # Configures Lidarr Media Management Settings
configureMetadataConsumerSettings="false" # Configures Lidarr Metadata Consumer Settings
configureMetadataProviderSettings="false" # Configures Lidarr Metadata Provider Settings
configureCustomScripts="true" # Adds custom scripts to Lidarr
configureLidarrUiSettings="true" # Configures Lidarr UI Settings
configureMetadataProfileSettings="false" # Configures Lidarr Metadata Profile Settings
configureTrackNamingSettings="true" # Configures Lidarr Track Naming Settings
##### AUDIO SCRIPT
# SEARCH
searchSort="date" # date or album :: Sorts the missing/cutoff list by release date (newest -> oldest) or album type (album -> single) for processing the list
matchDistance="3" # The number of changes required to transform the searched album title into a possible found album title match... (0, requires a perfect match)
lidarrSearchForMissing="false" # true = enabled :: When artists are added, search for them using Lidarr's built in functionality
retryNotFound="90" ## :: Number of days between re-attempting the download of previously notfound albums
ignoreInstrumentalRelease="false" # true = enabled :: Skips albums releases that have the word "instrumental" in either the title or disambiguation
preferSpecialEditions="true" # true = enabled :: This changes the release title sort order, when true, it will search for releases with longest release names first, which are more likely to be deluxe/special versions...
# CLIENT
dlClientSource="deezer" # deezer, tidal or both :: set to both, to use both clients, tidal requires extra steps, view logging output
arlToken="{{ deezer_arl }}" # OPTIONAL (fallback using Freyr) - User ARL token for deemix client
tidalCountryCode="US" # Country Code required for tidal
failedDownloadAttemptThreshold="6" # Maximum number of attempts to download a particular album ID from the service before considering it a failed download...
deezerClientTestDownloadId="197472472" # A known good deezer track id that is used to test/verify the client is functioning in the event all download attempts have failed. Prevents the script from exiting...
tidalClientTestDownloadId="166356219" # A known good tidal track id that is used to test/verify the client is functioning in the event all download attempts have failed. Prevents the script from exiting...
downloadClientTimeOut="10m" # 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days :: Kills freyr download client after the set timeout period, prevents lock ups...
# QUALITY
audioLyricType="both" # both or explicit or clean :: both, is explicit preferred matching, explicit is explicit releases only matching and clean is clean releases only matching
audioFormat="native" # native or alac or mp3 or aac or opus :: native is the native download client file type, selected by the matching audio bit-rate
audioBitrate="lossless" # master or lossless or high or low or ### :: master = MQA/lossless flac files, lossless = flac files, high = 320K, low = 128k/96k, ### = the output bit-rate of converted lossless files to selected audioFormat that is not native, example: 192...
requireQuality="true" # true = enabled :: Downloads will be checked for quality and require to have the requested file format & quality
# POST PROCESSING
enableBeetsTagging="true" # true = enabled :: Downloads will be processed and tagged by Beets
beetsMatchPercentage="90" # 1-100 :: Set this to the minimum percentage required for Beets to match the downloaded album to a musicbrainz release :: Lower percentage is less restrictive
enableReplaygainTags="true" # true = enabled :: Downloads will be tagged with ReplayGain Metadata
# ADD ARTIST AUTOMATION
addDeezerTopArtists="false" # true = enabled :: Enabling this will enable the extended script to automatically add artists that are on the Deezer Top Artist Chart to your existing Lidarr instance
addDeezerTopAlbumArtists="false" # true = enabled :: Enabling this will enable the extended script to automatically add artists that are on the Deezer Top Album Chart to your existing Lidarr instance
addDeezerTopTrackArtists="false" # true = enabled :: Enabling this will enable the extended script to automatically add artists that are on the Deezer Top Track Chart to your existing Lidarr instance
topLimit="3" # This setting controls the amount of Top Artist (Albums/Tracks/Artists) to add to Lidarr from Deezer
addRelatedArtists="false" # true = enabled :: WARNING !!! WARNING !!! Enabling this can cause an endless loop of additional artists.... Enabling this will enable the extended script to automatically add artists that are related to your existing Lidarr artists from Tidal & Deezer
numberOfRelatedArtistsToAddPerArtist="1" # 1-20 :: This will limit the number of related artists to add per artist in your library :: Minimum is 1, Maximum is 20
autoArtistAdderMonitored="true" # true or false :: If true, artists that are added automatically are monitored, when false they are added in an unmonitored state
preventRelatedArtistsLoop="true" # true = enabled :: This will prevent added related artists from adding additional related artists, thus killing an endless loop. This works by using the Lidarr's tag system (arr-extended), Remove tag from artist to allow it to be proessed for related artists...
##### VIDEO SCRIPT
addFeaturedVideoArtists="false" # true = enabled :: WARNING !!! WARNING !!! Enabling this can cause an endless loop of additional artists.... Enabling this will enable the extended Video script to automatically add Music Video Featured Artists to your existing Lidarr artists from IMVDB
videoFormat="bv[width>=1920]+ba" # ONLY CHANGE if you know what your doing, for guidence, please see yt-dlp documentation.
videoInfoJson="false" # true = enabled :: Stores yt-dlp info-json files alongside video files.
youtubeSubtitleLanguage="en" # Desired Language Code :: For guidence, please see yt-dlp documentation.
disableImvd="false" # true = enabled :: Use this to disable IMVDB as a source, will result in only tidal videos
##### DEEZER ARLCHECKER
arlUpdateInterval="24h" # Interval to check ARL Validity (default 24 hours). Reboot container after changing. s = seconds, m = minutes, h = hours, d = days
telegramBotEnable="false" # Enable/Disable Telegram Bot to notify if ARL expires. Otherwise check text file in custom-services.d/python for status.
telegramBotToken="" # Get token from BotFather during bot creation. If you use a notify channel for Lidarr, you can probably use the same bot, as this script only takes temporary control.
telegramUserChatID="" # Get your userid by chatting: t.me/userinfobot
pushoverEnable="false" # Pushover Notification Support
pushoverUserKey=""
pushoverAppAPIKey=""
ntfyEnable="false" # ntfy Notification Support
ntfyServerTopic="" # Put your server + topic address ex: https://ntfy.mydomain.com/lidarr
ntfyUserToken="" # create a new user token using the ntfy cli commands. See ntfy documentation on how to do that.

View File

@@ -0,0 +1,17 @@
deezer_arl: !vault |
$ANSIBLE_VAULT;1.1;AES256
30376434343866323037636662633839313731316533636463383031353462346337626337376563
3334356436383831353265663266666631356131386139310a333066363932643363386139396437
62333561623365336163663062663035383335336465333031306165633539343663333462313362
6634396266386466340a336162626636633531363738353561363030316133386163316135613538
64326563336665333566616163366263663763313764613636643931393862333166333332323139
65653234663836346538636264613637346662636566666364393165313863333939326538663632
38363438356234363639373162633762383139373838376137366333663166326165616663393039
34343863666163393164653937663931626434626562306333313665306332313865636462613030
36343930323861366235636535646662643561666663656165303031346631396239623531386365
39633063363934316637663139396461326533626362363730613562306163663163306665623233
38323763653064303631303566653736333237643031626266343036333938636635653132636661
64636438653933363335343431383162366636393834396639363266653963316431333138353638
61656535363734303139323964303336353032663635366131313866373033666662393130393132
3637393263373761646366376532613761613039633465633432

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,4 @@
- name: restart qbittorrent
community.docker.docker_compose_v2:
project_src: "{{ install_directory }}/qbittorrent"
restarted: true
state: restarted

View File

@@ -13,6 +13,8 @@ module.exports = {
"http://prowlarr.local.{{ personal_domain }}/16/api?apikey={{ prowlarr_api_key }}", // AlphaRatio
"http://prowlarr.local.{{ personal_domain }}/17/api?apikey={{ prowlarr_api_key }}", // FileList
"http://prowlarr.local.{{ personal_domain }}/19/api?apikey={{ prowlarr_api_key }}", // Cathode-Ray.Tube
"http://prowlarr.local.{{ personal_domain }}/25/api?apikey={{ prowlarr_api_key }}", // seedpool
"http://prowlarr.local.{{ personal_domain }}/27/api?apikey={{ prowlarr_api_key }}", // Upload.cx
],
outputDir: null,

View File

@@ -1,5 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
starr:
external: true
@@ -7,7 +5,7 @@ networks:
services:
qbittorrent:
container_name: qbittorrent
image: lscr.io/linuxserver/qbittorrent:5.1.0
image: lscr.io/linuxserver/qbittorrent:5.1.2
restart: unless-stopped
network_mode: "container:gluetun"
environment:

View File

@@ -77,6 +77,14 @@ tracker:
tag: CRT
t-ru.org:
tag: rutracker
seedpool|seedpool.org:
tag: seedpool
upload.cx:
tag: ULCX
archlinux:
tag: archlinux
other:
tag: other
nohardlinks:
- movies
@@ -94,6 +102,13 @@ share_limits:
max_seeding_time: 28800 # 20 days
cleanup: true
add_group_to_tag: false
isos:
priority: 8
include_any_tags:
- archlinux
max_seeding_time: 129600 # 90 days
cleanup: true
add_group_to_tag: false
tl_cross-seed:
priority: 9
include_all_tags:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -17,7 +17,6 @@ custom_formats:
- ec8fa7296b64e8cd390a1600981f3923 # Repack/Proper
- eb3d5cc0a2be0db205fb823640db6a3c # Repack v2
- 44e7c4de10ae50265753082e5dc76047 # Repack v3
- d7c747094a7c65f4c2de083c24899e8b # FreeLeech
- 026d5aadd1a6b4e550b134cb6c72b3ca # Uncensored
- 273bd326df95955e1b6c26527d1df89b # v1
- 228b8ee9aa0a609463efca874524a6b8 # v2

View File

@@ -19,7 +19,6 @@ custom_formats:
- eb3d5cc0a2be0db205fb823640db6a3c # Repack v2
- 44e7c4de10ae50265753082e5dc76047 # Repack v3
- b735f09d3c025cbb7d75a5d38325b73b # Remaster
- d7c747094a7c65f4c2de083c24899e8b # FreeLeech
- 3bc5f395426614e155e585a2f056cdf1 # Season Pack
# Streaming Services

View File

@@ -35,3 +35,4 @@ quality_profiles:
qualities:
- WEBDL-480p
- WEBRip-480p
- name: SDTV

View File

@@ -19,7 +19,6 @@ custom_formats:
- eb3d5cc0a2be0db205fb823640db6a3c # Repack v2
- 44e7c4de10ae50265753082e5dc76047 # Repack v3
- b735f09d3c025cbb7d75a5d38325b73b # Remaster
- d7c747094a7c65f4c2de083c24899e8b # FreeLeech
- 3bc5f395426614e155e585a2f056cdf1 # Season Pack
# Streaming Services

View File

@@ -35,3 +35,4 @@ quality_profiles:
qualities:
- WEBDL-480p
- WEBRip-480p
- name: SDTV

View File

@@ -19,7 +19,6 @@ custom_formats:
- eb3d5cc0a2be0db205fb823640db6a3c # Repack v2
- 44e7c4de10ae50265753082e5dc76047 # Repack v3
- b735f09d3c025cbb7d75a5d38325b73b # Remaster
- d7c747094a7c65f4c2de083c24899e8b # FreeLeech
- 3bc5f395426614e155e585a2f056cdf1 # Season Pack
# Streaming Services

View File

@@ -19,7 +19,6 @@ custom_formats:
- eb3d5cc0a2be0db205fb823640db6a3c # Repack v2
- 44e7c4de10ae50265753082e5dc76047 # Repack v3
- b735f09d3c025cbb7d75a5d38325b73b # Remaster
- d7c747094a7c65f4c2de083c24899e8b # FreeLeech
- 3bc5f395426614e155e585a2f056cdf1 # Season Pack
# Streaming Services

View File

@@ -19,7 +19,6 @@ custom_formats:
- eb3d5cc0a2be0db205fb823640db6a3c # Repack v2
- 44e7c4de10ae50265753082e5dc76047 # Repack v3
- b735f09d3c025cbb7d75a5d38325b73b # Remaster
- d7c747094a7c65f4c2de083c24899e8b # FreeLeech
- 3bc5f395426614e155e585a2f056cdf1 # Season Pack
# Streaming Services

View File

@@ -19,7 +19,6 @@ custom_formats:
- eb3d5cc0a2be0db205fb823640db6a3c # Repack v2
- 44e7c4de10ae50265753082e5dc76047 # Repack v3
- b735f09d3c025cbb7d75a5d38325b73b # Remaster
- d7c747094a7c65f4c2de083c24899e8b # FreeLeech
- 3bc5f395426614e155e585a2f056cdf1 # Season Pack
# Streaming Services

View File

@@ -1,4 +1,4 @@
- name: restart recyclarr
community.docker.docker_compose_v2:
project_src: "{{ install_directory }}/{{ role_name }}"
restarted: true
state: restarted

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
starr:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
docker-socket-proxy:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,4 @@
- name: restart service
community.docker.docker_compose_v2:
project_src: "{{ install_directory }}/{{ role_name }}"
restarted: true
state: restarted

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
services:
slskd:
@@ -9,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

View File

@@ -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

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -0,0 +1,4 @@
- name: restart service
community.docker.docker_compose_v2:
project_src: "{{ install_directory }}/{{ role_name }}"
state: restarted

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik:

View File

@@ -1,4 +1,3 @@
version: "{{ docker_compose_version }}"
networks:
traefik: