SELF HOSTING

Hướng dẫn self-hosted Typebot – Nền tảng chatbot builder mã nguồn mở

Trong thời đại AI và tự động hóa, chatbot đã trở thành công cụ không thể thiếu cho doanh nghiệp muốn tương tác 24/7 với khách hàng. Tuy nhiên, nhiều nền tảng chatbot SaaS đắt đỏ, khó tùy chỉnh sâu và đặc biệt là không kiểm soát được dữ liệu. Đây là lý do Typebot – một công cụ xây dựng chatbot mã nguồn mở có thể tự lưu trữ – đang thu hút sự chú ý của cộng đồng developer và doanh nghiệp nhỏ.

Typebot là nền tảng chatbot builder mã nguồn mở được phát triển bởi Baptiste Arnaud, cho phép bạn tạo các chatbot tương tác trực quan mà không cần viết code. Khác với các giải pháp đám mây như Dialogflow hay ManyChat, Typebot mang đến quyền tự chủ hoàn toàn: bạn triển khai trên server riêng, kiểm soát 100% dữ liệu và tùy biến theo nhu cầu đặc thù.

Những lợi ích nổi bật khi chọn Typebot:

  • Miễn phí & mã nguồn mở: Không tốn phí license hàng tháng, phù hợp với startup và SME.
  • Tự lưu trữ (self-hosted): Triển khai trên VPS hoặc server nội bộ, đảm bảo bảo mật dữ liệu và tuân thủ quy định.
  • Dễ tùy chỉnh: 45+ building blocks linh hoạt, hỗ trợ tích hợp OpenAI, Google Sheets, Zapier, WhatsApp, Telegram.
  • Không vendor lock-in: Code của bạn, dữ liệu của bạn – không bị phụ thuộc vào nhà cung cấp.

Mã nguồn Typebot được public trên GitHub tại https://github.com/baptisteArno/typebot.io với hơn 9.3k stars và 2.8k forks, chứng tỏ sức hút mạnh mẽ từ cộng đồng.

Bài viết này sẽ hướng dẫn chi tiết cách cài đặt Typebot self-hosted bằng Docker và bắt đầu xây dựng chatbot đầu tiên một cách nhanh chóng.

Typebot – Chatbot Builder thế hệ mới

1. Typebot là gì?

Typebot là một no-code chatbot builder cho phép tạo chatbot tương tác thông qua giao diện kéo-thả trực quan. Nó được xây dựng với công nghệ hiện đại như Next.js, TailwindCSS, và hỗ trợ triển khai trên nhiều nền tảng: website, ứng dụng di động, WhatsApp, Telegram.

Khác biệt lớn nhất của Typebot so với Dialogflow:

  • Giao diện thân thiện: Trong khi Dialogflow đòi hỏi hiểu biết về intent, entity, context phức tạp, Typebot cho phép bạn thiết kế luồng hội thoại trực quan như vẽ sơ đồ.
  • Tự lưu trữ: Dialogflow là dịch vụ đám mây của Google, còn Typebot có thể self-hosted hoàn toàn.
  • Tích hợp đa kênh: Typebot hỗ trợ WhatsApp, Telegram, và nhiều tích hợp khác mà không cần middleware phức tạp.
  • Chi phí: Typebot miễn phí cho phiên bản tự lưu trữ, trong khi Dialogflow có thể tốn kém ở quy mô lớn.

2. Tính năng nổi bật của Typebot

Typebot cung cấp 45+ building blocks giúp tạo chatbot phong phú và tương tác:

  • Bubbles: Text, Image/GIF, Video, Audio, Embed – hiển thị nội dung đa phương tiện.
  • Inputs: Text, Email, Phone, Buttons, Picture Choice, Date Picker, Payment (Stripe), File Picker – thu thập thông tin người dùng.
  • Logic: Conditional branching, URL redirections, JavaScript scripting, A/B testing – tạo luồng logic phức tạp.​
  • Integrations: Webhook/HTTP requests, OpenAI, Google Sheets, Google Analytics, Meta Pixel, Zapier, Make.com, Chatwoot, và nhiều hơn nữa.
  • Theming: Tùy chỉnh fonts, màu sắc, background, roundness, shadows, và thậm chí custom CSS để phù hợp với thương hiệu.
  • Analytics: Theo dõi tỉ lệ hoàn thành, drop-off rates, và xuất dữ liệu CSV.

3. Lợi ích khi chọn Typebot self-hosted

  • Kiểm soát dữ liệu tuyệt đối: Dữ liệu khách hàng, conversation history được lưu trên server riêng, phù hợp với GDPR và các quy định nội bộ.
  • Chi phí thấp: Chỉ cần chi phí VPS (từ 5-10 USD/tháng), không tốn phí license theo user như ManyChat hay Intercom.
  • Tùy biến không giới hạn: Có thể sửa đổi mã nguồn, thêm tính năng đặc thù, tích hợp với hệ thống nội bộ.
  • Cộng đồng năng động: Hơn 78 contributors trên GitHub, Discord channel hỗ trợ nhanh chóng.

Hướng dẫn self-hosted Typebot với Docker

Phần này hướng dẫn chi tiết cách cài đặt Typebot self-hosted trên VPS hoặc server nội bộ bằng Docker Compose – cách phổ biến và ổn định nhất.

1. Yêu cầu hệ thống

Trước khi bắt đầu, đảm bảo server của bạn có:

  • DockerDocker Compose đã được cài đặt.
  • RAM: Tối thiểu 2GB (khuyến nghị 4GB cho production).
  • Storage: 10GB dung lượng trống.
  • Port: 80, 443 (HTTP/HTTPS) và 8080, 8081 (Typebot builder & viewer).
  • Domain: Một domain/subdomain để trỏ tới Typebot (ví dụ: typebot.yourdomain.combot.yourdomain.com).

2. Cài đặt nhanh với Docker Compose

Bước 1: Clone repository Typebot

git clone https://github.com/baptisteArno/typebot.io.git
cd typebot.io

Bước 2: Tạo file cấu hình môi trường

cp .env.example .env

Mở file .env và điền các biến cần thiết:

# Database
DATABASE_URL="postgresql://typebot:typebot@typebot-db:5432/typebot?schema=public"

# Builder URL
NEXTAUTH_URL="https://typebot.yourdomain.com"
NEXTAUTH_SECRET="your-random-secret-key"

# Viewer URL
NEXT_PUBLIC_VIEWER_URL="https://bot.yourdomain.com"

# SMTP (để gửi email xác thực)
SMTP_USERNAME="[email protected]"
SMTP_HOST="smtp.gmail.com"
SMTP_PORT="587"
SMTP_PASSWORD="your-app-password"
SMTP_SECURE="true"
LƯU Ý:
NEXTAUTH_SECRET phải là chuỗi ngẫu nhiên dài 32+ ký tự. Có thể tạo bằng lệnh openssl rand -base64 32.

Bước 3: Tạo file docker-compose.yml

Tạo file docker-compose.yml với nội dung sau (dựa trên docs chính thức):

services:
  typebot-db:
    image: postgres:16
    restart: always
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=typebot
      - POSTGRES_PASSWORD=typebot
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  typebot-builder:
    image: baptistearno/typebot-builder:latest
    depends_on:
      typebot-db:
        condition: service_healthy
    restart: always
    ports:
      - "8080:3000"
    env_file:
      - .env

  typebot-viewer:
    image: baptistearno/typebot-viewer:latest
    depends_on:
      typebot-db:
        condition: service_healthy
    restart: always
    ports:
      - "8081:3000"
    env_file:
      - .env

volumes:
  db-data:

Bước 4: Khởi chạy Typebot

docker-compose up -d

Lệnh này sẽ:

  • Tạo container PostgreSQL và khởi tạo database.
  • Chạy migration tự động.
  • Khởi động builder trên port 8080.
  • Khởi động viewer trên port 8081.

Bước 5: Cấu hình reverse proxy (Nginx)

Để truy cập qua domain thay vì IP, cấu hình Nginx:

server {
    listen 80;
    server_name typebot.yourdomain.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 80;
    server_name bot.yourdomain.com;

    location / {
        proxy_pass http://localhost:8081;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

3. Cài đặt với HTTPS tự động

Nếu muốn tự động cấp SSL qua Let’s Encrypt, sử dụng Caddy thay vì Nginx:

caddy-gen:
    image: 'wemakeservices/caddy-gen:latest'
    restart: always
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./caddy-certificates:/data/caddy
    ports:
      - '80:80'
      - '443:443'
    depends_on:
      - typebot-builder
      - typebot-viewer

Thêm labels vào services:

typebot-builder:
    labels:
      virtual.host: 'typebot.yourdomain.com'
      virtual.port: '3000'
      virtual.tls-email: '[email protected]'
    # ... rest of config

4. Xử lý sự cố phổ biến

  • Lỗi kết nối database: Đảm bảo typebot-db healthy trước khi builder/viewer khởi động.
  • Lỗi hostname sau khi migrate Portainer: Thêm network attachable: true trong docker-compose.yml.
  • Lỗi SMTP không gửi được email: Kiểm tra firewall, xác thực 2FA (nếu dùng Gmail, cần app password).

Hướng dẫn sử dụng Typebot – Xây dựng chatbot đầu tiên

Sau khi cài đặt xong, truy cập https://typebot.yourdomain.com và đăng ký tài khoản admin. Sau đó, bắt đầu tạo chatbot đầu tiên.

1. Tạo chatbot mới

  1. Click “Create a typebot” → Nhập tên (ví dụ: “Lead Generation Bot”).
  2. Chọn theme mặc định hoặc tùy chỉnh.
  3. Bạn sẽ thấy canvas trống với block Start đã sẵn sàng.

2. Thêm các building blocks cơ bản

Block 1: Text Bubble (Chào hỏi)

  • Kéo Text block từ sidebar vào canvas.
  • Nhập: “Xin chào! 👋 Tôi là trợ lý ảo của công ty. Tôi có thể giúp gì cho bạn?”
  • Nối từ block Start sang block này.

Block 2: Buttons (Lựa chọn)

  • Kéo Buttons block vào canvas.
  • Cấu hình:
    • Question: “Bạn quan tâm đến dịch vụ nào?”
    • Choices:
      • “Tư vấn sản phẩm” → Nối sang branch tư vấn
      • “Báo giá” → Nối sang branch báo giá
      • “Hỗ trợ kỹ thuật” → Nối sang branch hỗ trợ

Block 3: Text Input (Thu thập thông tin)

  • Kéo Text Input block.
  • Cấu hình:
    • Question: “Vui lòng nhập tên của bạn”
    • Save answer to variable: {{name}}
    • Required: Bật

Block 4: Email Input

  • Kéo Email block.
  • Cấu hình:
    • Question: “Email để chúng tôi gửi thông tin?”
    • Save answer to variable: {{email}}
    • Validate format: Bật tự động

3. Thêm logic nâng cao

Conditional Branching

Sau khi thu thập email, bạn muốn phân loại lead theo domain:

  • Kéo Condition block.
  • Cấu hình: {{email}} contains "@gmail.com" → Đi sang branch “Personal Email”
  • Ngược lại → Đi sang branch “Business Email”

Tích hợp OpenAI

  • Kéo OpenAI block vào canvas.
  • Cấu hình API key (có thể set trong Environment Variables).
  • Nhập prompt: “Tóm tắt nhu cầu của khách hàng tên {{name}} về {{service}}”.
  • Lưu kết quả vào variable {{ai_summary}}.

4. Theme và tùy chỉnh giao diện

  • Vào tab Theme:
    • Colors: Chọn màu chủ đạo, màu nền.
    • Fonts: Chọn font chữ phù hợp với brand.
    • Advanced: Thêm custom CSS nếu cần.

5. Xuất bản (Publish) chatbot

  1. Click “Publish” → Typebot tạo link tĩnh.
  2. Chọn cách triển khai:
    • Embed: Copy code JavaScript để nhúng vào website.
    • Popup: Hiển thị dưới dạng popup khi click nút.
    • Bubble: Nút chat nổi ở góc màn hình.
    • API: Gọi trực tiếp qua HTTP request.

Ví dụ code embed:

<script type="module">
  import Typebot from 'https://cdn.typebot.io/typebot.js'
  
  Typebot.initContainer('my-typebot-container')
</script>
<div id="my-typebot-container" style="width: 100%; height: 600px;"></div>

6. Xem analytics và tối ưu

  • Vào tab Results: Xem completion rate, drop-off rate từng block.
  • Export CSV: Tải về dữ liệu khách hàng để phân tích thêm.
  • A/B Testing: Tạo 2 version chatbot để test hiệu quả.

Tích hợp nâng cao và tối ưu

1. Tích hợp WhatsApp và Telegram

Typebot hỗ trợ WhatsApp Business APITelegram Bot API:

  1. WhatsApp: Cấu hình trong Settings → WhatsApp → Nhập API token từ Meta Business Suite.
  2. Telegram: Tạo bot qua BotFather → Lấy token → Nhập vào Typebot.

2. Webhook và automation

  • Kéo Webhook block để gửi dữ liệu sang n8n, Make.com, Zapier.
  • Ví dụ: Khi lead điền form → Webhook gửi data sang CRM (HubSpot, Salesforce) hoặc Google Sheets.

3. Bảo mật và performance

  • Rate limiting: Cấu hình trong .env để giới hạn request.
  • HTTPS bắt buộc: Đảm bảo dùng SSL certificate.
  • Database backup: Đặt cron job dump PostgreSQL hàng ngày.

Tại sao Typebot là lựa chọn tốt nhất cho chatbot self-hosted?

Typebot không chỉ là công cụ xây dựng chatbot miễn phí – đó là một nền tảng tự chủ giúp doanh nghiệp:

  • Tiết kiệm chi phí: Không phí license, chỉ trả cho VPS.
  • Kiểm soát dữ liệu: An toàn, tuân thủ GDPR, không lo leak thông tin khách hàng.
  • Mở rộng vô hạn: Tùy biến sâu, tích hợp AI, CRM, ERP theo nhu cầu.
  • Cộng đồng mạnh: Hơn 9.3k stars, Discord active, docs đầy đủ.

Hãy bắt đầu ngay hôm nay:

  1. Truy cập GitHub: https://github.com/baptisteArno/typebot.io → Star và fork repository.
  2. Cài đặt thử: Dùng VPS 5 USD hoặc máy local để triển khai theo hướng dẫn trên.
  3. Tham gia cộng đồng: Join Discord để nhận hỗ trợ và chia sẻ kinh nghiệm.
  4. Đóng góp: Nếu bạn là developer, hãy đóng góp code, dịch docs, hoặc báo bug.

Với Typebot, bạn không chỉ xây dựng chatbot – bạn xây dựng tương lai tự động hóa của chính mình.

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận