Наръчник: Пълен деплоймент от нулата
Предварителни условия
- 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"