docs(downloads): docker mount heads-up for torrent / usenet sources
Torrent and usenet clients each download to their own folders (not Soulseek's). SoulSync needs read access to those paths to import the resulting files. Bare-metal setups work without configuration; Docker setups need volume mounts; remote downloader hosts need a network mount. - webui/index.html: orange warning card on the Indexers & Downloaders hero, listing the three deployment shapes (bare-metal / Docker / remote) and what each needs. - webui/static/style.css: ind-hero-warning rule set — warning-tone palette (amber on dark glass) so the card reads as advisory, not destructive. Inline ul + code styling for the bullet list inside. - docker-compose.yml: commented placeholder mounts under the existing IMPORTANT block for /downloads/torrents and /downloads/usenet. Same uncomment-and-edit pattern as the existing slskd helper block. Documents the in-container path must match what the torrent / usenet client reports as its save_path.
This commit is contained in:
parent
080b1aa1b4
commit
0468816367
4 changed files with 65 additions and 0 deletions
|
|
@ -48,6 +48,20 @@ services:
|
|||
# - /path/to/music-library:/host/music:rw
|
||||
# Optional: Mount your music library for Plex/Jellyfin/Navidrome access
|
||||
# - /path/to/your/music:/music:ro
|
||||
#
|
||||
# ─── Torrent / Usenet download sources (Prowlarr integration) ────────
|
||||
# If you use the Torrent Only or Usenet Only download sources, SoulSync
|
||||
# needs to read the files your torrent / usenet client downloads. The
|
||||
# mount path INSIDE SoulSync must MATCH the save_path your torrent or
|
||||
# usenet client reports — easiest is to use the same path on both
|
||||
# sides. Uncomment + edit the host path to point at the client's
|
||||
# download folder:
|
||||
# - /path/to/qbittorrent/downloads:/downloads/torrents:rw
|
||||
# - /path/to/sabnzbd/complete:/downloads/usenet:rw
|
||||
# Then set the torrent client's save path to /downloads/torrents and
|
||||
# SAB / NZBGet's complete folder to /downloads/usenet (or whatever
|
||||
# in-container path you chose). Skip these if your downloader runs
|
||||
# outside Docker and writes to a path already mounted above.
|
||||
extra_hosts:
|
||||
# Allow container to reach host services
|
||||
- "host.docker.internal:host-gateway"
|
||||
|
|
|
|||
|
|
@ -4971,6 +4971,17 @@
|
|||
<div class="ind-hero-sub">
|
||||
Configure your Prowlarr instance to feed search results, and pick a torrent client and/or usenet client to handle the actual downloads. You only need to set up the protocols you actually use.
|
||||
</div>
|
||||
<div class="ind-hero-warning">
|
||||
<div class="ind-hero-warning-title">⚠️ Filesystem access required</div>
|
||||
<div class="ind-hero-warning-body">
|
||||
Your torrent / usenet client downloads to <strong>its own folder</strong> (not Soulseek's). SoulSync needs read access to that folder to import the files.
|
||||
<ul>
|
||||
<li><strong>Bare-metal (everything on one PC):</strong> works out of the box — SoulSync reads the path directly.</li>
|
||||
<li><strong>Docker:</strong> map the client's save folder into the SoulSync container at the <em>same path</em> the client reports. Commented examples are in <code>docker-compose.yml</code> — uncomment and edit the host paths.</li>
|
||||
<li><strong>Remote client (NAS / different host):</strong> mount the remote folder locally (SMB / NFS / rclone) before SoulSync can see it.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ─── INDEXERS section ─── -->
|
||||
|
|
|
|||
|
|
@ -3415,6 +3415,7 @@ function closeHelperSearch() {
|
|||
const WHATS_NEW = {
|
||||
'2.6.0': [
|
||||
{ unreleased: true },
|
||||
{ title: 'Docker mount heads-up for torrent / usenet sources', desc: 'added an orange warning card on the Indexers & Downloaders tab explaining the filesystem-access requirement up front. torrent and usenet clients each download to their own folders (not Soulseek\'s), so SoulSync needs read access to those paths — works out of the box on bare-metal, needs a volume mount on Docker, needs SMB / NFS / rclone on remote-NAS setups. docker-compose.yml gained commented placeholder mounts for /downloads/torrents and /downloads/usenet that users can uncomment + edit to point at their qBit / SAB save folders.' },
|
||||
{ title: 'Torrent and Usenet downloads', desc: 'two new download sources live in the Download Source dropdown: <strong>Torrent Only (via Prowlarr)</strong> and <strong>Usenet Only (via Prowlarr)</strong>. they reuse the Prowlarr + torrent client + usenet client you set up on the Indexers & Downloaders tab. searches go through Prowlarr filtered by protocol, picked releases get handed to your torrent client or usenet client, and the resulting files get walked through archive_pipeline (extracts .zip / .rar / .tar when the client didn\'t already do it) and handed to the matching pipeline. both sources are also available in hybrid mode alongside soulseek / youtube / tidal / etc. one caveat: SoulSync needs read access to the torrent / usenet client\'s save_path — works out of the box for everything-on-one-box setups, but remote downloader hosts will need a future sync step.' },
|
||||
{ title: 'Archive pipeline module (groundwork for torrent / usenet downloads)', desc: 'new core/archive_pipeline.py — walks a directory for audio files (recursive, case-insensitive extensions), extracts zip / tar / tar.gz / rar / 7z archives in-place (rar and 7z are optional deps that warn but don\'t crash if absent), and rejects any archive member trying to escape the destination via path traversal. shared helper the upcoming torrent and usenet download plugins both consume — usenet downloaders usually auto-extract, but the occasional torrent ships an album in a .rar and SoulSync handles it now. 21 unit tests cover the walker + zip + tar extraction + path-traversal protection.' },
|
||||
{ title: 'Indexers & Downloaders tab restyled with collapsible sections', desc: 'tab now opens with an intro hero card explaining the flow (indexers find releases → downloader fetches them → SoulSync imports) and folds the rest into three collapsible sections: Indexers, Torrent Client, Usenet Client. each section gets a per-service color accent (Prowlarr orange, torrent sky-blue, usenet violet), a status dot in the header (green when Test Connection succeeds, red on failure, grey before testing), and Lidarr-style indexer cards with protocol badges instead of the inline emoji list. Indexers section is open by default; the downloader sections start collapsed since not everyone uses both protocols.' },
|
||||
|
|
|
|||
|
|
@ -3316,6 +3316,45 @@ body.helper-mode-active #dashboard-activity-feed:hover {
|
|||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.ind-hero-warning {
|
||||
margin-top: 14px;
|
||||
padding: 12px 14px;
|
||||
background: rgba(255, 165, 0, 0.06);
|
||||
border: 1px solid rgba(255, 165, 0, 0.2);
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.ind-hero-warning-title {
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
color: #ffb155;
|
||||
letter-spacing: 0.4px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.ind-hero-warning-body {
|
||||
font-size: 12.5px;
|
||||
color: rgba(255, 255, 255, 0.72);
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.ind-hero-warning-body ul {
|
||||
margin: 6px 0 0 18px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.ind-hero-warning-body li {
|
||||
margin: 3px 0;
|
||||
}
|
||||
|
||||
.ind-hero-warning-body code {
|
||||
font-family: 'SF Mono', Monaco, monospace;
|
||||
font-size: 11.5px;
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
padding: 1px 5px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
/* Section-header status dots — Lidarr-style green/red/grey indicator */
|
||||
.ind-status-dot {
|
||||
width: 9px;
|
||||
|
|
|
|||
Loading…
Reference in a new issue