# Set Up BitGo Express

Source: https://developers.bitgo.com/docs/oes-partner-set-up-express

## Overview

BitGo <a href="https://hub.docker.com/r/bitgo/express/tags" target="_blank" rel="noreferrer">Express</a> is a light-weight service that runs as a local server daemon in your data center that proxies to our collection of REST APIs. BitGo Express is language agnostic, allowing you the flexibility to choose a language, without having to rewrite any logic.

When you integrate BitGo Express, you can securely run sensitive operations client-side. For example, you can partially sign your transactions before submitting them to BitGo using your own access tokens and wallet keys to prevent exposure risks. Most importantly, your private keys never leave your network and are never seen by BitGo.

Although you can manually develop and deploy the BitGo Express server locally, we recommend running it through our provided Docker container, because this is the most secure way to run the server. We keep our Docker containers up to date, ensuring continuous feature parity with our SDK and REST APIs. When you use Docker, you don't have to upgrade SDK packages directly on your own instance of the server.

## Prerequisites

* Set up <a href="https://www.docker.com/" target="_blank" rel="noreferrer">Docker</a>
* [Create Access Tokens](/docs/get-started-access-tokens)

## 1. Pull the Latest Docker Container

```shell CLI
docker pull --platform linux/amd64 bitgo/express:latest
```

#### Step Result

``` CLI
latest: Pulling from bitgo/express
Digest: sha256:40d6ac...
Status: Image is up to date for bitgo/express:latest
docker.io/bitgo/express:latest
```

## 2. Run the Latest Docker Container

```shell CLI
docker run --platform linux/amd64 -it -p 3080:3080 bitgo/express:latest
```

#### Step Result

``` CLI
...
BitGo-Express running
Environment: test
Base URI: http://0.0.0.0:3080
```

## 3. (Optional) Ping BitGo Express

```shell CLI
curl localhost:3080/api/v2/ping
```

#### Step Result

``` CLI
# {"status":"service is ok!","environment":"BitGo Testnet","configEnv":"testnet","configVersion":79}
```

## 4. (Optional) Send Command-Line Arguments to BitGo Express

```shell CLI
docker run --platform linux/amd64 -it -p 4000:4000 bitgo/express:latest --port 4000
```

#### Step Result

BitGo Express starts on the specified port, 4000.

``` CLI
...
BitGo-Express running
Environment: test
Base URI: http://0.0.0.0:4000
```

## Next

Get started making Express calls in the testnet environment. For more details, see [Wallets Overview](/docs/wallets-overview).

If you're ready to use BitGo Express in production, see [Run Express in Production](/docs/get-started-express-production).

## See also

* <a href="https://hub.docker.com/r/bitgo/express/tags" target="_blank" rel="noreferrer">Docker Hub: bitgo/express</a>
* [Reference Configuration Parameters](/docs/get-started-express-reference)
