Refresh community demo and docs
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

This commit is contained in:
github-ops
2026-06-21 11:20:12 +00:00
parent cab9282c50
commit c77065756d
24 changed files with 688 additions and 807 deletions
+39 -47
View File
@@ -1,17 +1,16 @@
# Deployment
# Развертывание
Документ описывает поддерживаемый путь деплоя Crank Community.
Документ описывает поддерживаемый путь запуска Crank на сервере.
Crank Community запускается как три application containers за reverse proxy:
Crank запускается как три контейнера за reverse proxy:
- `ui`
- `admin-api`
- `mcp-server`
Приложение использует внешний PostgreSQL. Compose manifest не поднимает
PostgreSQL самостоятельно.
Можно использовать внешний PostgreSQL или локальный PostgreSQL из compose-профиля `local-db`.
## Runtime topology
## Схема
```text
reverse proxy
@@ -21,28 +20,27 @@ reverse proxy
admin-api -> PostgreSQL
mcp-server -> PostgreSQL
admin-api -> optional Valkey/Redis
mcp-server -> optional Valkey/Redis
admin-api -> Valkey/Redis, опционально
mcp-server -> Valkey/Redis, опционально
```
## Deployment files
## Файлы запуска
- `deploy/community/docker-compose.yml`
- `deploy/community/.env.example`
- `.gitea/workflows/ci.yml`
- `.gitea/workflows/deploy.yml`
- `.gitea/workflows/release.yml`
- `deploy/community/docker-compose.images.yml`
- `deploy/community/.env.images.example`
## Порты
Default service ports:
Порты по умолчанию:
- `ui`: `3000`
- `admin-api`: `3001`
- `mcp-server`: `3002`
- optional `valkey`: `6379`, только loopback
`CRANK_PUBLISH_BIND` управляет публикацией application ports:
`CRANK_PUBLISH_BIND` управляет публикацией портов:
- `127.0.0.1`, если reverse proxy работает на том же host;
- `0.0.0.0`, если reverse proxy работает на другом host.
@@ -94,9 +92,9 @@ server {
Замените `192.168.1.106` на адрес deployment host.
## Compose
## Запуск из исходников
Проверка manifest:
Проверка compose-файла:
```bash
docker compose \
@@ -105,7 +103,7 @@ docker compose \
config -q
```
Запуск без внешнего cache:
Запуск с внешним PostgreSQL:
```bash
docker compose \
@@ -132,7 +130,24 @@ CRANK_CACHE_URL=redis://valkey:6379/0
CRANK_CACHE_DEFAULT_TTL_MS=60000
```
## Health checks
## Запуск готовых образов
```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
@@ -146,38 +161,15 @@ curl http://127.0.0.1:3002/health
{"service":"mcp-server","status":"ok"}
```
UI root должен возвращать `200 OK`:
UI должен возвращать `200 OK`:
```bash
curl -I http://127.0.0.1:3000/
```
## Gitea CI/CD
## Эксплуатация
Репозиторий использует Gitea Actions:
- `.gitea/workflows/ci.yml` запускает Rust, UI, E2E и deployment manifest checks.
- `.gitea/workflows/deploy.yml` собирает images и деплоит `main`.
- `.gitea/workflows/release.yml` собирает release artifacts для tags.
Deploy workflow читает из Gitea secrets только OpenBao bootstrap credentials:
- `BAO_ADDR`
- `BAO_ROLE_ID`
- `BAO_SECRET_ID`
Дальше workflow читает KV v2 secrets из OpenBao:
```text
ci/shared/registry
ci/shared/deploy-ssh
ci/projects/crank/deploy
ci/projects/crank/runtime
```
## Operational notes
- Бэкапы БД должны жить вне application host.
- Runtime secrets хранятся в OpenBao, не в Git.
- Для rollback используйте immutable image tags.
- `CRANK_PUBLISH_BIND=0.0.0.0` нужен только если другой host должен обращаться к published ports напрямую.
- Делайте регулярные бэкапы PostgreSQL.
- Не храните реальные секреты в Git.
- Для rollback используйте конкретные image tags, а не только `main`.
- `CRANK_PUBLISH_BIND=0.0.0.0` нужен только если reverse proxy работает на другом host.