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.yaml for Render Blueprint one-click deploy
  • apps/server/railway.json for Buzz Line server Railway service
  • apps/license-api/railway.json for license API Railway service
  • fly.toml for 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.json and /apps/license-api/railway.json, then attach a Railway Volume at /app/data for 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_URL is set to your published template link.
  • Fly.io: near-one-click launch from repo (uses fly.toml defaults).

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 usage
  • JWT_SECRET: must match your host app token signing secret
  • ALLOWED_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

  1. Open your app as an authenticated user.
  2. Open widget and send a message.
  3. Confirm message appears in Telegram topic.
  4. 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.