Docs
Docs
Complete these steps to go from payment to your first Telegram-backed live chat reply.
1. Buy your license
Choose Starter (single site) or Unlimited (unlimited sites) on the pricing section and complete Stripe checkout.
2. Check your purchase email
After payment, we email your license key and quick-start details. Save the key as LICENSE_KEY in deployment secrets.
If email does not arrive within a few minutes, check spam and then contact support@buzz-line.com with your purchase email.
3. Deploy your server (installer templates)
The repo ships platform installer manifests at the root:
render.yamlfor Render Blueprint one-click deployapps/server/railway.jsonfor Buzz Line server Railway serviceapps/license-api/railway.jsonfor license API Railway servicefly.tomlfor Fly.io app launch defaults
Start from one of these:
- Deploy on Render (reads
render.yaml) - Deploy on Railway (set service custom config paths to
/apps/server/railway.jsonand/apps/license-api/railway.json, then attach a Railway Volume at/app/datafor the server service) - Launch on Fly.io (from repo using
fly.toml)
All templates deploy the same server build and keep SQLite on persistent disk/volume.
Current installer UX status
- Render: true one-click (Blueprint deploy link reads
render.yaml). - Railway: near-one-click from repo import today; true one-click once
PUBLIC_RAILWAY_TEMPLATE_URLis set to your published template link. - Fly.io: near-one-click launch from repo (uses
fly.tomldefaults).
To make Railway fully one-click, publish a Railway project template and replace the generic Railway link with that template URL.
4. Configure required env vars
Set these before first start:
LICENSE_KEY=BL-...
JWT_SECRET=<strong-random-secret>
ALLOWED_ORIGINS=https://<your-app-domain>
TELEGRAM_BOT_TOKEN=<bot-token>
TELEGRAM_GROUP_ID=-100xxxxxxxxxx
TELEGRAM_MODE=webhook
TELEGRAM_WEBHOOK_URL=https://<your-chat-domain>/api/telegram/webhook
TELEGRAM_WEBHOOK_SECRET=<random-secret> What matters most:
LICENSE_KEY: enables paid self-hosted usageJWT_SECRET: must match your host app token signing secretALLOWED_ORIGINS: exact frontend origins allowed to call the chat API
5. Verify the service is up
Check health endpoint after deploy:
curl https://<your-chat-domain>/health 6. Create host token endpoint (required)
Your app must expose an authenticated endpoint that returns a short-lived JWT for the logged-in user (example path: /api/widget-token).
The token must be signed with the same secret as server JWT_SECRET, and include sub, jti, exp, origin, and site.
7. Embed widget on your site
<script>
window.LiveChatConfig = {
server: 'https://<your-chat-domain>',
title: 'Support chat',
subtitle: 'Replies usually within minutes'
};
</script>
<script
src="https://<your-chat-domain>/widget/widget.js"
data-site="<your-app-domain-without-protocol>"
data-auth-endpoint="/api/widget-token"
></script> The widget calls data-auth-endpoint, receives JWT, and uses that token to authenticate chat requests.
8. License checks and heartbeat
- License is validated on startup.
- Server re-validates every 24 hours while running.
- If license API is temporarily unreachable, cached valid license can run for up to 24-hour grace.
9. Send your first test message
- Open your app as an authenticated user.
- Open widget and send a message.
- Confirm message appears in Telegram topic.
- Reply in Telegram and confirm reply syncs back to widget.
Need help?
Email support@buzz-line.com and include your purchase email, chat server domain, and host app domain.