create torrents for Monero GUI / CLI files.
- getmonero.org added as a webseed
- mktorrent creates the torrent file.
- the torrent files info-hash is deterministic.
- automated ci
create_monero_torrent.sh creates:
├── create_monero_torrent.sh
├── downloads
│ └── monero-v0.18.4.2
│ ├── cli
│ │ ├── monero-android-armv7-v0.18.4.2.tar.bz2
│ │ ├── monero-android-armv8-v0.18.4.2.tar.bz2
│ │ ├── monero-freebsd-x64-v0.18.4.2.tar.bz2
│ │ ├── monero-linux-armv7-v0.18.4.2.tar.bz2
│ │ ├── monero-linux-armv8-v0.18.4.2.tar.bz2
│ │ ├── monero-linux-riscv64-v0.18.4.2.tar.bz2
│ │ ├── monero-linux-x64-v0.18.4.2.tar.bz2
│ │ ├── monero-linux-x86-v0.18.4.2.tar.bz2
│ │ ├── monero-mac-armv8-v0.18.4.2.tar.bz2
│ │ ├── monero-mac-x64-v0.18.4.2.tar.bz2
│ │ ├── monero-source-v0.18.4.2.tar.bz2
│ │ ├── monero-win-x64-v0.18.4.2.zip
│ │ └── monero-win-x86-v0.18.4.2.zip
│ └── hashes-v0.18.4.2.txt
│ └── monero-gui-v0.18.4.2
│ ├── gui
│ │ ├── monero-gui-install-win-x64-v0.18.4.2.exe
│ │ ├── monero-gui-linux-x64-v0.18.4.2.tar.bz2
│ │ ├── monero-gui-mac-armv8-v0.18.4.2.dmg
│ │ ├── monero-gui-mac-x64-v0.18.4.2.dmg
│ │ ├── monero-gui-source-v0.18.4.2.tar.bz2
│ │ └── monero-gui-win-x64-v0.18.4.2.zip
│ └── hashes-v0.18.4.2.txt
└── watch
├── monero-v0.18.4.2.torrent
└── monero-gui-v0.18.4.2.torrent
Grab the torrent from https://github.com/plowsof/monero-torrent/releases
To build the torrent file:
- Clone this repo, build and copy the mktorrent binary to the
monero-torrentdir and runcreate_monero_torrent.sh:
git clone --recurse-submodules https://github.com/plowsof/monero-torrent && cd monero-torrent && cd submodules/mktorrent && make && mv mktorrent ../../ && cd ../.. && chmod +x create_monero_torrent.sh && ./create_monero_torrent.sh
- By default the script downloads binaries from getmoneros CDN
- to obtain files locally, pass
CDN_URLwhich is a path containing all files required includingbinaryfate.ascandhashes.txt BF_KEY_URLis the filename of the key inside theCDN_URLfolder.HASHES_URLis the filename of the hashes file inCDN_URLfolder.
Note: they do not have to be nested in any particular folder, the script will find them recursively and copy them into the torrents file folder
CDN_URL="$HOME/monero-v0.18.4.3" \
BF_KEY_URL="binaryfate.asc" \
HASHES_URL="hashes.txt" \
./create_monero_torrent.sh
You can also pass a custom hashes URL, providing the files within are on the CDN_URL (Note: a local hashes file requires a local folder for CDN_URL):
HASHES_URL="https://raw.githubusercontent.com/binaryFate/monero-site/refs/heads/release-CLIandGUI-v0.18.4.4/downloads/hashes.txt" ./create_monero_torrent.sh
if you see ContainerConfig error you need to upgrade docker-compose to v2 (Confirm version with: docker compose version). In debian:
sudo apt-get update
sudo apt-get remove docker-compose
sudo apt-get install docker-compose-plugin
env variables are defined in docker-compose.yml
after cloning:
git clone --recurse-submodules https://github.com/plowsof/monero-torrent && cd monero-torrent
Default where files are downloaded: Note: if you see unknown flag: --profile then you need to update to Compose v2
docker compose --profile remote up --build
see usage above and docker-compose.yml to use local files: (all files inside cdn/)
docker compose --profile local up --build
this is left up to the user, but after running the scripts you can add the torrent / files to your favourite client. Note: ensure the correct port(s) are open for your client
example with transmission-daemon:
transmission-daemon --config-dir ./config --download-dir ./downloads --watch-dir ./watch --foreground
for some automation linux/debian users can install inotifywait which can watch a directory for new files.
when i push a torrent file to the watch folder - a script to remove the old torrent files is run.
the webseed will be used to bootstrap the first seed node, simple.
apt install inotify-tools
running ./inotify.sh in a screen session will delete old torrent files when a new Monero torrent is placed in the ./watch folder.
if your client supports adding an RSS feed, one is provided in the rss folder.