[APP] Add SLSKD (#3010)
* Add SLSKD * Add Traefik labels * Make sure user edits are recorded in config * Add default shared directory * Add information on credentials * Specify CPU architectures in config.json * Remove superfluous file * fix: run the app as root * fix: remove unnecessary config options --------- Co-authored-by: Pieter D'herde <hello@pieterdherde.com> Co-authored-by: Stavros <steveiliop56@gmail.com>
This commit is contained in:
parent
08c08107d6
commit
6721faf773
54
apps/slskd/config.json
Normal file
54
apps/slskd/config.json
Normal file
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
"name": "SLSKD",
|
||||
"available": true,
|
||||
"port": 5030,
|
||||
"exposable": true,
|
||||
"id": "slskd",
|
||||
"description": "A modern client-server application for the Soulseek file-sharing network.",
|
||||
"tipi_version": 1,
|
||||
"version": "0.20.1",
|
||||
"categories": ["utilities"],
|
||||
"short_desc": "P2P downloads",
|
||||
"author": "jpdillingham",
|
||||
"source": "https://github.com/slskd/slskd",
|
||||
"supported_architectures": ["amd64", "arm64"],
|
||||
"form_fields": [{
|
||||
"type": "text",
|
||||
"label": "WebUI username",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "SLSKD_WEB_USER"
|
||||
},
|
||||
{
|
||||
"type": "password",
|
||||
"label": "WebUI password",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "SLSKD_WEB_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Soulseek username",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "SLSKD_USER"
|
||||
},
|
||||
{
|
||||
"type": "password",
|
||||
"label": "Soulseek password",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "SLSKD_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "boolean",
|
||||
"label": "Allow remote configuration",
|
||||
"required": true,
|
||||
"env_variable": "SLSKD_REMOTE_CONFIGURATION"
|
||||
}
|
||||
]
|
||||
}
|
226
apps/slskd/data/slskd.yml.template
Normal file
226
apps/slskd/data/slskd.yml.template
Normal file
|
@ -0,0 +1,226 @@
|
|||
#debug: false
|
||||
remote_configuration: {{SLSKD_REMOTE_CONFIGURATION}}
|
||||
# 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: true
|
||||
# log_sql: false
|
||||
# experimental: false
|
||||
# volatile: false
|
||||
# case_sensitive_reg_ex: 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: <a 16-255 character string corresponding to one of the controller's 'readwrite' or 'administrator' API keys>
|
||||
# secret: <a 16-255 character shared secret matching the controller's config for this agent>
|
||||
# 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: <a 16-255 character string unique to this agent>
|
||||
# cidr: 0.0.0.0/0,::/0
|
||||
directories:
|
||||
incomplete: /incomplete
|
||||
downloads: /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:
|
||||
# - <username to blacklist>
|
||||
# cidrs:
|
||||
# - <CIDR to blacklist, e.g. 255.255.255.255/32>
|
||||
# user_defined:
|
||||
# my_buddies:
|
||||
# upload:
|
||||
# priority: 250
|
||||
# strategy: firstinfirstout
|
||||
# slots: 10
|
||||
# limits:
|
||||
# queued:
|
||||
# files: 1000 # override global default
|
||||
# members:
|
||||
# - alice
|
||||
# - bob
|
||||
# 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_WEB_USER}}
|
||||
password: {{SLSKD_WEB_PASSWORD}}
|
||||
# jwt:
|
||||
# key: ~
|
||||
# ttl: 604800000
|
||||
# api_keys:
|
||||
# my_api_key:
|
||||
# key: <some example string between 16 and 255 characters>
|
||||
# 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: true
|
||||
# loki: ~
|
||||
# metrics:
|
||||
# enabled: false
|
||||
# url: /metrics
|
||||
# authentication:
|
||||
# disabled: false
|
||||
# username: slskd
|
||||
# password: slskd
|
||||
# feature:
|
||||
# swagger: false
|
||||
soulseek:
|
||||
address: vps.slsknet.org
|
||||
port: 2271
|
||||
username: {{SLSKD_USER}}
|
||||
password: {{SLSKD_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
|
48
apps/slskd/docker-compose.yml
Normal file
48
apps/slskd/docker-compose.yml
Normal file
|
@ -0,0 +1,48 @@
|
|||
version: "3.9"
|
||||
services:
|
||||
slskd:
|
||||
image: slskd/slskd:0.20.1
|
||||
container_name: slskd
|
||||
volumes:
|
||||
- "${APP_DATA_DIR}:/app"
|
||||
- "${ROOT_FOLDER_HOST}/media/downloads/complete:/downloads"
|
||||
- "${ROOT_FOLDER_HOST}/media/downloads/incomplete:/incomplete"
|
||||
- "${ROOT_FOLDER_HOST}/media/:/shared"
|
||||
environment:
|
||||
- SLSKD_WEB_USER=${SLSKD_WEB_USER}
|
||||
- SLSKD_WEB_PASSWORD=${SLSKD_WEB_PASSWORD}
|
||||
- SLSKD_USER=${SLSKD_USER}
|
||||
- SLSKD_PASSWORD=${SLSKD_PASSWORD}
|
||||
- SLSKD_REMOTE_CONFIGURATION=${SLSKD_REMOTE_CONFIGURATION}
|
||||
- SLSKD_CONFIG=/app/data/slskd.yml
|
||||
- SLSKD_SHARED_DIR=/shared
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
ports:
|
||||
- ${APP_PORT}:5030
|
||||
labels:
|
||||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.slskd-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.slskd.loadbalancer.server.port: 5030
|
||||
# Web
|
||||
traefik.http.routers.slskd-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.slskd-insecure.entrypoints: web
|
||||
traefik.http.routers.slskd-insecure.service: slskd
|
||||
traefik.http.routers.slskd-insecure.middlewares: slskd-web-redirect
|
||||
# Websecure
|
||||
traefik.http.routers.slskd.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.slskd.entrypoints: websecure
|
||||
traefik.http.routers.slskd.service: slskd
|
||||
traefik.http.routers.slskd.tls.certresolver: myresolver
|
||||
# Local domain
|
||||
traefik.http.routers.slskd-local-insecure.rule: Host(`slskd.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.slskd-local-insecure.entrypoints: web
|
||||
traefik.http.routers.slskd-local-insecure.service: slskd
|
||||
traefik.http.routers.slskd-local-insecure.middlewares: slskd-web-redirect
|
||||
# Local domain secure
|
||||
traefik.http.routers.slskd-local.rule: Host(`slskd.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.slskd-local.entrypoints: websecure
|
||||
traefik.http.routers.slskd-local.service: slskd
|
||||
traefik.http.routers.slskd-local.tls: true
|
36
apps/slskd/metadata/description.md
Normal file
36
apps/slskd/metadata/description.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
A modern client-server application for the [Soulseek](https://www.slsknet.org/news/) file-sharing network.
|
||||
|
||||
## Features
|
||||
|
||||
### Credentials
|
||||
Upon installing the app will ask for a username and password for both the web interface and the Soulseek network. If another Soulseek user already exists with that name, the app will still install correctly but won't login. A new username can be configured in the settings.
|
||||
|
||||
### Secure access
|
||||
|
||||
slskd runs as a daemon or Docker container in your network (or in the cloud!) and is accessible from a web browser. It's designed to be exposed to the internet, and everything is secured with a token that [you can control](https://github.com/slskd/slskd/blob/master/docs/config.md#authentication).
|
||||
|
||||
![image](https://user-images.githubusercontent.com/17145758/193290217-0e6d87f5-a547-4451-8d90-d554a902716c.png)
|
||||
|
||||
### Search
|
||||
|
||||
Search for things just like you're used to with the official Soulseek client. slskd makes it easy to enter multiple searches quickly.
|
||||
|
||||
![image](https://user-images.githubusercontent.com/17145758/193286989-30bd524d-81b6-4721-bd72-e4438c2b7b69.png)
|
||||
|
||||
### Results
|
||||
|
||||
Sort and filter search results using the same filters you use today. Dismiss results you're not interested in, and download the ones you want in a couple of clicks.
|
||||
|
||||
![image](https://user-images.githubusercontent.com/17145758/193288396-dc3cc83d-6d93-414a-93f6-cea0696ac245.png)
|
||||
|
||||
### Downloads
|
||||
|
||||
Monitor the speed and status of downloads, grouped by user and folder. Click the progress bar to fetch your place in queue, and use the selection tools to cancel, retry, or clear completed downloads. Use the controls at the top to quickly manage downloads by status.
|
||||
|
||||
![image](https://user-images.githubusercontent.com/17145758/193289840-3aee153f-3656-4f15-b086-8b1ca25d38bb.png)
|
||||
|
||||
### Pretty much everything else
|
||||
|
||||
slskd can do almost everything the official Soulseek client can; browse user shares, join chat rooms, privately chat with other users.
|
||||
|
||||
New features are added all the time!
|
BIN
apps/slskd/metadata/logo.jpg
Normal file
BIN
apps/slskd/metadata/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.3 KiB |
Loading…
Reference in New Issue
Block a user