= Thin Client = [[PageOutline(2-4,,inline)]] Deluge can be setup in such a way that a Deluge daemon, `deluged`, can be setup on a central computer, `server`, which can then be accessed and controlled by other computers, `clients`, using one of Deluge's UIs. * Both the Deluge client and daemon need to be the same major versions, i.e. both `1.2.x` or both `1.3.x`. == Deluge Daemon Setup == The Deluge daemon `deluged` and `deluge-console` should be [wiki:Installing installed] on the server. See the [UserGuide/Service service guides] to run `deluged` as a service so that it starts/stops on server boot/shutdown. Substitute any daemon start or stop commands below with the appropriate service commands. To debug any problems setting up `deluged` [wiki:Faq#HowdoIstartthedaemonwithloggingenabled enable logging] and check for errors. === Create Default Config === To create the config directory and populate with the default files, run and then stop `deluged`. ''(If using a service substitute appropriate operating system commands)'': {{{ #!sh deluged killall deluged }}} ''Note: The config location is either the [wiki:Faq#WheredoesDelugestoreitssettingsconfig default location] with reference to the `user` that `deluged` is running as. Alternatively if using a service it will be specified in the service config files with `-c ` option.'' === Add User to the authentication file === Create a Deluge user for clients/UIs to access the daemon by editing the authentication file, `auth`, located in the above config location. The `auth` file should consist of lines of `::`. Replace and with your choice and with the desired [UserGuide/Authentication authentication level]. You can use your favourite text editor to achieve this or can be done with a one-line echo command e.g.: {{{ #!sh echo "alice:MyC0mpL3xPass:10" >> ~/.config/deluge/auth }}} === Enable Remote Connection === We will use `deluge-console` to configure `deluged` to accept connections from computers other than `localhost`. For `SSH Tunnelling` you do not need to enable remote connections so this step can be skipped. Using the Console in command-line mode, set the `allow_remote` option and then verify with these commands: {{{ #!sh deluge-console "config -s allow_remote True" deluge-console "config allow_remote" }}} If you are running `deluged` under another user (e.g. `deluge`) you will need to temporarily login as that user to enable deluge-console to access that daemon's config: {{{ #!sh su --shell /bin/bash --login deluge }}} Alternatively you can edit `core.conf` (`deluged` must not be running) in the config and change `allow_remote` from `false` to `true`. === Start Deluge Daemon === {{{ deluged }}} === Verify Server IP Address === You will need to know the server's IP address for configuring clients, for private IP: `hostname -I` or public IP: `curl ifconfig.me` Congratulations! The server is now setup for remote client access. ------- == Client Setup == === Accessing deluged service with local UI Client === If you are attempting to access a daemon `deluged` on the same machine but they are running as different users. e.g. your login user is `user` and the daemon is running as `deluge` they are likely using different config locations. This will prevent accessing the daemon because when both client and daemon are localhost, they attempt to automatically authorise using the config auth files, which are assumed to be at the same location. The workaround is to replace the `localclient` line in your user config `auth` file with the `localclient` line from the `deluged` config `auth` file . === GTK UI === The Deluge GTK UI setup require switching the GTK UI from Classic mode to Thin-client mode, then adding and connecting to the remote daemon on the server. 1. In `Preferences -> Interface` and disable (untick) `Classic Mode` 1. Restart `deluge` and you should see the `Connection Manager`. * If it is not needed you can remove the `localhost` daemon. * If SSH Tunnelling, before continuing [UserGuide/ThinClient#CreateSSHTunnel Create SSH Tunnel], and for `Hostname`, below, `127.0.0.2` ''must'' be used. 1. Create a new entry with `Add` button: * `Hostname` is your server's IP. * `Port` should be default `58846`. * `Username` and `Password` are those added to the `deluged` config `auth` file. If this was successful a green tick should now appear as the status for the daemon you just added. Click on `Connect` and the Connection Manager should disappear. ''Optional step:'' Expand `Options` and select '`Automatically connect to selected host on startup`' and '`Do not show this dialog on start-up`'. Congratulations! You can now access the Deluge daemon, `deluged`, on the server via the GTK UI. === Console === If accessing a local `deluged` daemon run the following and it will connect automatically: {{{ deluge-console }}} To connect to a remote daemon use the `connect` command in deluge-console: {{{ connect [:] }}} or from the terminal: {{{ deluge-console "connect [:] " }}} === Web UI === The Web UI is slightly different as the `client` is a web server daemon `deluge-web` that connects to a running `deluged`. 1. [wiki:Installing Install ] `deluge-web` and run it: {{{ #!sh deluge-web }}} Note: To run it in the background as a daemon, use `--fork` option. You may also want to set it up as a [UserGuide/InitScript service]. In your web browser, enter the url below where is the IP address of the server: {{{ http://:8112 }}} * Default password is: `deluge` Congratulations! You can now access deluge on the server via the Web UI. ---------- == Create SSH Tunnel == From Deluge 1.2 onwards, all communication between the GTK UI and daemon is encrypted so SSH tunnelling is not a requirement. In a Terminal, enter the following, replacing `` with the public IP of your server. {{{ #!sh ssh -fNL 127.0.0.2:58846:localhost:58846 }}} Note: We use `127.0.0.2` instead of `localhost` so that Deluge client knows that we are connecting to a remote daemon. Otherwise you will encounter problems with file browsing as it will assume to be on local client machine rather than remote server. If you get the error '`bind: Can't assign requested address`', you need to add `127.0.0.2` as an alias for the loopback device: {{{ #!sh sudo ifconfig lo0 add 127.0.0.2 }}}