Porla can be configured in various ways - either via environment variables, command line arguments, or a configuration file.
Using a configuration file is recommended since it has support for all the options available.
Use the following examples as a base for your own configuration. If you do not specify a config, Porla will use default values.
- PORLA_CONFIG_FILE=/var/lib/porla/config.toml # path to a TOML config file with additional configuration.
- PORLA_DB=/var/lib/porla/porla.sqlite # path a file (which does not need to exist) that porla will use to store its state.
- PORLA_HTTP_AUTH_DISABLED_YES_REALLY=false # set to true to disable HTTP JWT authentication (not recommended).
- PORLA_HTTP_BASE_PATH=/ # set to a path where the HTTP parts of Porla will be served. Defaults to /.
- PORLA_HTTP_HOST=0.0.0.0 # set to an IP address which to bind the HTTP server. Defaults to 127.0.0.1.
- PORLA_HTTP_METRICS_ENABLED=true # set to true/false to enable or disable the metrics endpoint. Defaults to true.
- PORLA_HTTP_PORT=1337 # set to the port to use for the HTTP server. Defaults to 1337.
- PORLA_LOG_LEVEL=debug # the minimum log level to use. Valid values are trace, debug, info, warning, error, fatal. Defaults to info.
- PORLA_SESSION_SETTINGS_BASE="default" # 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=/var/lib/porla # a path to a directory where Porla will store its state.
- PORLA_TIMER_DHT_STATS=5000 # the interval in milliseconds to push DHT stats. Defaults to 5000.
- PORLA_TIMER_SESSION_STATS=5000 # the interval in milliseconds to push session stats. Defaults to 5000.
- PORLA_TIMER_TORRENT_UPDATES=1000 # the interval in milliseconds to push torrent state updates. Defaults to 1000.
- PORLA_WORKFLOW_DIR=/var/lib/porla/workflows # the path to where Porla will load user workflows from.
db key specifies a file (which will be created if it does not exist)
where Porla will store all of its state.
db is set to
:memory:, Porla will run with a SQLite in-memory database
which can be useful for debugging. However, while torrent data is saved to disk,
no other state is saved.
db = "/var/lib/porla/porla.sqlite"
secret_key is highly encouraged.
Porla uses the secret key to sign various pieces of data. For example, all JWTs are signed with this secret key. If no secret key is defined, Porla will generate a new one every startup. This means old JWTs becomes invalid.
porla key:generate to generate a cryptographically secure secret key.
sudo docker exec -it <CONTAINER_NAME> porla key:generate for docker installations.
secret_key = "<generated secret key>"
While having access to all libtorrent settings is a powerful feature, it is also easy to break stuff.
session_settings section to directly set libtorrent settings. You can use
base key to set a base setting layer.
Refer to the libtorrent documentation for detailed information for each setting.
base = "default" # (or "high_performance_seed", or "min_memory_usage")
close_redundant_connections = false
listen_interfaces key sets the interfaces to use when listening for
connections. You can bind to either an IP address or a network interface name.
It is an array of arrays, where each sub-array has two elements. The first is a string which is either an IP address or a network interface name, the second is a number that represents the port to listen on for that specific interface.
listen_interfaces = [
Presets is a powerful way of applying settings to a torrent. Any preset you add
to the configuration can be references in the
preset key when calling the
torrents.add RPC method.
default preset is applied to all added torrents. Other presets
will inherit the keys specified in the default preset. All preset keys are optional.
[presets.default] # example of all the
download_limit = 20000 # in bytes per second per torrent in this preset
max_connections = 100
max_uploads = 200
save_path = "/dl/default"
storage_mode = "allocate" # (or "sparse")
upload_limit = -1 # -1 means unlimited
category = "default"
tags = ["tag1", "tag2"] # Array of tag strings
[presets.other-1] # override the save path from the default preset
save_path = "/dl/other"
Set a proxy to use when connecting to BitTorrent peers.
host = "10.64.0.1"
port = 1080
type = "socks5"
hostnames = true
peer_connections = true
tracker_connections = true
timer section specifies the interval for various timers in Porla. The
interval is in milliseconds, and a value of 0 (or less) will disable the timer.
While disabling timers is supported, it will have an effect on how Porla operates.
For example, disabling the
torrent_updates timer (by setting it to 0) will
also disable the
state_update event in the events API.
dht_stats = 3000
session_stats = 3000
torrent_updates = 1000
workflow_dir key specifies the directory from where Porla will load Lua
workflow_dir = "/usr/lib/porla/workflows"