> ## Documentation Index
> Fetch the complete documentation index at: https://developer.copper.co/llms.txt
> Use this file to discover all available pages before exploring further.

# How to launch

<Accordion title="Software requirements" icon="gear">
  Copper Unlimited Online is a Docker image based on `debian:10.5-slim` and uses <a href="https://docs.docker.com/compose/" target="_blank">Docker
  Compose</a> and the **NodeJS daemon** for its operation.

  The image is publicly available on <a href="https://hub.docker.com/r/copperexchange/copper-unlimited" target="_blank">Copper
  DockerHub</a>.

  Network characteristics of the image:

  * listens to port 3010 for incoming data and 443 for outgoing calls;
  * connects with the Copper API, depending on the chosen `APP_ENVIRONMENT`;
  * supports SSL/TLS. To enable encryption, see the **Enabling SSL/TLS** section below.
</Accordion>

<Steps>
  <Step title="Export shards">
    Export shards of your key from the CU Desktop application via the wallet backup function: click the drop-down menu in the top right
    corner of the window and choose the **Backup** option. During the export process, CU Desktop will ask for a password to encrypt each
    shard of the wallet. This will prevent accessing the shard data in case a potential attacker gains access to the filesystem.
    Choose a preferred folder to save the `*.copper` file containing the wallet shards.
  </Step>

  <Step title="Prepare the environment">
    Before running, specify the following fields:

    * a path to your folder with the `*.copper` file.
    * a port that CU Online endpoints will listen to. There is an option to pass the `APP_PORT` environmental variable to specify a port
      within the container.
    * the required environment set by the `APP_ENVIRONMENT` environment variable. The choice depends on the platform you are going to
      operate
      on. The `APP_NETWORK` variable is determined automatically and can be omitted. However, if `APP_NETWORK` is specified, it must match
      the
      table below. The environment is set as follows:

    | APP\_ENVIRONMENT | APP\_NETWORK | Environment                 |
    | :--------------- | :----------- | :-------------------------- |
    | `prod`           | `mainnet`    | copper.co                   |
    | `mainnet`        | `mainnet`    | copper.co                   |
    | `stage`          | `mainnet`    | demo.copper.co              |
    | `demo`           | `mainnet`    | demo.copper.co              |
    | `testnet`        | `testnet`    | testnet.copper.co (default) |
  </Step>

  <Step title="Launch the Copper Unlimited Online server">
    To launch the server, use the command below (for any docker run command reference, see the <a href="https://docs.docker.com/engine/reference/run/" target="_blank">official Docker documentation</a>).

    ```shell theme={"system"}
    docker run --rm -ti \
      -v ${PWD}/key-backups/:/app/keys/ \
      -e APP_ENVIRONMENT='testnet' \
      -p your_port_for_cu_online:3010 \
      copperexchange/copper-unlimited:latest

    # ${PWD}/key-backups/ is the folder containing the wallet backup.
    # The APP_ENVIRONMENT variable can be 'testnet', 'stage', 'prod', 'demo' or 'mainnet' (see details above).
    ```
  </Step>

  <Step title="Sign">
    As everything is set up, you can start signing transactions. The next steps explain how to create a withdrawal order using the
    Copper Platform API and sign it using Copper Unlimited Online.
  </Step>
</Steps>
