---
url: >-
  https://flip-chart.ru/developers/en/on-premise/installation/docker-compose/quick-start.md
description: >-
  Installing flip on-premise on a single server with Docker Compose
  (Standalone): requirements, DNS names and SSL certificates, and step-by-step
  setup instructions.
---

# Docker Compose — Standalone

## Requirements

* A server that meets the [system requirements](/en/on-premise/installation/system-requirements)
* [Docker Engine](https://docs.docker.com/engine/install/) and the [Docker Compose](https://docs.docker.com/compose/install/) plugin
* Two DNS names pointing to the server: the application (`example.flip-chart.ru`) and the MCP server (`mcp.example.flip-chart.ru`)
* SSL certificates for both names, or a single wildcard/SAN certificate
* SMTP server credentials

## Setup steps

### 1. Copying files to the server

On the server, unpack the delivery archive with the access keys and configuration files.

```
├── credentials
│   ├── authorized_key.json      — Docker image registry access key
│   └── License_key.txt          — application license key
└── deploy
    ├── docker-compose
    │   ├── .env                 — image version and PostgreSQL/MinIO credentials
    │   ├── docker-compose.yaml
    │   ├── config
    │   │   ├── backend/config.yaml
    │   │   ├── file-handlers/config.yaml
    │   │   ├── frontend/config.js
    │   │   ├── mcp-server/config.yaml
    │   │   └── nginx
    │   │       ├── default.conf
    │   │       └── certificates/    — directory for SSL certificates
    │   └── sources
    │       └── gifs.tar
    └── kubernetes
```

Example files: [docker-compose.yaml](/en/deploy/docker-compose.standalone.yaml), .env, [configuration files](/en/on-premise/config/summary).

::: danger Note
Run all subsequent commands from the `deploy/docker-compose` directory.
:::

### 2. SSL certificates

Place the certificates in `config/nginx/certificates/`:

| File | Purpose |
|---|---|
| `crt.pem`, `key.pem` | application (`example.flip-chart.ru`) |
| `mcp-crt.pem`, `mcp-key.pem` | MCP server (`mcp.example.flip-chart.ru`) |

If you use a single certificate for both domains, specify the same files in both `server` blocks of `config/nginx/default.conf`.

Self-signed certificate for a test installation:

```bash
openssl req -x509 -newkey rsa:4096 -days 365 -nodes \
  -subj "/CN=example.flip-chart.ru" \
  -addext "subjectAltName=DNS:example.flip-chart.ru,DNS:mcp.example.flip-chart.ru" \
  -keyout config/nginx/certificates/key.pem \
  -out config/nginx/certificates/crt.pem
```

### 3. Environment variables

Edit the `.env` file:

```ini
# flip image registry and version
FLIP_REGISTRY_IMAGE=cr.yandex/crpbj8irels1kqult74e/onpremise
FLIP_VERSION=v1.2.0

# PostgreSQL (Standalone). Values must match the Postgres section in config/backend/config.yaml
POSTGRES_USER=flip
POSTGRES_PASSWORD=secret-passwd
POSTGRES_DB=flip

# MinIO (Standalone). Values must match the S3 sections in the backend and file-handlers configurations
MINIO_ROOT_USER=flip-minioadmin
MINIO_ROOT_PASSWORD=flip-minioadminsecret
MINIO_BUCKET=flip

```

::: danger Important
The PostgreSQL and MinIO credentials in `.env` must match the `Postgres`, `S3` and `S3Config` sections in the backend and file-handlers configuration files.
:::

### 4. Configuration files

Fill in the files in the `config` directory: domains, SMTP settings and secrets (`openssl rand -hex 16`).

| File | Description |
|---|---|
| `config/backend/config.yaml` | [Backend](/en/on-premise/config/backend) |
| `config/file-handlers/config.yaml` | [File-handlers](/en/on-premise/config/file-handlers) |
| `config/frontend/config.js` | [Frontend](/en/on-premise/config/frontend) |
| `config/mcp-server/config.yaml` | [MCP server](/en/on-premise/config/mcp) |
| `config/nginx/default.conf` | [Nginx](/en/on-premise/config/nginx) — `server_name` in both `server` blocks |

::: danger File permissions
Processes in the containers do not run as root (backend runs as uid 1001, frontend as the `nginx` user). The configuration files and certificates must be readable:

```bash
chmod -R a+rX config
```

:::

::: tip SMTP
SMTP is used to send verification codes, invitations and notifications. Its settings are defined in the `Mail` section of the backend configuration. Provider guides: [Yandex 360](https://yandex.com/support/yandex-360/business/mail/en/mail-clients/others), [Yandex Cloud Postbox](https://yandex.cloud/en/docs/postbox/quickstart), [Mail.ru](https://help.mail.ru/mail/mailer/settings/).
:::

### 5. Image registry access

```bash
cat ../../credentials/authorized_key.json | docker login --username json_key --password-stdin cr.yandex
docker compose pull
```

### 6. Storage

Start the databases and the S3 storage:

```bash
docker compose up -d flip-postgres flip-valkey flip-minio
```

Create a bucket with public read access (the variables come from `.env`):

```bash
set -a; . ./.env; set +a
docker compose exec flip-minio sh -c "mc alias set flipminio http://localhost:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD && mc mb --ignore-existing flipminio/$MINIO_BUCKET && mc anonymous set download flipminio/$MINIO_BUCKET"
```

Upload the application's media assets:

```bash
tar -xf sources/gifs.tar -C .
docker compose cp gifs flip-minio:/gifs
docker compose exec flip-minio sh -c "mc cp -r /gifs flipminio/$MINIO_BUCKET"
```

### 7. Starting the application

```bash
docker compose up -d
docker compose ps
```

All containers must be in the `running` state (`healthy` for PostgreSQL, Valkey and MinIO). The application is available at `https://example.flip-chart.ru/app`. Then proceed to the [first launch](/en/on-premise/installation/first-boot).
