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

# Installation

> Multiple ways to install and run Flipt v2 on your own infrastructure

Flipt v2 is a single binary that can be run on any Linux or macOS host.

You can install and try out Flipt v2 in a few different ways:

<CodeGroup>
  ```console Docker theme={null}
  docker run -d \
      -p 8080:8080 \
      -p 9000:9000 \
      -v $HOME/flipt:/var/opt/flipt \
      docker.flipt.io/flipt/flipt:v2
  ```

  ```console Binary theme={null}
  curl -fsSL https://get.flipt.io/v2 | sh
  ```

  ```console Kubernetes/Helm theme={null}
  helm repo add flipt https://helm.flipt.io
  helm install my-flipt-v2 flipt/flipt-v2
  ```

  ```console Homebrew theme={null}
  brew install flipt-io/brew/flipt@2
  ```
</CodeGroup>

For more details on each installation method, see the sections below.

* [Docker](#docker)
* [Binary](#binary)
* [Kubernetes/Helm](#kubernetes%2Fhelm)
* [Homebrew](#homebrew)

## Supported Architectures

Flipt v2 is built for the following architectures/os:

* **x86-64** / **Linux**
* **ARM64** / **Linux**
* **x86-64** / **Darwin/MacOS**
* **ARM64** / **Darwin/MacOS**

You can find the binaries for each architecture in the [Latest Release](https://github.com/flipt-io/flipt/releases/latest) assets section on GitHub.

The [Docker image](https://hub.docker.com/r/flipt/flipt/tags) for Flipt v2 is multi-arch and supports both **x86-64** and **ARM64** architectures on **Linux**.

If you need a different architecture, please open an issue on the [GitHub repository](https://github.com/flipt-io/flipt/issues) and we will try to accommodate your request.

## Docker

Docker installation is required on the host, see the [official installation docs](https://docs.docker.com/install/).

<Note>
  Flipt requires Docker Engine version
  [20.10](https://docs.docker.com/engine/release-notes/20.10/) or higher.
</Note>

### Running

```console theme={null}
docker run -d \
    -p 8080:8080 \
    -p 9000:9000 \
    -v $HOME/flipt:/var/opt/flipt \
    docker.flipt.io/flipt/flipt:v2
```

This will download the image and start a Flipt container and publish ports
needed to access the UI and backend server. All persistent Flipt data will be
stored in `$HOME/flipt`.

<Info>
  `$HOME/flipt` is just used as an example, you can use any directory you would
  like on the host.
</Info>

The Flipt container uses host-mounted volumes to persist data:

| Host location | Container location | Purpose                      |
| ------------- | ------------------ | ---------------------------- |
| \$HOME/flipt  | /var/opt/flipt     | For storing application data |

This allows data to persist between Docker container restarts.

<Warning>
  If you don't use mounted volumes to persist your data, your data will be lost
  when the container exits!
</Warning>

After starting the container you can visit [http://127.0.0.1:8080](http://127.0.0.1:8080) to view the
application.

<Note>Flipt runs without the root user in the Docker container.</Note>

### Configuration

A default configuration file is included within the image. To supply a custom configuration, update the `docker run` command to mount your local configuration into the container.

The example below shows how to configure Flipt v2 with both persistent storage and a custom configuration file:

```console theme={null}
docker run -d \
    -p 8080:8080 \
    -p 9000:9000 \
    -v $HOME/flipt:/var/opt/flipt \
    -v $HOME/flipt/config.yaml:/etc/flipt/config/default.yml \
    docker.flipt.io/flipt/flipt:v2
```

In this configuration:

* `$HOME/flipt:/var/opt/flipt` mounts the host directory for persistent data storage
* `$HOME/flipt/config.yaml:/etc/flipt/config/default.yml` mounts your custom configuration file

Your `config.yaml` should specify the full path for storage:

```yaml theme={null}
storage:
  default:
    backend:
      type: local
      path: /var/opt/flipt
```

## Homebrew

You can install Flipt v2 using [Homebrew](https://brew.sh/) on macOS and Linux.

<Note>
  If you have Flipt v1 installed via Homebrew, you'll need to unlink it first:
  `brew unlink flipt`
</Note>

### Installing

```console theme={null}
brew install flipt-io/brew/flipt@2
```

### Running

Once installed, you can run Flipt v2 with:

```console theme={null}
flipt server [--config OPTIONAL_PATH_TO_YOUR_CONFIG]
```

## Binary

You can always download the latest release archive of Flipt v2 from the
[Releases](https://github.com/flipt-io/flipt/releases) section on GitHub.

### Installing

You can use the following script to download and install the latest Flipt binary:

```console theme={null}
curl -fsSL https://get.flipt.io/v2 | sh
```

This will install Flipt to `/usr/local/bin/flipt` on Mac and Linux systems.

View the [install.sh](https://github.com/flipt-io/flipt/blob/v2/install.sh) source for more details.

### Running

Run the Flipt server with:

```console theme={null}
flipt server [--config OPTIONAL_PATH_TO_YOUR_CONFIG]
```

Flipt will check in a few different locations for server configuration (in order):

1. `--config` flag as an override
2. `{{ USER_CONFIG_DIR }}/flipt/config.yml` (the `USER_CONFIG_DIR` value is based on your architecture and specified in the [Go documentation](https://pkg.go.dev/os#UserConfigDir))
3. `/etc/flipt/config/default.yml`

See the [Configuration](/v2/configuration/overview) section for more details.

## Kubernetes/Helm

Deploy Flipt v2 to Kubernetes using the official Helm chart. This method is ideal for production deployments and provides easy configuration management.

### Prerequisites

* Kubernetes cluster (local or remote)
* Helm v3.x installed
* `kubectl` configured to access your cluster

### Installing

Add the Flipt Helm repository and install Flipt v2:

```console theme={null}
# Add the Flipt Helm repository
helm repo add flipt https://helm.flipt.io
helm repo update

# Install Flipt v2
helm install my-flipt-v2 flipt/flipt-v2

# Or with custom configuration
helm install my-flipt-v2 flipt/flipt-v2 -f values.yaml
```

<Note>
  The chart name is `flipt-v2`, which is separate from the v1 `flipt` chart.
  This ensures v2-specific configurations and compatibility.
</Note>

### Key Features

Flipt v2's Helm chart includes:

* **Git-native storage**: Works out-of-the-box without external databases
* **Environment support**: Deploy multiple environments from different Git branches
* **Flexible configuration**: Support for all v2 configuration options
* **Production ready**: Includes security, observability, and scaling options

### Configuration

Create a `values.yaml` file to customize your deployment:

```yaml theme={null}
flipt:
  config:
    log:
      level: INFO
      encoding: json
    server:
      grpc_port: 9000
      http_port: 8080
    cors:
      enabled: true
      allowed_origins:
        - "http://localhost:3000"
        - "https://your-frontend-domain.com"
    ui:
      default_theme: dark
      topbar:
        color: "#7C3AED"
    meta:
      check_for_updates: false
      telemetry_enabled: false
    metrics:
      enabled: true
      exporter: prometheus
    storage:
      default:
        backend:
          type: memory
```

<Note>
  This example showcases common v2 configuration options including CORS, UI
  customization, and observability settings. For production use with Git-backed
  storage, see the [Git Storage
  guide](/v2/guides/operations/environments/git-sync).
</Note>

For comprehensive deployment instructions and configuration examples, see the [Deploy Flipt v2 to Kubernetes](/v2/guides/operations/deployment/deploy-to-kubernetes) guide. If you run into issues, check the [Kubernetes Troubleshooting](/v2/guides/operations/deployment/kubernetes-troubleshooting) guide.
