MCPSERV.CLUB
slskd

slskd

Self-Hosted

Secure, web‑based Soulseek client for self‑hosted file sharing

Active(100)
2.2kstars
1views
Updated 6 days ago
slskd screenshot 1
1 / 4

Overview

Discover what makes slskd powerful

slskd is a modern, daemon‑oriented implementation of the Soulseek peer‑to‑peer network that exposes a web‑based UI and a robust API for developers. It bridges the classic Soulseek protocol with contemporary HTTP/HTTPS interfaces, allowing self‑hosted deployments that can be exposed to the Internet or integrated into existing service stacks. The application accepts incoming Soulseek connections on a dedicated TCP port (default 50300) while serving web traffic over ports 5030 (HTTP) and 5031 (HTTPS). Its design prioritizes secure, token‑based authentication that can be managed through environment variables or a configuration file, making it compatible with reverse proxies and container orchestrators.

Language & Runtime

Protocol Handling

Web Interface

Persistence

Overview

slskd is a modern, daemon‑oriented implementation of the Soulseek peer‑to‑peer network that exposes a web‑based UI and a robust API for developers. It bridges the classic Soulseek protocol with contemporary HTTP/HTTPS interfaces, allowing self‑hosted deployments that can be exposed to the Internet or integrated into existing service stacks. The application accepts incoming Soulseek connections on a dedicated TCP port (default 50300) while serving web traffic over ports 5030 (HTTP) and 5031 (HTTPS). Its design prioritizes secure, token‑based authentication that can be managed through environment variables or a configuration file, making it compatible with reverse proxies and container orchestrators.

Technical Stack

  • Language & Runtime: Written in Go, slskd benefits from the language’s native concurrency model and static binaries, which simplify deployment across Linux, macOS, and Windows.
  • Protocol Handling: Implements the Soulseek protocol at the transport layer using Go’s net package, with optional TLS support for secure inbound connections.
  • Web Interface: Built on the Gin framework (or a minimal HTTP router), providing RESTful endpoints for search, download control, chat, and user share browsing. The UI is a single‑page application that consumes these endpoints via WebSocket for real‑time updates.
  • Persistence: Uses SQLite as the default embedded database to store user preferences, download queues, and chat history. The schema is lightweight yet extensible, and the database file can be mounted into a Docker volume for data durability.
  • Containerization: Official Docker images are available on Docker Hub, with multi‑stage builds that strip debugging symbols for a minimal runtime image. The container exposes the three core ports and accepts configuration through environment variables or mounted config files.

Core Capabilities

  • Search & Filtering: Exposes a /search endpoint that accepts query strings, user filters, and advanced search flags. Results are paginated and can be sorted by file size, user rating, or share count.
  • Download Management: The /downloads API supports enqueueing, pausing, resuming, and canceling transfers. Real‑time progress is pushed via Server‑Sent Events or WebSocket, allowing front‑end dashboards to display per‑user and per‑folder queues.
  • Chat & Rooms: Provides /chat endpoints for private messaging and room participation, mirroring the functionality of the official client. WebSocket streams deliver message events in near real‑time.
  • User Share Browsing: The /users/:id/shares endpoint lists a target user’s shared files, supporting pagination and keyword filtering.
  • Configuration API: A /config endpoint allows runtime updates to authentication tokens, port settings, and feature flags without restarting the daemon.

Deployment & Infrastructure

slskd is designed for both single‑node and clustered deployments. Because the core protocol state (active connections, download queues) is stored in SQLite, scaling horizontally requires a shared storage layer or a custom state replication mechanism. For most use cases, a single Docker instance suffices; however, advanced users can orchestrate multiple instances behind a load balancer and synchronize state via an external database or message queue. The application’s lightweight footprint (≈ 30 MB binary) and stateless HTTP layer make it suitable for edge nodes, cloud VMs, or Kubernetes pods.

Integration & Extensibility

  • Plugin System: slskd exposes a hook mechanism that allows third‑party Go modules to intercept events such as incoming connections, search requests, or download completions. Plugins are loaded at startup from a designated directory, enabling custom authentication back‑ends or analytics pipelines.
  • Webhooks: Developers can register HTTP callbacks for events like download_started, download_completed, or user_joined. This facilitates integration with CI/CD pipelines, monitoring dashboards, or external notification services.
  • API Client Libraries: Community projects provide idiomatic clients in Python, JavaScript, and Go, simplifying programmatic interaction with slskd’s REST endpoints.

Developer Experience

The project maintains a comprehensive docs/ directory that covers configuration, reverse‑proxy setup, and API usage. Continuous integration builds on GitHub Actions ensure that every pull request passes a full test suite, and the community is active on Discord and Matrix for rapid support. Licensing under Apache 2.0 allows commercial use without attribution constraints, which is attractive for enterprise deployments.

Use Cases

  • Self‑Hosted File Distribution: Companies can host slskd to provide secure, high‑bandwidth file sharing for internal teams without relying on cloud storage.
  • Content Delivery Networks: By exposing slskd behind a CDN edge, developers can leverage Soulseek’s distributed nature for resilient media distribution.
  • Research & Analysis: The API and webhook hooks enable data collection on network traffic patterns, useful for academic studies of P2P networks.
  • Custom Chat Platforms: Integrating slskd’s chat rooms into existing collaboration tools offers a lightweight, decentralized messaging layer.

Advantages

slskd delivers the performance and low‑latency of native Soulseek clients while adding a modern, developer‑friendly API surface. Its Go implementation ensures minimal resource usage and fast startup times, making it ideal for containerized environments. The open‑

Open SourceReady to get started?

Join the community and start self-hosting slskd today

Weekly Views

Loading...
Support Us
Most Popular

Infrastructure Supporter

$5/month

Keep our servers running and help us maintain the best directory for developers

Repository Health

Loading health data...

Information

Category
other
License
AGPL-3.0
Stars
2.2k
Technical Specs
Pricing
Open Source
Docker
Official
Supported OS
LinuxDocker
Author
slskd
slskd
Last Updated
6 days ago