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
└── kubernetesExample 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/:
| 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:
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.pem3. Environment variables
Edit the .env file:
# 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=flipImportant
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 |
config/file-handlers/config.yaml | File-handlers |
config/frontend/config.js | Frontend |
config/mcp-server/config.yaml | MCP server |
config/nginx/default.conf | Nginx — 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:
chmod -R a+rX configSMTP
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
cat ../../credentials/authorized_key.json | docker login --username json_key --password-stdin cr.yandex
docker compose pull6. Storage
Start the databases and the S3 storage:
docker compose up -d flip-postgres flip-valkey flip-minioCreate a bucket with public read access (the variables come from .env):
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:
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
docker compose up -d
docker compose psAll 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.