transmission/docs/Headless-Usage.md

176 lines
8.2 KiB
Markdown

# Headless Usage
Transmission can be run in headless mode as a daemon. The daemon, `transmission-daemon`, runs in the background. It communicates with the world via the usual TCP and UDP bittorrent ports, as well as through TCP port 9091. It's on this last port that the daemon accepts commands from `transmission-remote`. These commands are called Remote Procedure Calls, or RPCs. There are RPCs for all of the interactions between a user and a bittorrent client, including adding and removing torrents, displaying global stats, checking torrent download progress, and shutting down the daemon. Each command completes in a finite amount of time and prints the result to stdout.
## Setup
First, the daemon must be started:
```
> mkdir -p ~/.local/log
> transmission-daemon --logfile ~/.local/log/transmission.log
> cat ~/.local/log/transmission.log
[2022-05-02 17:28:13.652] Transmission 3.00 (bb6b5a062e) started (session.c:769)
[2022-05-02 17:28:13.652] RPC Server Adding address to whitelist: 127.0.0.1 (rpc-server.c:956)
[2022-05-02 17:28:13.652] RPC Server Adding address to whitelist: ::1 (rpc-server.c:956)
[2022-05-02 17:28:13.652] RPC Server Serving RPC and Web requests on 127.0.0.1:9091/transmission/(rpc-server.c:1243)
[2022-05-02 17:28:13.652] RPC Server Whitelist enabled (rpc-server.c:1249)
[2022-05-02 17:28:13.652] UDP Failed to set receive buffer: requested 4194304, got 425984 (tr-udp.c:97)
[2022-05-02 17:28:13.653] UDP Please add the line "net.core.rmem_max = 4194304" to /etc/sysctl.conf (tr-udp.c:99)
[2022-05-02 17:28:13.653] UDP Failed to set send buffer: requested 1048576, got 425984 (tr-udp.c:105)
[2022-05-02 17:28:13.653] UDP Please add the line "net.core.wmem_max = 1048576" to /etc/sysctl.conf(tr-udp.c:107)
[2022-05-02 17:28:13.653] DHT Reusing old id (tr-dht.c:383)
[2022-05-02 17:28:13.653] DHT Bootstrapping from 300 IPv4 nodes (tr-dht.c:172)
[2022-05-02 17:28:13.653] Using settings from "/home/<your user>/.config/transmission-daemon" (daemon.c:646)
[2022-05-02 17:28:13.653] Saved "/home/<your user>/.config/transmission-daemon/settings.json" (variant.c:1221)
[2022-05-02 17:28:13.653] Loaded 0 torrents (session.c:2170)
[2022-05-02 17:28:13.653] Port Forwarding (NAT-PMP) initnatpmp succeeded (0) (natpmp.c:73)
[2022-05-02 17:28:13.653] Port Forwarding (NAT-PMP) sendpublicaddressrequest succeeded (2) (natpmp.c:73)
[2022-05-02 17:28:21.655] Port Forwarding State changed from "Not forwarded" to "Starting"(port-forwarding.c:106)
[2022-05-02 17:28:21.655] Port Forwarding State changed from "Starting" to "???" (port-forwarding.c:106)
[2022-05-02 17:28:21.655] web will verify tracker certs using envvar CURL_CA_BUNDLE: none (web.c:455)
[2022-05-02 17:28:21.655] web NB: this only works if you built against libcurl with openssl or gnutls, NOT nss(web.c:457)
[2022-05-02 17:28:21.655] web NB: invalid certs will show up as 'Could not connect to tracker' like many othererrors (web.c:458)
>
```
The daemon forks into the background immediately.
The daemon automatically makes a config file at `.config/transmission-daemon/settings.json`. It can be edited, but the daemon needs to be stopped first, because the daemon automatically overwrites this file when it exits. To stop the daemon:
```
> transmission-remote --exit
localhost:9091/transmission/rpc/ responded: "success"
>
```
Now, the config file can be edited. Some settings to draw your attention to:
```plain:
~/.config/transmission-daemon/settings.json:
-------------------------------------------------------------------------------
{
...
# The default download directory.
"download-dir": "/home/youruser/Downloads",
...
# Reduce the global peer limit if your router is low on memory.
"peer-limit-global": 32,
...
# For manual port forwarding. This controls the TCP and UDP bittorrent ports.
"peer-port": 32768,
...
# Reject RPC commands from anybody except localhost. For untrusted LANs.
"rpc-bind-address": "127.0.0.1",
...
# If there are problems with other internet applications while bittorrent
# is running, you may need to reduce the max upload speed to under 80% of
# your ISP's max upload speed.
"speed-limit-up": 100, # in KB/s
"speed-limit-up-enabled": true,
...
}
```
Once the daemon is configured to your liking, start it back up.
```
> transmission-daemon --logfile ~/.local/log/transmission.log
>
```
Headless Transmission is now configured.
## Usage
To add a torrent:
```
> transmission-remote --add 'magnet:?xt=urn:btih:ff30c7c268f33f35248f05c1c4ffed6752393157&dn=archl
inux-2022.04.05-x86_64.iso'
localhost:9091/transmission/rpc/ responded: "success"
>
```
To list all torrents:
```
> transmission-remote --list
ID Done Have ETA Up Down Ratio Status Name
1 41% 359.8 MB 3 min 0.0 2796.0 0.0 Downloading archlinux-2022.04.05-x86_64.iso
Sum: 359.8 MB
```
For session info:
```
> transmission-remote --session-info
VERSION
Daemon version: 3.00 (bb6b5a062e)
RPC version: 16
RPC minimum version: 1
CONFIG
Configuration directory: /home/<your user>/.config/transmission-daemon
Download directory: /home/<your user>/Downloads
Listenport: 40000
Portforwarding enabled: Yes
uTP enabled: Yes
Distributed hash table enabled: Yes
Local peer discovery enabled: No
Peer exchange allowed: Yes
Encryption: preferred
Maximum memory cache size: 4.00 MiB
LIMITS
Peer limit: 200
Default seed ratio limit: Unlimited
Upload speed limit: Unlimited (Disabled limit: 100 kB/s; Disabled turtle limit: 50 kB/s)
Download speed limit: Unlimited (Disabled limit: 100 kB/s; Disabled turtle limit: 50 kB/s)
MISC
Autostart added torrents: Yes
Delete automatically added torrents: No
>
```
For session stats:
```
> transmission-remote --session-stats
CURRENT SESSION
Uploaded: None
Downloaded: None
Ratio: None
Duration: 11 seconds (11 seconds)
TOTAL
Started 4 times
Uploaded: 4.52 GB
Downloaded: 1.83 GB
Ratio: 2.4
Duration: 3 days, 12 hours (305174 seconds)
>
```
### Selecting torrents
RPCs like `--remove` and `--stop` require a torrent to be specified with `--torrent <ID>`, where `<ID>` refers to a torrent ID in the output of the `--list` RPC. Here's an example of pausing, resuming, and removing a torrent.
```
> transmission-remote --list
ID Done Have ETA Up Down Ratio Status Name
1 100% 959.4 MB Done 0.0 0.0 9.4 Idle Warp Records - Artificial Intelligence (The Series)
2 100% 864.4 MB Done 0.0 0.0 0.7 Idle archlinux-2022.04.05-x86_64.iso
Sum: 1.82 GB 0.0 0.0
> transmission-remote --torrent 2 --stop
localhost:9091/transmission/rpc/ responded: "success"
> transmission-remote --list
ID Done Have ETA Up Down Ratio Status Name
1 100% 959.4 MB Done 0.0 0.0 9.4 Idle Warp Records - Artificial Intelligence (The Series)
2 100% 864.4 MB Done 0.0 0.0 0.7 Stopped archlinux-2022.04.05-x86_64.iso
Sum: 1.82 GB 0.0 0.0
> transmission-remote --torrent 2 --start
localhost:9091/transmission/rpc/ responded: "success"
> transmission-remote --list
ID Done Have ETA Up Down Ratio Status Name
1 100% 959.4 MB Done 0.0 0.0 9.4 Idle Warp Records - Artificial Intelligence (The Series)
2 100% 864.4 MB Done 0.0 0.0 0.7 Idle archlinux-2022.04.05-x86_64.iso
Sum: 1.82 GB 0.0 0.0
> transmission-remote --torrent 2 --remove
localhost:9091/transmission/rpc/ responded: "success"
> transmission-remote --list
ID Done Have ETA Up Down Ratio Status Name
1 100% 959.4 MB Done 0.0 0.0 9.4 Idle Warp Records - Artificial Intelligence (The Series)
Sum: 959.4 MB 0.0 0.0
>
```
### Everything else
For all other RPCs, see the [RPC Specification](rpc-spec.md) page. For more daemon options, see `transmission-daemon`'s man page. For instructions on autostart, i.e. system integration, see your distro's documentation. For most linux distributions, you'll probably want to see systemd's documentation.