init222228

This commit is contained in:
ZOMBIIIIIII
2026-05-28 14:15:37 +03:00
parent a636bd573a
commit 179e05b1e8
4 changed files with 58 additions and 193 deletions

View File

@@ -28,55 +28,29 @@ vault kv put dev-secrets/jwt/kids/<kid-from-bitok> \
⚠️ **Master-key менять нельзя** — все existing `encrypted_mnemonic` станут нерасшифровываемыми. API на старте делает self-test: пытается декриптить любой существующий mnemonic и фейлится если ключ не подошёл.
## Deploy (через docker compose)
## Deploy
```bash
# 1. Залить bundle на сервер
# Залить bundle на сервер
scp -P 2222 -r deployserver/ server@<host>:~/cryptowallet/
# 2. На сервере: заполнить .env
# На сервере: убедись что .env заполнен (VAULT_*, JWT_*, CORS_ORIGINS, REDIS_PASSWORD, ...)
ssh server@<host> -p 2222
cd ~/cryptowallet/deployserver
cp .env.example .env
chmod 600 .env
nano .env # заполни VAULT_*, JWT_*, REDIS_PASSWORD, POSTGRES_PASSWORD, CORS_ORIGINS
# 3. Поднять stack (api + postgres + keydb)
docker compose up -d --build
# 4. Проверить
docker compose ps
docker compose logs -f api
curl http://localhost:3001/api/health
```
В `.env` **обязательны**: `VAULT_ADDR`, `VAULT_ROLE_ID`, `VAULT_SECRET_ID`, `JWT_ISSUER=bitok`, `JWT_AUDIENCE`, `CORS_ORIGINS`, `POSTGRES_PASSWORD`, `REDIS_PASSWORD`.
**Что в compose:**
- `api` — наш Node API из multi-stage Dockerfile (read-only fs, uid 1001, port 127.0.0.1:3001)
- `postgres` — хранилище (internal only, без exposed ports)
- `keydb` — Redis-compatible для idempotency + asset map cache (internal only)
**Чего НЕТ в compose** (production не использует — оператор настраивает отдельно):
- HashiCorp Vault — production использует HA cluster (URL в `VAULT_ADDR`)
- JWT issuer — production принимает JWT от bitok external service
- Web UI — frontend деплоится отдельно (Vercel / nginx / CDN)
- Nginx reverse proxy + TLS — оператор сам ставит перед `127.0.0.1:3001`
**Если используешь managed Postgres** (e.g. AWS RDS):
- Раскомментируй `DATABASE_URL` в `.env`
- Закомментируй `postgres` service в `docker-compose.yml` + убери `depends_on.postgres` из `api`
API **не делает migrations / DROP / ALTER** при старте — только INSERT/UPDATE/SELECT. Schema (если нужны новые колонки/таблицы для нового функционала) обновляется только руками: `psql -f cryptowallet-schema.sql` (script append-only — `CREATE TABLE IF NOT EXISTS` / `ALTER TABLE ADD COLUMN IF NOT EXISTS`, никаких DROP).
## Update / Rebuild
```bash
# Только app (postgres/keydb остаются — данные не теряются)
# Залить новый src + rebuild api (keydb данные не теряются)
scp -P 2222 -r deployserver/apps deployserver/Dockerfile deployserver/docker-compose.yml \
server@<host>:~/cryptowallet/deployserver/
ssh server@<host> -p 2222 'cd cryptowallet/deployserver && docker compose up -d --build api'
# Полный rebuild
ssh server@<host> -p 2222 'cd cryptowallet/deployserver && docker compose up -d --build --force-recreate'
ssh server@<host> -p 2222 'cd cryptowallet/deployserver && docker compose up -d --build'
```
## Endpoints