Преминете към основното съдържание

Наръчник: Пълен деплоймент от нулата

Предварителни условия

  • Azure CLI инсталиран и логнат
  • GitHub Secrets конфигурирани (вижте Секрети)
  • Cloudflare акаунт с API token
  • DGX Spark машина достъпна по LAN
  • SSH достъп до DGX Spark

Ред на деплоймент

1. Azure ресурси

# Създаване на resource group
az group create --name dictaro-rg --location westeurope

# PostgreSQL
az postgres flexible-server create \
--name dictaro-db-server \
--resource-group dictaro-rg \
--location northeurope \
--sku-name Standard_B1ms \
--version 16 \
--admin-user dictaro \
--admin-password "<DB_PASSWORD>"

# Създаване на база данни
az postgres flexible-server db create \
--resource-group dictaro-rg \
--server-name dictaro-db-server \
--database-name dictaro

# Azure VM
az vm create \
--resource-group dictaro-rg \
--name dictaro-vm \
--location northeurope \
--image Ubuntu2204 \
--size Standard_B2s \
--admin-username rosen

2. Licensing API

# На VM-а: clone на repo
git clone https://github.com/<org>/whisper-keyboard.git
cd whisper-keyboard/licensing-go

# Генериране на JWT ключове
mkdir -p keys
openssl genrsa -out keys/private.pem 2048
openssl rsa -in keys/private.pem -pubout -out keys/public.pem

# Създаване на .env (от .env.example)
cp .env.example .env
# Редактиране на .env с production стойности

# Стартиране
docker compose up -d --build

Или чрез GitHub Actions: push промяна в licensing-go/ → автоматичен деплой.

3. Мониторинг стек

Мониторингът е част от licensing-go/docker-compose.yml и се деплойва заедно с Licensing API.

Проверка:

curl https://monitoring.dictaro.ai/api/health
curl https://api.dictaro.ai/health

4. ASR сървър

# На DGX Spark
ssh rosen@10.42.9.37
cd ~/whisper-keyboard/server

# .env конфигурация
echo "SERVER_API_KEY=<key>" > .env
echo "CLOUDFLARE_TUNNEL_TOKEN=<token>" >> .env

# Стартиране
docker compose up -d --build

# Проверка
curl http://localhost:8765/health
nvidia-smi

Или чрез GitHub Actions: push промяна в server/ → self-hosted runner деплойва.

5. Уебсайт

Push промяна в website/ → GitHub Actions деплойва на Cloudflare Pages.

Ръчен деплой:

cd website
npm ci && npm run build
npx wrangler pages deploy ./dist --project-name=dictaro-website

6. Проверка на всичко

# API health
curl -sf https://api.dictaro.ai/health | jq .

# Grafana
curl -sf https://monitoring.dictaro.ai/api/health | jq .

# ASR (чрез tunnel)
curl -sf https://gx10-804f.dictaro.ai/health | jq .

# Website
curl -sf https://dictaro.ai -o /dev/null -w "%{http_code}\n"