# Installing on Linux

> Docker-based installation of UiPath Robot on Linux, covering image tags, Linux automation particularities, and docker run parameters.

Installing Robots on Linux requires a Docker environment, a network connection to Orchestrator, and the client credentials of the machine template.

The Linux Robot image runs RPA processes and test cases from cross-platform projects. Running agents, functions, and API workflows on Linux robots is planned.

The image is for x64 (amd64) hosts only.

## The Docker image tag

To install the Docker image of a specific Robot version, mention the tag. To install the latest patch available, do not mention a tag. The command to download the Docker image is:

```
docker pull uipathprod.azurecr.io/robot/uiautomation-runtime:<tag>
```

## Linux automations - particularities

* To create automations for Linux, ensure you have Chrome extension version 2021.10.4 or later. This allows the robot to execute background and foreground automations.
* To design a UI automation for Linux, you can select the following input methods for activities:
  + ChromiumAPI: The default input mode that lets robots interact directly with Chrome elements.
  + SimulateClick/SimulateType: Simulates user actions like clicking or typing on a webpage.
* You can also use the following tools:
  + Web Recorder: Replicates a series of actions on a webpage that a robot can replay.
  + Table Extraction: A tool to facilitate data extraction from web tables.

## Parameters for the `docker run` command

The following list summarizes the parameters used by the `docker run` command. Use this command to start the Docker image.

* `LICENSE_AGREEMENT=accept` - Accepts the [UiPath license agreement](https://www.uipath.com/developers/all-editions/license-agreement).
* `ORCHESTRATOR_URL="https://cloud.uipath.com/organization/tenant/orchestrator_"` - Sets the URL of the Orchestrator instance where your robots should connect.
* `CLIENT_ID="$Client_ID"` and `CLIENT_SECRET="$Client_secret"` - Set the client ID and client secret of the machine template.
* `MACHINE_KEY="$KEY"` - Deprecated. Connects with the key of the machine template instead of the client ID and client secret. Don't combine it with them. Use client credentials instead.
* `VNC_ENABLED=true` - Optional. Enables the live streaming of the Robot execution on Linux through Virtual Networking Computing (VNC). Requires publishing port `5900` to the host, for example `-p 50000:5900`, to access the VNC server.
  :::important
  After enabling the VNC server, use any VNC client to live stream the robot execution.
  :::

The following examples show how to run the `docker run` command:

* Using the client ID and client secret:
  ```
  docker run -e LICENSE_AGREEMENT=accept -e ORCHESTRATOR_URL="https://cloud.uipath.com/organization/tenant/orchestrator_" -e CLIENT_ID="$Client_ID" -e CLIENT_SECRET="$Client_secret" -tid uipathprod.azurecr.io/robot/uiautomation-runtime:<tag>
  ```
* With `VNC_ENABLED=true`:
  ```
  docker run -e LICENSE_AGREEMENT=accept -e
  ORCHESTRATOR_URL="{orchestrator url}" -e CLIENT_ID="$Client_ID" -e CLIENT_SECRET="$Client_secret" -p 50000:5900 --env VNC_ENABLED=true uipathprod.azurecr.io/robot/uiautomation-runtime:<tag>
  ```

## Orchestrator connection failure

Firewall rules might block the connection to Orchestrator. To address this, specify a DNS server in the `docker run` command. For example:

```
docker run --dns="1.1.1.1" -e LICENSE_AGREEMENT=accept -e ORCHESTRATOR_URL="https://cloud.uipath.com/organization/tenant/orchestrator_" -e CLIENT_ID="$Client_ID" -e CLIENT_SECRET="$Client_secret" -tid uipathprod.azurecr.io/robot/uiautomation-runtime:<tag>
```

The value `--dns="1.1.1.1"` represents the public DNS resolver from Cloudflare. You can use any DNS resolver to redirect the SignalR Hub.

## Configuring package feeds

Automations on Linux require certain libraries, which are stored in the `/home/robotuser/.nuget/Packages/` directory of a docker container. To configure this, you need to mount the directory containing the NuGet libraries. Add the following flag to the docker run command: `-v <path to packages on the host machine>:/home/robotuser/.nuget/Packages/`.

For example:

```
docker run -e LICENSE_AGREEMENT=accept -e CLIENT_ID="$Client_ID" -e CLIENT_SECRET="$Client_secret" -e ORCHESTRATOR_URL="https://cloud.uipath.com/organization/tenant/orchestrator_" -v <path to packages on the host machine>:/home/robotuser/.nuget/Packages -ti uipathprod.azurecr.io/robot/uiautomation-runtime
```

:::important
Make sure that the robot Linux user (UID1000) has read access to the mounted path leading to the package feeds.
:::

## Remote debugging

To debug a running robot container, use the [Remote Debugging feature](https://docs.uipath.com/studio/standalone/latest/user-guide/remote-debugging).
