From 26fa3eee0a8786dd9c5209ec0eb5fd6215562ebf Mon Sep 17 00:00:00 2001 From: Ivan Tytar Date: Sat, 15 Nov 2025 16:00:39 +0100 Subject: [PATCH] docs: Add DAARWIZZ deployment guide with webhook setup instructions --- DAARWIZZ-DEPLOYMENT.md | 209 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 DAARWIZZ-DEPLOYMENT.md diff --git a/DAARWIZZ-DEPLOYMENT.md b/DAARWIZZ-DEPLOYMENT.md new file mode 100644 index 00000000..e19bb108 --- /dev/null +++ b/DAARWIZZ-DEPLOYMENT.md @@ -0,0 +1,209 @@ +# DAARWIZZ Telegram Bot - Deployment Guide + +## Status +✅ **Docker Stack: RUNNING** (all services healthy) +- Router (9102) - ✅ healthy +- DevTools (8008) - ✅ healthy +- CrewAI (9010) - ✅ healthy +- RBAC (9200) - ✅ healthy +- Gateway (9300) - ✅ healthy with DAARWIZZ prompt loaded + +## Telegram Bot Info +- **Bot**: @DAARWIZZBot +- **Bot ID**: 8323412397 +- **Token**: configured in `.env` +- **Webhook**: Not configured yet + +## Next Steps + +### 1. Expose Gateway to Internet + +**Option A: Using ngrok (для тестування)** +```bash +# Install ngrok if needed +brew install ngrok # or download from https://ngrok.com + +# Start tunnel +ngrok http 9300 + +# You'll get URL like: https://abc123.ngrok.io +``` + +**Option B: Using CloudFlare Tunnel (production-ready)** +```bash +# Install cloudflared +brew install cloudflared + +# Login and configure +cloudflared tunnel login +cloudflared tunnel create daarion-gateway +cloudflared tunnel route dns daarion-gateway gateway.daarion.city + +# Start tunnel +cloudflared tunnel run daarion-gateway +``` + +**Option C: Direct domain + NGINX (production)** +```nginx +# /etc/nginx/sites-available/daarion-gateway +server { + listen 443 ssl http2; + server_name gateway.daarion.city; + + ssl_certificate /etc/letsencrypt/live/daarion.city/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/daarion.city/privkey.pem; + + location / { + proxy_pass http://localhost:9300; + 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; + } +} +``` + +### 2. Configure Telegram Webhook + +Replace `YOUR_PUBLIC_URL` with the URL from step 1: + +```bash +# Set webhook +curl -X POST "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/setWebhook" \ + -d "url=YOUR_PUBLIC_URL/telegram/webhook" + +# Example with ngrok: +curl -X POST "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/setWebhook" \ + -d "url=https://abc123.ngrok.io/telegram/webhook" + +# Verify webhook +curl "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/getWebhookInfo" | jq +``` + +### 3. Test DAARWIZZ + +Send message to @DAARWIZZBot in Telegram: +``` +Привіт! Хто ти? +``` + +Expected response: +``` +Привіт! Я — DAARWIZZ, AI-агент екосистеми DAARION.city. +Я тут, щоб допомогти вам з питаннями про проєкт, +координувати ресурси і надавати інформацію про +децентралізовані DAO і Web3-інфраструктуру. +``` + +### 4. Monitor Logs + +```bash +# All services +docker compose logs -f + +# Gateway only +docker compose logs -f gateway + +# Router only +docker compose logs -f router + +# Check DAARWIZZ prompt loading +docker compose logs gateway | grep -i daarwizz +``` + +## Troubleshooting + +### Webhook not working +```bash +# Check webhook status +curl "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/getWebhookInfo" + +# Delete webhook (reset) +curl -X POST "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/deleteWebhook" + +# Test Gateway directly +curl -X POST http://localhost:9300/telegram/webhook \ + -H "Content-Type: application/json" \ + -d '{"message":{"chat":{"id":123},"text":"test"}}' +``` + +### Gateway not responding +```bash +# Check health +curl http://localhost:9300/health + +# Restart Gateway +docker compose restart gateway + +# Check Gateway logs +docker compose logs gateway --tail 50 +``` + +### DAARWIZZ prompt not loaded +```bash +# Check prompt file exists in container +docker exec dagi-gateway ls -la /app/gateway-bot/daarwizz_prompt.txt + +# Check prompt content +docker exec dagi-gateway cat /app/gateway-bot/daarwizz_prompt.txt +``` + +## Architecture Flow + +``` +User (Telegram) + → @DAARWIZZBot + → Telegram API (webhook) + → Gateway (port 9300) + ├─ Load DAARWIZZ prompt + ├─ Enrich context (dao_id, user_id, agent="daarwizz") + └─ Forward to Router + → Router (port 9102) + ├─ Fetch RBAC context (port 9200) + ├─ Inject system prompt + └─ Call Ollama qwen3:8b + → LLM Response + → Gateway + → Telegram API + → User +``` + +## Security Notes + +1. **Never commit `.env`** - token is in `.gitignore` +2. **HTTPS only** for webhook URL (Telegram requirement) +3. **Firewall rules** - only Gateway port 9300 needs public access +4. **Rate limiting** - consider adding rate limits to Gateway +5. **Monitoring** - set up alerts for Gateway downtime + +## Performance + +Current setup (local Ollama qwen3:8b): +- **Response time**: 2-5 seconds for typical query +- **Concurrent users**: ~10 with local LLM +- **Scaling**: Add remote LLM profiles for more load + +For production scale, configure remote LLM in `router-config.yml`: +```yaml +llm_profiles: + - profile_id: "production-qwen-remote" + provider_id: "openai_remote" + model: "qwen3-8b" + base_url: "https://api.your-llm-provider.com" + api_key_env: "REMOTE_LLM_API_KEY" +``` + +## What's Next + +After successful deployment: +1. ✅ Collect 5-10 real dialogs +2. ✅ Analyze patterns and update `docs/SCENARIOS.md` +3. ✅ Monitor performance and adjust token limits +4. ✅ Set up auto-restart/watchdog for production reliability +5. ✅ Integrate with Dify (see `docs/integrations/dify-integration.md`) + +--- + +**Last Updated**: 2025-11-15 +**DAGI Stack Version**: 0.2.0 +**DAARWIZZ Agent**: Active