> ## Documentation Index
> Fetch the complete documentation index at: https://openops-ecb4f397-mintlify-helm-chart-documentation-30057.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Local Deployment

> Deploy OpenOps on your local machine

This guide explains how to install the OpenOps docker-compose release on a local machine. Note that these settings are for testing purposes only and not for a production environment.

Before following the instructions, make sure that your machine meets the [system requirements](/getting-started/system-requirements) for OpenOps.

## Installing OpenOps

Run the following command in your terminal to install, update, configure and run OpenOps:

```shell
curl -fsS https://openops.sh/install | sh
```

This script supports macOS, Ubuntu and Windows (via WSL2 Ubuntu).

If you can't use the autoinstall script, follow the manual installation steps for your operating system below.

<Expandable title="Installing manually on macOS">
  ### On macOS

  1. Install Docker Desktop by following [these instructions](https://docs.docker.com/desktop/setup/install/mac-install/).
  2. Open a new terminal window and run the following command to create a folder and download the OpenOps release files:
     ```shell
     mkdir -p openops && cd openops && \
     curl -OL https://github.com/openops-cloud/openops/releases/download/0.5.2/openops-dc-0.5.2.zip && \
     unzip openops-dc-0.5.2.zip && cp -n .env.defaults .env
     ```
  3. Open the `.env` file in the OpenOps installation folder. Change the values of the following variables that represent credentials. Do it now, as you won't be able to change these values after the initial deployment:
     * `OPS_OPENOPS_ADMIN_EMAIL`: the email of your OpenOps installation's root admin account.
     * `OPS_OPENOPS_ADMIN_PASSWORD`: the password of your OpenOps installation's root admin account.
     * `OPS_POSTGRES_USERNAME`: the username of the Postgres database that OpenOps uses.
     * `OPS_POSTGRES_PASSWORD`: the password of the Postgres database that OpenOps uses.
     * `OPS_ANALYTICS_ADMIN_PASSWORD`: the password of the [OpenOps Analytics](/reporting-analytics/data-visualization/) admin account (the username is hardcoded to `admin`).
  4. Pull the images and run `docker compose`:
     ```shell
     COMPOSE_PARALLEL_LIMIT=4 docker compose pull
     docker compose up -d
     ```
     If you face a rate limit while downloading, run the command again.

  You can now access the application by navigating to [http://localhost](http://localhost).
</Expandable>

<Expandable title="Installing manually on Ubuntu Server">
  ### On Ubuntu Server

  <Note>This procedure has been tested on Ubuntu Server 24.04.</Note>

  1. During the Ubuntu Server installation, select Docker to be added to the installation. If you need to install Docker later, follow the instructions [here](https://docs.docker.com/engine/install/ubuntu/).
  2. Log in to your server and run the following commands to create a folder and download the OpenOps release files:
     ```shell
     # create and change directory
     mkdir -p openops && cd openops
     # download the release file
     curl -OL https://github.com/openops-cloud/openops/releases/download/0.5.2/openops-dc-0.5.2.zip
     # refresh package lists
     sudo apt update
     # install unzip
     sudo apt install unzip
     # decompress release file
     unzip openops-dc-0.5.2.zip
     # copy the defaults to env without overwriting existing files
     cp --update=none .env.defaults .env
     ```
  3. Identify your own IP address:
     ```shell
     # find IP address
     ip -o -4 addr show | awk '{print $2, $4}'
     ```
     The output should look something like this:
     ```shell
     lo 127.0.0.1/8 # loopback network interface - not here
     enp1s0 192.168.1.50/24 # this looks more like it. We want this inet IP address without the subnet mask: 192.168.1.50
     docker0 172.17.0.1/16 # docker network interface - not here
     ```
     In this case, the IP address is `192.168.1.50`.
  4. Open the `.env` file in the OpenOps installation folder. Change the values of the following variables that represent credentials. Do it now, as you won't be able to change these values after the initial deployment:
     * `OPS_OPENOPS_ADMIN_EMAIL`: the email of your OpenOps installation's root admin account.
     * `OPS_OPENOPS_ADMIN_PASSWORD`: the password of your OpenOps installation's root admin account.
     * `OPS_POSTGRES_USERNAME`: the username of the Postgres database that OpenOps uses.
     * `OPS_POSTGRES_PASSWORD`: the password of the Postgres database that OpenOps uses.
     * `OPS_ANALYTICS_ADMIN_PASSWORD`: the password of the [OpenOps Analytics](/reporting-analytics/data-visualization/) admin account (the username is hardcoded to `admin`).
  5. In the `.env` file, find the `OPS_PUBLIC_URL` variable and replace its value, `http://localhost`, with the IP address that you've previously identified. In our example, the IP address would be `http://192.168.1.50`.
  6. Pull the images and run `docker compose`:
     ```shell
     # download the docker volumes and images
     COMPOSE_PARALLEL_LIMIT=4 sudo docker compose pull
     # launch the application
     sudo docker compose up -d
     ```
     If you face a rate limit while downloading, run the command again.
</Expandable>

<Expandable title="Installing manually on Windows">
  ### On Windows (with PowerShell)

  1. Install Docker Desktop by following [these instructions](https://docs.docker.com/desktop/setup/install/windows-install/).
  2. Add a new folder for OpenOps in your PowerShell console:
     ```powershell
     New-Item -ItemType Directory -Force -Path openops
     Set-Location openops
     ```
  3. Download the OpenOps release files:
     ```powershell
     Invoke-WebRequest -Uri "https://github.com/openops-cloud/openops/releases/download/0.5.2/openops-dc-0.5.2.zip"
     Expand-Archive -Path "openops-dc-0.5.2.zip" -DestinationPath .
     if (-Not (Test-Path ".env")) {
         Copy-Item ".env.defaults" ".env"
     }
     ```
  4. Open the `.env` file in the OpenOps installation folder. Change the values of the following variables that represent credentials. Do it now, as you won't be able to change these values after the initial deployment:
     * `OPS_OPENOPS_ADMIN_EMAIL`: the email of your OpenOps installation's root admin account.
     * `OPS_OPENOPS_ADMIN_PASSWORD`: the password of your OpenOps installation's root admin account.
     * `OPS_POSTGRES_USERNAME`: the username of the Postgres database that OpenOps uses.
     * `OPS_POSTGRES_PASSWORD`: the password of the Postgres database that OpenOps uses.
     * `OPS_ANALYTICS_ADMIN_PASSWORD`: the password of the [OpenOps Analytics](/reporting-analytics/data-visualization/) admin account (the username is hardcoded to `admin`).
  5. Run `docker compose`:
     ```powershell
     $env:COMPOSE_PARALLEL_LIMIT = "4"
     docker compose pull
     docker compose up -d
     ```
     If you face a rate limit while downloading, run the command again.
</Expandable>

## Updating OpenOps to a newer version

See [Updating OpenOps](/getting-started/updating-openops).

## Cloud templates

On localhost, cloud templates may not be able to load when using the Safari browser.

## Configuring Slack approvals

If you would like to run a workflow that uses Slack approvals in a local installation, you should set the following variable in your `.env` file:

```shell
OPS_SLACK_ENABLE_INTERACTIONS=false
```

<Note>This will open a new tab in your default browser when you approve or reject an action. You can safely close the tab after the action is completed.</Note>

After updating your `.env` file, restart the containers:

```shell
sudo docker compose down && docker compose up -d
```

## Using Azure CLI in workflows: running with local credentials

It is possible to share your local session with the platform for local applications.
To do this, you need to set two environment variables in the `.env` file under the installation folder:

* `OPS_ENABLE_HOST_SESSION=true`: enables sharing of the host session with the platform container.
* `HOST_AZURE_CONFIG_DIR="~/.azure"`: defines the path to the host machine's Azure configuration folder that will be shared with the platform container.

## Support

Feel free to join our [Slack community](https://slack.openops.com) if you have any questions or need help with the installation.
