diff --git a/ansible/app-configs/sabnzbd_sabnzbd.ini.j2 b/ansible/app-configs/sabnzbd_sabnzbd.ini.j2 index 4c010cc3..f9e2f6e7 100644 --- a/ansible/app-configs/sabnzbd_sabnzbd.ini.j2 +++ b/ansible/app-configs/sabnzbd_sabnzbd.ini.j2 @@ -342,7 +342,7 @@ host = news.newshosting.com port = 563 timeout = 60 username = thetrezuredone -password = {{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['SLSKD_PASSWORD'] }} +password = {{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['SLSK_USER_PASSWORD'] }} connections = 8 ssl = 1 ssl_verify = 3 diff --git a/ansible/app-configs/soularr_config.ini.j2 b/ansible/app-configs/soularr_config.ini.j2 new file mode 100644 index 00000000..d2f72e8a --- /dev/null +++ b/ansible/app-configs/soularr_config.ini.j2 @@ -0,0 +1,73 @@ +[Lidarr] +api_key = {{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['LIDARR_API_KEY'] }} +host_url = http://lidarr:8686 +#This should be the path mounted in lidarr that points to your slskd download directory. +#If Lidarr is not running in Docker then this may just be the same dir as Slskd is using below. +download_dir = /storage + +[Slskd] +#Api key from Slskd. Need to set this up manually. See link to Slskd docs above. +api_key = {{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['SLSKD_API_KEY'] }} +host_url = http://gluetun:5030 +#Slskd download directory. Should have set it up when installing Slskd. +download_dir = /app/downloads +#Removes searches from Slskd after the search finishes. +delete_searches = False +#Maximum time (in seconds) that the script will wait for downloads to complete. +#This is used to prevent the script from running forever due to a stalled download. Defaults to 1 hour. +stalled_timeout = 3600 + +[Release Settings] +#Selects the release with the most common amount of tracks out of all the releases. +use_most_common_tracknum = True +allow_multi_disc = True +#See full list of countries below. +accepted_countries = Europe,Japan,United Kingdom,United States,[Worldwide],Australia,Canada +#See full list of formats below. +accepted_formats = CD,Digital Media,Vinyl + +[Search Settings] +search_timeout = 5000 +maximum_peer_queue = 50 +#Min upload speed in bit/s +minimum_peer_upload_speed = 0 +#Min match ratio accepted when comparing lidarr track names to soulseek filenames. +minimum_filename_match_ratio = 0.5 +#Specify the file types you prefer from most to least. As well as their attributes such as bitrate / samplerate / bitdepth. +#For flacs you can choose the bitdepth/samplerate. And for mp3s the bitrate. +#If you do not care about the specific quality you can still just put "flac" or "mp3". +#Soularr will then just look at the filetype and ignore file attributes. +allowed_filetypes = flac 24/192,flac 16/44.1,flac,mp3 320,mp3 +ignored_users = User1,User2,Fred,Bob +#Set to False if you only want to search for complete albums +search_for_tracks = True +#Set to True if you want to add the artist's name to the beginning of the search for albums +album_prepend_artist = False +track_prepend_artist = True +#Valid search types: all || incrementing_page || first_page + #"all" will search for every wanted record everytime soularr is run. + #"incrementing_page" will start with the first page and increment to the next on each run. + #"first_page" will repeatedly search the first page. +#If using the search type "first_page" remove_wanted_on_failure should be enabled. +search_type = incrementing_page +#How mancy records to grab each run, must be a number between 1 - 2,147,483,647 +number_of_albums_to_grab = 10 +#Unmonitors the album if Soularr can't find it and places it in "failure_list.txt". +#Failed albums can be re monitored by filtering "Unmonitored" in the Lidarr wanted list. +remove_wanted_on_failure = False +#Comma separated list of words that can't be in the title of albums or tracks. Case insensitive. +title_blacklist = BlacklistWord1,blacklistword2 +#Lidarr source to use for searching. Accepted values are "all", "missing", or "cutoff_unmet". If "all" is selected +# then both missing and cutoff_unme will be searched. The default value is "missing". +search_source = missing + +[Logging] +#These options are passed into the logger's basicConfig() method as-is. +#This means, if you're familiar with Python's logging module, you can configure +#the logger with options beyond what's listed here by default. +#For more information on available options -- https://docs.python.org/3/library/logging.html#logging.basicConfig +level = INFO +# Format of log message -- https://docs.python.org/3/library/logging.html#logrecord-attributes +format = [%(levelname)s|%(module)s|L%(lineno)d] %(asctime)s: %(message)s +# Format of datetimes -- https://docs.python.org/3/library/time.html#time.strftime +datefmt = %Y-%m-%dT%H:%M:%S%z \ No newline at end of file diff --git a/ansible/app-configs/soulseek_slskd.yml.j2 b/ansible/app-configs/soulseek_slskd.yml.j2 index 802fb1e1..7228204e 100644 --- a/ansible/app-configs/soulseek_slskd.yml.j2 +++ b/ansible/app-configs/soulseek_slskd.yml.j2 @@ -1,238 +1,212 @@ {% set vault_addr = 'https://vault.trez.wtf' %} {% set secrets_path = 'rinoa-docker/env' %} -# debug: false -# remote_configuration: false -# remote_file_management: false -# instance_name: default -# flags: -# no_logo: false -# no_start: false -# no_config_watch: false -# no_connect: false -# no_share_scan: false -# force_share_scan: false -# no_version_check: false -# log_sql: false -# experimental: false -# volatile: false -# case_sensitive_reg_ex: false -# legacy_windows_tcp_keepalive: false -# relay: -# enabled: false -# mode: controller # controller (default), agent, or debug (for local development) -# # controller config is required when running in 'agent' mode -# # this specifies the relay controller that will be controlling this agent -# controller: -# address: https://some.site.com:5000 -# ignore_certificate_errors: false -# api_key: -# secret: -# downloads: false -# # agent config is optional when running in 'controller' mode -# # this specifies all of the agents capable of connecting -# agents: -# my_agent: -# instance_name: my_agent # make sure the top-level instance_name of the agent matches! -# secret: -# cidr: 0.0.0.0/0,::/0 -# permissions: -# file: -# mode: ~ # not for Windows, chmod syntax, e.g. 644, 777. can't escalate beyond umask -# directories: -# incomplete: ~ -# downloads: ~ -# shares: -# directories: -# - ~ -# filters: -# - \.ini$ -# - Thumbs.db$ -# - \.DS_Store$ -# cache: -# storage_mode: memory -# workers: 16 -# retention: ~ # retain indefinitely (do not automatically re-scan) -# rooms: -# - ~ -# global: -# upload: -# slots: 20 -# speed_limit: 1000 # in kibibytes -# limits: -# queued: -# files: 500 -# megabytes: 5000 -# daily: -# files: 1000 -# megabytes: 10000 -# failures: 200 -# weekly: -# files: 5000 -# megabytes: 50000 -# failures: 1000 -# download: -# slots: 500 -# speed_limit: 1000 -# groups: -# default: -# upload: -# priority: 500 -# strategy: roundrobin -# slots: 10 -# limits: -# queued: -# files: 150 -# megabytes: 1500 -# daily: ~ # no daily limits (weekly still apply) -# weekly: -# files: 1500 -# megabytes: 15000 -# failures: 150 -# leechers: -# thresholds: -# files: 1 -# directories: 1 -# upload: -# priority: 999 -# strategy: roundrobin -# slots: 1 -# speed_limit: 100 -# limits: -# queued: -# files: 15 -# megabytes: 150 -# daily: -# files: 30 -# megabytes: 300 -# failures: 10 -# weekly: -# files: 150 -# megabytes: 1500 -# failures: 30 -# blacklisted: -# members: -# - -# cidrs: -# - -# user_defined: -# my_buddies: -# upload: -# priority: 250 -# strategy: firstinfirstout -# slots: 10 -# limits: -# queued: -# files: 1000 # override global default -# members: -# - alice -# - bob -# blacklist: -# enabled: true -# file: -# filters: -# search: -# request: -# - ^.{1,2}$ -# web: -# port: 5030 -# https: -# disabled: false -# port: 5031 -# force: false -# certificate: -# pfx: ~ -# password: ~ -# url_base: / -# content_path: wwwroot -# logging: false -# authentication: -# disabled: false -# username: slskd -# password: slskd -# jwt: -# key: ~ -# ttl: 604800000 -# api_keys: -# my_api_key: -# key: -# role: readonly # readonly, readwrite, administrator -# cidr: 0.0.0.0/0,::/0 -# retention: -# transfers: -# upload: -# succeeded: 1440 # 1 day -# errored: 30 -# cancelled: 5 -# download: -# succeeded: 1440 # 1 day -# errored: 20160 # 2 weeks -# cancelled: 5 -# files: -# complete: 20160 # 2 weeks -# incomplete: 43200 # 30 days -# logs: 259200 # 180 days -# logger: -# disk: false -# no_color: false -# loki: ~ -# metrics: -# enabled: false -# url: /metrics -# authentication: -# disabled: false -# username: slskd -# password: slskd -# feature: -# swagger: false -# soulseek: -# address: vps.slsknet.org -# port: 2271 -# username: ~ -# password: ~ -# description: | -# A slskd user. https://github.com/slskd/slskd -# listen_ip_address: 0.0.0.0 -# listen_port: 50300 -# diagnostic_level: Info -# distributed_network: -# disabled: false -# disable_children: false -# child_limit: 25 -# logging: false -# connection: -# timeout: -# connect: 10000 -# inactivity: 15000 -# buffer: -# read: 16384 -# write: 16384 -# transfer: 262144 -# write_queue: 250 -# proxy: -# enabled: false -# address: ~ -# port: ~ -# username: ~ -# password: ~ -# integration: -# ftp: -# enabled: false -# address: ~ -# port: ~ -# username: ~ -# password: ~ -# remote_path: / -# encryption_mode: auto -# ignore_certificate_errors: false -# overwrite_existing: true -# connection_timeout: 5000 -# retry_attempts: 3 -# pushbullet: -# enabled: false -# access_token: ~ -# notification_prefix: "From slskd:" -# notify_on_private_message: true -# notify_on_room_mention: true -# retry_attempts: 3 -# cooldown_time: 900000 +directories: + incomplete: /app/incomplete + downloads: /app/downloads +shares: + directories: + - /music +rooms: + - '! meow chat :3' + - '#ANUS' + - '#CORONAVIRUS' + - '#Horrorcore' + - '#La France' + - '#icilombre-hardcore' + - '#polska' + - '#vegan' + - $$RARE RAP MUSIC$$ + - ([6)] + - +Autism+ + - +BlackMetal+ + - +HIP_HOP_SCENE_RELEASES+ + - /mu/ + - 60lover + - 60lover v2 + - 70 Rare groove Soul Jazz + - 80's 12 Inches & More + - 90's Rare Riddim !! + - 90's emo + - <>Electronics Labels<> + - ACID + - ARGENTINA + - "ATLLUMINATI\u201Cawareness" + - AUSTRALIA + - Alcohol + - Ambient + - Anime + - Audiobooks + - Avantgarde + - BDSM + - BLUES BUNKER MUSIC + - BOB DYLAN ROOM + - BigEdsClassicRock + - BigedsSixties + - Blues&Soul + - Bootlegged concerts + - Brasil + - Breakcore + - CHILE + - Canada + - China Room + - Chiptunes + - Christians + - Classical + - Come To The Sabbath ! + - Communism + - DEATH METAL CLUB + - Dark Ambient + - De Koffie Shop + - De Kroeg + - Deathrock + - DieMilitarmusik + - Disco Classics + - Doom Metal + - Doujin Music + - Dub Techno + - Dubstep + - EBM-GOTHIC-INDUSTRIAL + - EBooks + - Emo + - Eurodance + - Eurovision Song Contest + - Experimental Electronica + - FOLK MUSIC + - Free Jazz + - Furry + - Gay + - Gothic + - Greece + - Grindcore + - HEE cum eaters 1! ! + - HOUSE MUSIC LOVERS (AG) + - Happy Hardcore + - Hardcore NL + - Hardcore/punk + - Hip Hop + - Horror movies + - IDM + - INDUSTRIAL + - IReGGaeGaLaXy + - Incredibly Strange Music + - Israel + - Jaz (Full CDs) + - Jazz + - Jazz-Rock-Fusion-Guitar + - Juggalo Family + - Jungle + - Korean Music + - LANGUAGE EXCHANGE here + - LGBTQ+!! + - Last.fm + - Linux + - Lossless Scores + - MOVIES + - Mac Users + - Metal + - MovieMusic + - NORWAY + - New Crystal Vibrations + - New Wave + - New Zealand + - OLD SKOOL GANGSTA SHIT + - OLDSCHOOL 88-94 + - OLI SHOTA CUB ROOM! + - Original Blues Bunker + - PSYCHEDELIA + - PUNK/HARDCORE/GRIND + - Portugal + - Post Punk + - Post-Hardcore (modern) + - Progressive Rock + - Psychedelic/Acid Rock + - Psytrance + - Quebec + - REGGAE + - Rare Music + - RareVHS/DVD/Rips + - Retro Gaming + - Romania + - Room Name + - SIsk Idiots !! + - SLUDGE! + - Slovenia + - Soundtracks&Scores + - Spain + - Stoner HiVe + - Stoner Rock + - Strange Music + - TECHNO, Mixes and Tunes + - THC + - Talia + - The Dangerous Kitchen + - TheScoreZone + - Thrash Metal + - Tinmans Movie Room + - Trip-Hop + - Ttalian_dancefloor + - Twee Folks + - UK DUB + - URIDDIM!! + - Ukraine + - Underground Hiphop + - VAPORWAVE + - Video Game Chat + - Vinyl Addicts + - Vocaloid + - WHATCDs + - World Music + - Yacht Rock + - '[German] [Deutsch]' + - abbey road Itd + - anime cunny + - bleeps&klonks + - breakbeat + - comics + - deep house connection + - drum'n'bass + - eesti mehed + - electro + - flacfield + - food + - for Losers + - hungary + - indie + - japanese music + - library music + - lossless + - minimal music + - museek + - noise + - 'on' + - postrock + - programming + - progressive house + - public porn + - r/musichoarder + - ru + - shoegaze + - tapekvit + - test + - trancEaddict + - trivia + - what.cd + - what.cd electronic + - what.cd-flac + - '{Italo Disco' +web: + authentication: + username: slskd + password: {{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['SLSKD_WEB_PASSSWORD'] }} + api_keys: + my_api_key: + key: {{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['SLSKD_API_KEY'] }} + role: readwrite0 + cidr: 0.0.0.0/0,::/0 +soulseek: + address: vps.slsknet.org + port: 2271 + username: Trez.One + password: {{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['SLSK_USER_PASSWORD'] }} + diagnostic_level: Info diff --git a/docker-compose.yml b/docker-compose.yml index 8fbc3281..036bbd02 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4497,6 +4497,30 @@ services: - ${DOCKER_VOLUME_STORAGE}/downloads:/downloads #Select where you are storing your config file. Leave "/data" since thats where the script expects the config file to be - ${DOCKER_VOLUME_CONFIG}/soularr:/data + soularr-dashboard: + container_name: soularr-dashboard + depends_on: + - soularr + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + labels: + homepage.name: Soularr + homepage.group: Downloaders + homepage.description: Dashboard for monitoring Soularr + homepage.href: https://slsk.${MY_TLD} + homepage.icon: /icons/soularr.png + image: git.trez.wtf/trez.one/soularr-dashboard:v0.1 + ports: + - 18364:8080 + restart: unless-stopped + volumes: + - ${DOCKER_VOLUME_CONFIG}/soularr/dashboard:/app + - ${DOCKER_VOLUME_CONFIG}/soularr:/data + - ${DOCKER_VOLUME_CONFIG}/soularr/logs:/data/logs + - /var/run/docker.sock:/var/run/docker.sock:ro + working_dir: /app soulseek: container_name: soulseek depends_on: @@ -4504,11 +4528,6 @@ services: condition: service_started required: true restart: true - environment: - SLSKD_PASSWORD: ${SLSKD_PASSWORD} - SLSKD_REMOTE_CONFIGURATION: true - SLSKD_SHARED_DIR: /music - SLSKD_USERNAME: slsk image: slskd/slskd labels: homepage.name: Soulseek @@ -4526,16 +4545,10 @@ services: network_mode: service:gluetun restart: always volumes: - - source: ${DOCKER_VOLUME_CONFIG}/soulseek - target: /app - type: bind - bind: - create_host_path: true - - source: ${DOCKER_VOLUME_STORAGE}/Audio/Music - target: /music - type: bind - bind: - create_host_path: true + - ${DOCKER_VOLUME_CONFIG}/soulseek:/app + - ${DOCKER_VOLUME_STORAGE}/Audio/Music:/music + - ${DOCKER_VOLUME_STORAGE}/downloads/completed/slsk:/app/downloads/ + - ${DOCKER_VOLUME_STORAGE}/downloads/incomplete/slsk:/app/incomplete sourcebot: container_name: sourcebot environment: