{"id":6372,"date":"2026-03-19T10:45:43","date_gmt":"2026-03-19T09:45:43","guid":{"rendered":"http:\/\/miro.borodziuk.eu\/?p=6372"},"modified":"2026-08-19T10:48:28","modified_gmt":"2026-08-19T08:48:28","slug":"how-to-install-transmission-daemon-on-debian","status":"publish","type":"post","link":"http:\/\/miro.borodziuk.eu\/index.php\/2026\/03\/19\/how-to-install-transmission-daemon-on-debian\/","title":{"rendered":"How to install transmission daemon on debian"},"content":{"rendered":"<div data-sfc-cp=\"\" data-sfc-root=\"ep\">To install Transmission on Debian, update your package list and enter <code dir=\"ltr\" data-sfc-root=\"ep\">sudo apt install transmission-gtk<!--TgQPHd|||[]--><\/code> (for the GNOME graphical user interface version) or <code dir=\"ltr\" data-sfc-root=\"ep\">sudo apt install transmission-daemon<!--TgQPHd|||[]--><\/code> (for the server version running in the background) in your terminal.<!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\"><\/div>\n<p><!--more--><\/p>\n<h2 role=\"heading\" data-sfc-cp=\"\" data-sfc-root=\"ep\">Choosing the Program Version<!--TgQPHd|||[]--><\/h2>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">\n<div><\/div>\n<ul>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\">Graphical Version (GTK):<!--TgQPHd|||[]--><\/span> Good for regular use on a desktop computer.<!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\">Server Version (Daemon):<!--TgQPHd|||[]--><\/span> Good for a server, controlled via a web browser.<!--TgQPHd|||[]--><\/li>\n<\/ul>\n<p><!--TgQPHd|||[]--><\/div>\n<h2 role=\"heading\" data-sfc-cp=\"\" data-sfc-root=\"ep\">Installing the Graphical Version<!--TgQPHd|||[]--><\/h2>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">\n<div><\/div>\n<ul>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\">Open the terminal.<!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\">Type <code dir=\"ltr\" data-sfc-root=\"ep\">sudo apt update<!--TgQPHd|||[]--><\/code>.<!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\">Type <code dir=\"ltr\" data-sfc-root=\"ep\">sudo apt install transmission-gtk<!--TgQPHd|||[]--><\/code>.<!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\">Confirm by pressing Enter.<!--TgQPHd|||[]--><\/li>\n<\/ul>\n<p><!--TgQPHd|||[]--><\/div>\n<h2 role=\"heading\" data-sfc-cp=\"\" data-sfc-root=\"ep\">Installing the Server Version (Daemon)<!--TgQPHd|||[]--><\/h2>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">\n<div><\/div>\n<ul>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\">Type <code dir=\"ltr\" data-sfc-root=\"ep\">sudo apt update<!--TgQPHd|||[]--><\/code>.<!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\">Type <code dir=\"ltr\" data-sfc-root=\"ep\">sudo apt install transmission-daemon<!--TgQPHd|||[]--><\/code>.<!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\">Stop the service before editing settings: <code dir=\"ltr\" data-sfc-root=\"ep\">sudo systemctl stop transmission-daemon<!--TgQPHd|||[]--><\/code>.<!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\">Edit the configuration file: <code dir=\"ltr\" data-sfc-root=\"ep\">sudo nano \/etc\/transmission-daemon\/settings.json<!--TgQPHd|||[]--><\/code>.<!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\">Enable and start the service: <code dir=\"ltr\" data-sfc-root=\"ep\">sudo systemctl enable --now transmission-daemon<!--TgQPHd|||[]--><\/code>.<!--TgQPHd|||[]--><\/li>\n<\/ul>\n<p><!--TgQPHd|||[]--><\/div>\n<hr data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" \/>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\"><!--TgQPHd|||[]--><\/span><br data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" \/>To allow an external graphical interface (such as <span data-sfc-cp=\"\" data-sfc-root=\"ep\">Transmission Remote GUI<!--TgQPHd|||[]--><\/span>, <span data-sfc-cp=\"\" data-sfc-root=\"ep\">Tremotesf<!--TgQPHd|||[]--><\/span>, or a web browser) to connect to the daemon on <a href=\"https:\/\/wiki.debian.org\/Transmission\" data-sfc-cp=\"\" data-sfc-root=\"ep\">Debian<!--TgQPHd|||[]--><\/a>, you need to modify the <span data-sfc-cp=\"\" data-sfc-root=\"ep\">RPC<!--TgQPHd|||[]--><\/span> parameters in the <code dir=\"ltr\" data-sfc-root=\"ep\">settings.json<!--TgQPHd|||[]--><\/code> configuration file.<!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">Before opening the file, <span data-sfc-cp=\"\" data-sfc-root=\"ep\">always stop the service first<!--TgQPHd|||[]--><\/span>, otherwise the system will overwrite your changes:<!--TgQPHd|||[]--><\/div>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-bash\">sudo systemctl stop transmission-daemon\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">Open the configuration file (default path in Debian is <code dir=\"ltr\" data-sfc-root=\"ep\">\/etc\/transmission-daemon\/settings.json<!--TgQPHd|||[]--><\/code>):<!--TgQPHd|||[]--><\/div>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-bash\">sudo nano \/etc\/transmission-daemon\/settings.json\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<h2 role=\"heading\" data-sfc-cp=\"\" data-sfc-root=\"ep\">Key Options to Change in the JSON File<!--TgQPHd|||[]--><\/h2>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">Find and configure the following lines (remember the commas at the end of the lines if they are followed by other parameters):<!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">\n<div><\/div>\n<ol>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\">Enable Remote Control (RPC):<!--TgQPHd|||[]--><\/span>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-json\">\"rpc-enabled\": true,\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<p><!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\">Listen on All IP Addresses<!--TgQPHd|||[]--><\/span> (instead of just the local <code dir=\"ltr\" data-sfc-root=\"ep\">127.0.0.1<!--TgQPHd|||[]--><\/code>):\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-json\">\"rpc-bind-address\": \"0.0.0.0\",\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<p><!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\">Configure IP Address Whitelist (Access):<!--TgQPHd|||[]--><\/span><br data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" \/>You can completely disable the IP lock (less secure) or provide your local network mask:\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">\n<div><\/div>\n<ul>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><em data-sfc-root=\"ep\">Option A (Secure \u2013 Recommended):<!--TgQPHd|||[]--><\/em> Allow connections from the local network (e.g., <code dir=\"ltr\" data-sfc-root=\"ep\">192.168.1.*<!--TgQPHd|||[]--><\/code> or <code dir=\"ltr\" data-sfc-root=\"ep\">192.168.0.*<!--TgQPHd|||[]--><\/code>):\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-json\">\"rpc-whitelist-enabled\": true,\r\n\"rpc-whitelist\": \"127.0.0.1,192.168.1.*\",\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<p><!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><em data-sfc-root=\"ep\">Option B (Less Secure):<!--TgQPHd|||[]--><\/em> Completely disable IP filtering (any IP address will be able to connect):\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-json\">\"rpc-whitelist-enabled\": false,\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<p><!--TgQPHd|||[]--><\/li>\n<\/ul>\n<p><!--TgQPHd|||[]--><\/div>\n<p><!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\">Enable Authentication and Change Password:<!--TgQPHd|||[]--><\/span><br data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" \/>For security, require a login. Type your password in plain text \u2013 Transmission will automatically encrypt it after it starts:\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-json\">\"rpc-authentication-required\": true,\r\n\"rpc-username\": \"your_username\",\r\n\"rpc-password\": \"your_secure_password\",\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<p><!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\">Communication Port (Default 9091):<!--TgQPHd|||[]--><\/span>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-json\">\"rpc-port\": 9091,\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<p><!--TgQPHd|||[]--><\/li>\n<\/ol>\n<p><!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">After editing, save the file (<code dir=\"ltr\" data-sfc-root=\"ep\">Ctrl + O<!--TgQPHd|||[]--><\/code>, then <code dir=\"ltr\" data-sfc-root=\"ep\">Enter<!--TgQPHd|||[]--><\/code>) and close the editor (<code dir=\"ltr\" data-sfc-root=\"ep\">Ctrl + X<!--TgQPHd|||[]--><\/code>).<!--TgQPHd|||[]--><\/div>\n<h2 role=\"heading\" data-sfc-cp=\"\" data-sfc-root=\"ep\">Starting the Service and Firewall Configuration<!--TgQPHd|||[]--><\/h2>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">Restart the daemon:<!--TgQPHd|||[]--><\/div>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-bash\">sudo systemctl start transmission-daemon\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">If a firewall (like <span data-sfc-cp=\"\" data-sfc-root=\"ep\">UFW<!--TgQPHd|||[]--><\/span>) is running on your Debian server, you must open port <code dir=\"ltr\" data-sfc-root=\"ep\">9091<!--TgQPHd|||[]--><\/code> for incoming traffic:<!--TgQPHd|||[]--><\/div>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-bash\">sudo ufw allow 9091\/tcp\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">In your remote GUI program, enter the <span data-sfc-cp=\"\" data-sfc-root=\"ep\">Debian IP address<!--TgQPHd|||[]--><\/span>, port <span data-sfc-cp=\"\" data-sfc-root=\"ep\">9091<!--TgQPHd|||[]--><\/span>, and the <span data-sfc-cp=\"\" data-sfc-root=\"ep\">username and password<!--TgQPHd|||[]--><\/span> you defined.<!--TgQPHd|||[]--><\/div>\n<hr data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" \/>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\"><!--TgQPHd|||[]--><\/span><br data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" \/>To change the download directory in Transmission, you need to modify two parameters in the configuration file: the default save path and the path for temporary files (in-progress downloads).<!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">Before making any changes, remember to <span data-sfc-cp=\"\" data-sfc-root=\"ep\">stop the daemon<!--TgQPHd|||[]--><\/span> so the system does not overwrite the file:<!--TgQPHd|||[]--><\/div>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-bash\">sudo systemctl stop transmission-daemon\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">Then, open the configuration file for editing:<!--TgQPHd|||[]--><\/div>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-bash\">sudo nano \/etc\/transmission-daemon\/settings.json\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<h2 role=\"heading\" data-sfc-cp=\"\" data-sfc-root=\"ep\">Key Options to Change in the JSON File<!--TgQPHd|||[]--><\/h2>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">Find and change the following parameters to your own paths (e.g., to an external drive or a different folder):<!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">\n<div><\/div>\n<ol>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\">Main Directory for Completed Downloads:<!--TgQPHd|||[]--><\/span>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-json\">\"download-dir\": \"\/path\/to\/your\/folder\/downloads\",\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<p><!--TgQPHd|||[]--><\/li>\n<li data-sfc-cp=\"\" data-sfc-root=\"ep\"><span data-sfc-cp=\"\" data-sfc-root=\"ep\">Directory for In-Progress Downloads (Optional):<!--TgQPHd|||[]--><\/span><br data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" \/>If you want unfinished files to be in a separate location, set:\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-json\">\"incomplete-dir\": \"\/path\/to\/your\/folder\/temporary\",\r\n\"incomplete-dir-enabled\": true,\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<p><em data-sfc-root=\"ep\">If you prefer files to download directly to their final destination from the start, set <code dir=\"ltr\" data-sfc-root=\"ep\">\"incomplete-dir-enabled\": false<!--TgQPHd|||[]--><\/code>.<!--TgQPHd|||[]--><\/em><!--TgQPHd|||[]--><\/li>\n<\/ol>\n<p><!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">Save the file (<code dir=\"ltr\" data-sfc-root=\"ep\">Ctrl + O<!--TgQPHd|||[]--><\/code>, <code dir=\"ltr\" data-sfc-root=\"ep\">Enter<!--TgQPHd|||[]--><\/code>) and close it (<code dir=\"ltr\" data-sfc-root=\"ep\">Ctrl + X<!--TgQPHd|||[]--><\/code>).<!--TgQPHd|||[]--><\/div>\n<h2 role=\"heading\" data-sfc-cp=\"\" data-sfc-root=\"ep\">Very Important: Folder Permissions<!--TgQPHd|||[]--><\/h2>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">Transmission runs in the system as a user named <code dir=\"ltr\" data-sfc-root=\"ep\">debian-transmission<!--TgQPHd|||[]--><\/code>. If this user does not have write permissions to the new folder, downloads will fail with a <span data-sfc-cp=\"\" data-sfc-root=\"ep\">Permission Denied<!--TgQPHd|||[]--><\/span> error.<!--TgQPHd|||[]--><\/div>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">You must grant permissions to the new directory. Type in the terminal:<!--TgQPHd|||[]--><\/div>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-bash\">sudo chown -R debian-transmission:debian-transmission \/path\/to\/your\/folder\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<h2 role=\"heading\" data-sfc-cp=\"\" data-sfc-root=\"ep\">Starting the Daemon<!--TgQPHd|||[]--><\/h2>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">After setting the permissions, restart the service:<!--TgQPHd|||[]--><\/div>\n<div dir=\"ltr\" data-sfc-root=\"ep\">\n<pre><code class=\"language-bash\">sudo systemctl start transmission-daemon\r\n<\/code><\/pre>\n<p><!--TgQPHd|||[]--><\/div>\n<hr data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" \/>\n<div data-sfc-cp=\"\" data-sfc-root=\"ep\">Would you like to <span data-sfc-cp=\"\" data-sfc-root=\"ep\">continue configuring Transmission in English<!--TgQPHd|||[]--><\/span>, or do you prefer to <span data-sfc-cp=\"\" data-sfc-root=\"ep\">switch back to Polish<!--TgQPHd|||[]--><\/span> for the next steps?<!--TgQPHd|||[]--><\/div>\n<div data-sfc-root=\"ep\">\n<!--TgQPHd|||[]--><\/div>\n<div data-sfc-root=\"ep\"><!--TgQPHd|||[]--><\/div>\n<div data-sfc-root=\"ep\"><!--TgQPHd|||[]--><\/div>\n","protected":false},"excerpt":{"rendered":"<p>To install Transmission on Debian, update your package list and enter sudo apt install transmission-gtk (for the GNOME graphical user interface version) or sudo apt install transmission-daemon (for the server version running in the background) in your terminal.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,11],"tags":[],"_links":{"self":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/6372"}],"collection":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/comments?post=6372"}],"version-history":[{"count":1,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/6372\/revisions"}],"predecessor-version":[{"id":6373,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/6372\/revisions\/6373"}],"wp:attachment":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media?parent=6372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/categories?post=6372"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/tags?post=6372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}