All Projects → porla → porla

porla / porla

Licence: other
A high performance BitTorrent client for servers and seedboxes.

Programming Languages

C++
36643 projects - #6 most used programming language
typescript
32286 projects
CMake
9771 projects

Projects that are alternatives of or similar to porla

Wt Tracker
High-performance WebTorrent tracker
Stars: ✭ 144 (+73.49%)
Mutual labels:  torrent, bittorrent
Cratetorrent
A BitTorrent V1 engine library for Rust (and currently Linux)
Stars: ✭ 233 (+180.72%)
Mutual labels:  torrent, bittorrent
Qbittorrent
qBittorrent BitTorrent client
Stars: ✭ 13,738 (+16451.81%)
Mutual labels:  torrent, bittorrent
Vlc Bittorrent
A bittorrent plugin for VLC.
Stars: ✭ 198 (+138.55%)
Mutual labels:  torrent, bittorrent
Torrent Discovery
Discover BitTorrent and WebTorrent peers
Stars: ✭ 177 (+113.25%)
Mutual labels:  torrent, bittorrent
Xd
i2p bittorrent client
Stars: ✭ 140 (+68.67%)
Mutual labels:  torrent, bittorrent
Bt
BitTorrent library and client with DHT, magnet links, encryption and more
Stars: ✭ 2,011 (+2322.89%)
Mutual labels:  torrent, bittorrent
Confluence
Torrent client as a HTTP service
Stars: ✭ 126 (+51.81%)
Mutual labels:  torrent, bittorrent
Magnetissimo
Web application that indexes all popular torrent sites, and saves it to the local database.
Stars: ✭ 2,551 (+2973.49%)
Mutual labels:  torrent, bittorrent
Dottorrent Gui
An advanced GUI torrent file creator with batch functionality, powered by PyQt and dottorrent
Stars: ✭ 175 (+110.84%)
Mutual labels:  torrent, bittorrent
Ipmagnet
Check which IP adresses your BitTorrent client is handing out to trackers
Stars: ✭ 200 (+140.96%)
Mutual labels:  torrent, bittorrent
Magnet Uri
Parse a magnet URI and return an object of keys/values
Stars: ✭ 183 (+120.48%)
Mutual labels:  torrent, bittorrent
Pytorrent
Simple and functional BitTorrent client made in Python - Use for learning
Stars: ✭ 135 (+62.65%)
Mutual labels:  torrent, bittorrent
Transgui
🧲 A feature rich cross platform Transmission BitTorrent client. Faster and has more functionality than the built-in web GUI.
Stars: ✭ 2,488 (+2897.59%)
Mutual labels:  torrent, bittorrent
Autodl Trackers
Tracker files for autodl-community fork of autodl-irssi
Stars: ✭ 133 (+60.24%)
Mutual labels:  torrent, bittorrent
Torrentpier
Main project repository
Stars: ✭ 166 (+100%)
Mutual labels:  torrent, bittorrent
Dfi
Peer-to-peer torrent indexing
Stars: ✭ 118 (+42.17%)
Mutual labels:  torrent, bittorrent
Torrentinim
A very low memory-footprint, self hosted API-only torrent search engine. Sonarr + Radarr Compatible, native support for Linux, Mac and Windows.
Stars: ✭ 123 (+48.19%)
Mutual labels:  torrent, bittorrent
Put.io Adder
OS X put.io client that acts as handler for magnet: links and .torrent files, and adds them to your put.io download queue
Stars: ✭ 172 (+107.23%)
Mutual labels:  torrent, bittorrent
Biglybt Android
BiglyBT for Android, torrent client and remote control app
Stars: ✭ 180 (+116.87%)
Mutual labels:  torrent, bittorrent


Porla

Porla is a powerful BitTorrent client with high performance and low memory usage. It is designed for headless operations on servers and seedboxes and can easily manage tens of thousands of torrents.

The focus of Porla is to provide a BitTorrent client that is fast, correct and extensible.


Features

  • User-defined workflows.
  • Support for both BitTorrent v1 and v2.
  • Embedded query language to find torrents. Fast.
  • HTTP API with JWT auth.
  • Modern web UI.

Workflows

Workflows can be used to automate and integrate Porla with all types of applications and services, such as Discord and ntfy.sh. They are inspired by GitHub Actions.

The Porla query language (PQL)

To make it easy to navigate and filter a large amount of torrents Porla has a simple, embedded query language named PQL.

With PQL you can easily find torrents matching specific criterias.

Getting started

Download the latest release and put it somewhere safe. Then, run it. By default, Porla bind the web UI to localhost:1337. On first use you will be prompted to set up a user account.

porla

To show all options available, suffix with --help.

porla --help

For example, you can run porla with an in-memory SQLite database by passing --db=:memory:.

porla --db=:memory:

Configuration

You can configure Porla in three ways - environment variables, command line arguments, and a TOML config file.

Command line arguments have the highest priority, then the config file, and lastly the environment variables. The app will, however, run without any applied configuration and use sensible defaults instead.

Environment variables and command line args

  • PORLA_CONFIG_FILE or --config-file - path to a TOML config file with additional configuration.
  • PORLA_DB or --db - path a file (which does not need to exist) that porla will use to store its state.
  • PORLA_HTTP_AUTH_DISABLED_YES_REALLY - set to true to disable HTTP JWT authentication (not recommended).
  • PORLA_HTTP_BASE_PATH or --http-base-path - set to a path where the HTTP parts of Porla will be served. Defaults to /.
  • PORLA_HTTP_HOST or --http-host - set to an IP address which to bind the HTTP server. Defaults to 127.0.0.1.
  • PORLA_HTTP_METRICS_ENABLED or --http-metrics-enabled - set to true/false to enable or disable the metrics endpoint. Defaults to true.
  • PORLA_HTTP_PORT or --http-port - set to the port to use for the HTTP server. Defaults to 1337.
  • PORLA_LOG_LEVEL or --log-level - the minimum log level to use. Valid values are trace, debug, info, warning, error, fatal. Defaults to info.
  • PORLA_SESSION_SETTINGS_BASE or --session-settings-base - the libtorrent settings base to use for session settings. Valid values are default, min_memory_usage, high_performance_seed. Defaults to default.
  • PORLA_STATE_DIR or --state-dir - a path to a directory where Porla will store its state.
  • PORLA_TIMER_DHT_STATS or --timer-dht-stats - the interval in milliseconds to push DHT stats. Defaults to 5000.
  • PORLA_TIMER_SESSION_STATS or --timer-session-stats - the interval in milliseconds to push session stats. Defaults to 5000.
  • PORLA_TIMER_TORRENT_UPDATES or --timer-torrent-updates - the interval in milliseconds to push torrent state updates. Defaults to 1000.
  • PORLA_WORKFLOW_DIR or --workflow-dir - the path to where Porla will load user workflows from.

Refer to the official documentation for information on how to set up the TOML configuration.

Development

Various bits and pieces of information regarding development.

Building

We try to make sure Porla is easy to get running directly from the Git repository. Dependencies are managed with vcpkg.

git clone --recursive https://github.com/porla/porla
cd porla
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -G Ninja
cmake --build build

You can also remove -G Ninja if you don't have Ninja available.

Updating the pre-built Dockerfile build environment

To reduce build times, we use a pre-built Docker layer with all the vcpkg dependencies already built. This needs to be updated whenever we update the vcpkg submodule or radically change the project structure.

Requires push access to the Porla container registry.

docker build -t porla-build-env -f Dockerfile.build-env .
docker tag porla-build-env ghcr.io/porla/build-env:<timestamp>
docker push ghcr.io/porla/build-env:<timestamp>

Generating ANTLR4 grammar source files

This is only needed when PorlaQueryLang.g4 is modified.

wget https://www.antlr.org/download/antlr-4.11.1-complete.jar
pushd src/query
java -jar ../../antlr-4.11.1-complete.jar -Dlanguage=Cpp -visitor -no-listener -o _aux PorlaQueryLang.g4
popd
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].