docs: Add DAARWIZZ deployment guide with webhook setup instructions
This commit is contained in:
209
DAARWIZZ-DEPLOYMENT.md
Normal file
209
DAARWIZZ-DEPLOYMENT.md
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user