A fully decentralised music streaming platform.
https://git.caspervk.net/caspervk/silverstream/raw/branch/master/silverstream.pdf
silverstream | ||
tests | ||
tools | ||
.gitignore | ||
LICENSE.txt | ||
README.md | ||
setup.py | ||
silverstream.pdf |
Silverstream: A fully decentralised music streaming platform
Installation
Silverstream requires Python 3.7+ with the libtorrent
library, as well as the libmpv1
package from your local
package repository. The dependencies can be installed from the Debian repositories:
sudo apt install -y python3.7 python3-libtorrent libmpv1
Or from source:
# Python 3.7 (https://docs.python.org/3/using/unix.html#building-python)
sudo apt build-dep -y python3
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar xf Python-3.7.1.tgz
cd Python-3.7.1
./configure --enable-optimizations
make -j$(nproc)
sudo make altinstall
# Libtorrent (https://dev.deluge-torrent.org/wiki/Building/libtorrent)
sudo apt build-dep -y libtorrent-rasterbar
wget https://github.com/arvidn/libtorrent/releases/download/libtorrent_1_1_11/libtorrent-rasterbar-1.1.11.tar.gz
tar xf libtorrent-rasterbar-1.1.11.tar.gz
cd libtorrent-rasterbar-1.1.11/
PYTHON=$(which python3.7) ./configure --enable-python-binding --with-libiconv --disable-debug
make -j$(nproc)
sudo make install
sudo ldconfig
The libtorrent version from the Debian repository doesnt't seem to play nicely with Python 3.7, so please check the installation:
python3.7 -c "import libtorrent; print(libtorrent.version)"
After installing the dependencies, the application can be installed using pip:
python3.7 -m pip install --upgrade https://git.caspervk.net/caspervk/silverstream/archive/master.tar.gz
Usage
The program can be started by running silverstream
or python3.7 -m silverstream
, depending on system configuration.
usage: silverstream [-h] [--interface interface] [--port port] [--load] [--stats] [-v] [--clean] [--crawler-nodes nodes]
[--crawler-delay seconds] [--crawler-await-bootstrap] [--indexer-workers workers]
[--indexer-save-torrents] [--btdht-seed host:port]
optional arguments:
-h, --help show this help message and exit
--interface interface Network interface to bind to. (default: 0.0.0.0)
--port port Network port to listen listen on. Ports are bound consecutively from this port.
(default: 6881)
--load Load state from file (use 'save' from the cli to save).
--stats Save statistics to file.
-v, --verbose Increase verbosity level. Can be used multiple times.
--clean Remove data directory.
Crawler:
--crawler-nodes nodes Number of BitTorrent DHT nodes to start. (default: 32)
--crawler-delay seconds Number of seconds to wait between starting each of the BitTorrent DHT nodes. (default: 1)
--crawler-await-bootstrap Wait for nodes to fully bootstrap before starting the next one.
Indexer:
--indexer-workers workers Number of Indexer workers to start. (default: 25)
--indexer-save-torrents Save indexed torrents to torrents/.
BitTorrent DHT:
--btdht-seed host:port BitTorrent DHT seed nodes. Overrides default seeds. Can be specified multiple times.
You may need to open some ports in your firewall. This command will allow a crawler with 128 nodes on UFW:
ufw allow 6881:7009/udp comment "silverstream"