Guide🇹🇷 Türkçe

Getting Started

This guide walks you through installing SupportBot on your own server and signing in for the first time.

What is SupportBot?

SupportBot is a self-hosted AI customer-support platform. Your customers write through a chat widget on your website; the AI assistant answers from the documents in your Knowledge Center and hands conversations it cannot resolve over to a human agent.

The platform has three layers:

  • Chatwoot — the omnichannel inbox: agent workspace, chat widget, channels such as WhatsApp and Instagram.
  • Dify — the AI brain: RAG (answering from your knowledge base) and multi-provider LLM management.
  • The SupportBot layer — the bot bridge, weekly reports, and the Admin Panel (Insights Dashboard) this guide focuses on.

As an operator, you run nearly all day-to-day work from the Admin Panel and Chatwoot.

Requirements

  • A VPS with Docker and Docker Compose (Linux server). Every service starts with a single docker compose up.
  • A domain name (for production). Subdomains (chat., dashboard., ai. …) derive automatically from your root domain; you only point them at your server in DNS. TLS certificates are issued automatically by Caddy.
  • For a local trial on your own machine no domain is needed; services open on localhost ports.

Installation

1. Clone the repository

git clone <repo-url>
cd SupportBot

2. Prepare the environment file

cp infra/.env.example infra/.env

Open infra/.env in an editor and fill in the lines tagged [ZORUNLU] (required) with <...> placeholders. To generate passwords and secrets:

openssl rand -hex 32

At minimum, fill in: POSTGRES_PASSWORD (and the password inside the three database URLs), CHATWOOT_SECRET_KEY_BASE, CHATWOOT_WEBHOOK_SECRET, DIFY_SECRET_KEY, DIFY_INIT_PASSWORD, DIFY_SANDBOX_API_KEY, PLUGIN_DAEMON_KEY, PLUGIN_DIFY_INNER_API_KEY, ADMIN_API_KEY, ENCRYPTION_KEY, ADMIN_PASSWORD, N8N_BASIC_AUTH_PASSWORD, N8N_ENCRYPTION_KEY. In production also set APP_DOMAIN to your own domain.

Important: ENCRYPTION_KEY encrypts the LLM API keys you enter in the panel. If you lose this key, the stored API keys cannot be recovered; keep a backup somewhere safe.

3. Start the services

cd infra
docker compose up -d

4. Wait for setup to finish — the rest is automatic

The first compose up performs the entire installation via zero-touch provisioning:

  • Database schemas and seed data are applied automatically.
  • The Chatwoot account, admin user, "Web Sohbet" inbox, and the Agent Bot are created automatically.
  • The Dify account, chatbot application, knowledge base, and 13 model-provider plugins are installed automatically.
  • Every generated token and identifier is written to the database — you never have to copy keys from a panel into .env.

Seeing init--prefixed services as Exited (0) in docker compose ps is normal: they are one-shot setup jobs that finish and shut down.

Domains

All subdomains derive from APP_DOMAIN in infra/.env (for the Cloudflare record steps: DNS Setup):

Address Service
chat.<your-domain> Chatwoot — agent inbox, widget, host of the panel iframe
dashboard.<your-domain> Admin Panel (Insights Dashboard)
ai.<your-domain> Dify admin console (basic auth + IP allowlist, internal team)
bot.<your-domain> Bot bridge (webhook traffic only)
showcase.<your-domain> Showcase — test/demo platform
status.<your-domain> Uptime Kuma — status page
n8n.<your-domain> n8n workflows (optional, basic auth)

Local equivalents: Admin Panel http://localhost:3200, Chatwoot http://localhost:3100, Dify http://localhost:5002, Showcase http://localhost:3300.

First Sign-in

  1. Admin Panel — open dashboard.<your-domain> (locally localhost:3200) and sign in with the ADMIN_EMAIL / ADMIN_PASSWORD from infra/.env. On first launch the Setup Wizard greets you: company details, assistant name, brand colors, AI provider, and topics in a few steps (you can skip any step and change it later in Settings).
  2. Chatwoot — open chat.<your-domain>; the admin account was created during provisioning with the same ADMIN_EMAIL / ADMIN_PASSWORD.
  3. The panel runs embedded inside Chatwoot as a Dashboard App: once you are signed in to Chatwoot, the panel asks for no extra password (Chatwoot SSO). When you visit dashboard. directly, the local sign-in above applies.

Sign in with Google (optional)

You can add a "Sign in with Google" button to both the Chatwoot and the Admin Panel sign-in screens. The Google Cloud setup (project, consent screen, the two redirect URIs) is covered step by step in its own guide: Setting Up Sign in with Google.

The panel sign-in also has a Forgot password link and passwordless sign-in: the "Send sign-in link" button emails you a one-click sign-in link valid for 15 minutes (the reset link is valid for 30; both are delivered via the email provider from Settings → Notifications).

Enter an LLM Key

The bot needs an AI provider's API key to answer. The key is entered in the panel, not in .env:

  1. Admin Panel → Settings → Model (or the "AI Provider" step of the Setup Wizard).
  2. Pick the provider (Anthropic, OpenAI, Google, Groq, DeepSeek, Mistral, xAI …) and paste your API key.
  3. Verify with Test, then save.

Keys are stored encrypted with AES-256-GCM in the database. The bot does not respond until a key is entered; afterwards, send a message through the widget to test the flow end to end.

Next Steps

  • To learn the panel screens: Admin Panel
  • To add the widget to your site: copy the ready-made snippet from Panel → Integrations and paste it before your page's closing </body> tag.
  • To fill the bot's knowledge: upload your documents in Panel → Knowledge Center.