Files
crank/docs/deployment.md
github-ops c77065756d
Deploy / deploy (push) Successful in 1m42s
CI / Rust Checks (push) Successful in 6m9s
CI / UI Checks (push) Successful in 5s
CI / Deployment Manifests (push) Successful in 2s
CI / Frontend E2E (push) Successful in 4m42s
Refresh community demo and docs
2026-06-21 11:20:12 +00:00

176 lines
4.3 KiB
Markdown

# Развертывание
Документ описывает поддерживаемый путь запуска Crank на сервере.
Crank запускается как три контейнера за reverse proxy:
- `ui`
- `admin-api`
- `mcp-server`
Можно использовать внешний PostgreSQL или локальный PostgreSQL из compose-профиля `local-db`.
## Схема
```text
reverse proxy
/ -> ui:3000
/api/admin/ -> admin-api:3001
/mcp/ -> mcp-server:3002
admin-api -> PostgreSQL
mcp-server -> PostgreSQL
admin-api -> Valkey/Redis, опционально
mcp-server -> Valkey/Redis, опционально
```
## Файлы запуска
- `deploy/community/docker-compose.yml`
- `deploy/community/.env.example`
- `deploy/community/docker-compose.images.yml`
- `deploy/community/.env.images.example`
## Порты
Порты по умолчанию:
- `ui`: `3000`
- `admin-api`: `3001`
- `mcp-server`: `3002`
- optional `valkey`: `6379`, только loopback
`CRANK_PUBLISH_BIND` управляет публикацией портов:
- `127.0.0.1`, если reverse proxy работает на том же host;
- `0.0.0.0`, если reverse proxy работает на другом host.
## Reverse proxy
Пример `nginx`:
```nginx
server {
listen 80;
server_name crank.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name crank.example.com;
ssl_certificate /etc/letsencrypt/live/crank.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/crank.example.com/privkey.pem;
client_max_body_size 25m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
location / {
proxy_pass http://192.168.1.106:3000;
}
location /api/admin/ {
proxy_pass http://192.168.1.106:3001/;
}
location /mcp/ {
proxy_pass http://192.168.1.106:3002/;
proxy_buffering off;
proxy_request_buffering off;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
```
Замените `192.168.1.106` на адрес deployment host.
## Запуск из исходников
Проверка compose-файла:
```bash
docker compose \
-f deploy/community/docker-compose.yml \
--env-file deploy/community/.env.example \
config -q
```
Запуск с внешним PostgreSQL:
```bash
docker compose \
-f deploy/community/docker-compose.yml \
--env-file deploy/community/.env.example \
up -d
```
Запуск со встроенным Valkey:
```bash
docker compose \
-f deploy/community/docker-compose.yml \
--env-file deploy/community/.env.example \
--profile cache \
up -d
```
Для встроенного Valkey:
```text
CRANK_CACHE_BACKEND=valkey
CRANK_CACHE_URL=redis://valkey:6379/0
CRANK_CACHE_DEFAULT_TTL_MS=60000
```
## Запуск готовых образов
```bash
mkdir -p crank
cd crank
curl -fsSLo docker-compose.yml https://git.itexp.me/bsodfather/crank/raw/branch/main/deploy/community/docker-compose.images.yml
curl -fsSLo .env.example https://git.itexp.me/bsodfather/crank/raw/branch/main/deploy/community/.env.images.example
cp .env.example .env
docker compose --profile local-db up -d
```
Если используется внешний PostgreSQL, заполните `POSTGRES_HOST`, `POSTGRES_PORT`, `POSTGRES_DB`, `POSTGRES_USER`, `POSTGRES_PASSWORD` и запустите:
```bash
docker compose up -d
```
## Проверка состояния
```bash
curl http://127.0.0.1:3001/health
curl http://127.0.0.1:3002/health
```
Ожидаемые ответы:
```json
{"service":"admin-api","status":"ok"}
{"service":"mcp-server","status":"ok"}
```
UI должен возвращать `200 OK`:
```bash
curl -I http://127.0.0.1:3000/
```
## Эксплуатация
- Делайте регулярные бэкапы PostgreSQL.
- Не храните реальные секреты в Git.
- Для rollback используйте конкретные image tags, а не только `main`.
- `CRANK_PUBLISH_BIND=0.0.0.0` нужен только если reverse proxy работает на другом host.