Skip to content

Docker Compose — Standalone ​

Requirements ​

  • A server that meets the system requirements
  • Docker Engine and the Docker Compose 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, .env, configuration files.

Note

Run all subsequent commands from the deploy/docker-compose directory.

2. SSL certificates ​

Place the certificates in config/nginx/certificates/:

FilePurpose
crt.pem, key.pemapplication (example.flip-chart.ru)
mcp-crt.pem, mcp-key.pemMCP 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

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).

FileDescription
config/backend/config.yamlBackend
config/file-handlers/config.yamlFile-handlers
config/frontend/config.jsFrontend
config/mcp-server/config.yamlMCP server
config/nginx/default.confNginx — server_name in both server blocks

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

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, Yandex Cloud Postbox, Mail.ru.

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.

flip on-premise and cloud documentation