GG.chatbot
Publicar

Manual

Esta página trata da publicação do GG.chatbot em um servidor, manualmente. Se você quer rodá-lo localmente para desenvolvimento, veja o guia de instalação local.

A forma mais simples de começar é com o serviço gerenciado oficial na nuvem. Alta disponibilidade, backups, segurança e manutenção ficam por conta de mim, Baptiste, fundador do GG.chatbot. A versão em nuvem economiza bastante tempo e recursos de desenvolvimento. Para a maioria dos sites acaba sendo a melhor relação custo-benefício, e a receita financia a manutenção e a evolução do projeto. Ou seja, você apoia software fair source e ainda recebe um ótimo serviço.

Requisitos

  • Um banco Postgres hospedado em algum lugar. Para produção, o Neon é o provedor que eu escolho. Não é link de afiliado: é simplesmente o provedor que uso e recomendo para produção. Você também pode usar qualquer provedor Postgres compatível ou hospedar o Postgres por conta própria.
  • Um servidor com Node.js 24.x, bun, Nginx e PM2 instalados.
  • Experiência em publicar aplicações Next.js com PM2. Veja este guia para mais informações.

Primeiros passos

  1. Bifurque ou clone o repositório e mude para a versão estável mais recente.
git clone git@github.com:<username>/typebot.io.git
cd typebot.io
git checkout latest
  1. Configure as variáveis de ambiente copiando os arquivos de exemplo e seguindo o guia de configuração para preencher os valores que faltam.
cp .env.example .env

O usuário do banco precisa ter o papel SUPERUSER. Você prepara e migra o banco com o comando bunx nx db:migrate prisma.

  1. Instale as dependências
bun install
  1. Execute as migrações do banco
bunx nx db:migrate prisma
  1. Compile o builder e o viewer
bunx nx run-many -t build -p builder,viewer

Se você encontrar o erro Node ran out of memory, aumente o limite de memória do Node.js. Por exemplo, NODE_OPTIONS=--max-old-space-size=4096 eleva o limite para 4 GB. Veja esta resposta no Stack Overflow para mais detalhes.

Publicação

Publicar o builder

Na raiz do repositório, inicie o builder com o PM2:

pm2 start bunx --name=typebot-builder -- nx start builder -- -p 3000

Publicar o viewer

Na raiz do repositório, inicie o viewer com o PM2:

pm2 start bunx --name=typebot-viewer -- nx start viewer -- -p 3001

Você pode alterar as portas informadas após o -p. Os comandos do PM2 precisam ser executados na raiz do repositório, para que o Nx consiga resolver o workspace.

Configuração do Nginx

Você pode usar a configuração abaixo para servir o builder e o viewer com Nginx. Lembre-se de substituir os valores de server_name pelos domínios da sua instância — eles devem corresponder ao NEXTAUTH_URL e ao NEXT_PUBLIC_VIEWER_URL. Veja este guia para um passo a passo de configuração do Nginx com PM2.

server {
     listen 80;
     server_name typebot.example.com;
     return 301 https://typebot.example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name typebot.example.com;

    # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/typebot.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/typebot.example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    location ^~ / {
         proxy_pass http://localhost:3000;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection 'upgrade';
         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;
         proxy_cache_bypass $http_upgrade;
    }
}

server {
     listen 80;
     server_name bot.example.com;
     return 301 https://bot.example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name bot.example.com;

    # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/bot.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/bot.example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    location ^~ / {
         proxy_pass http://localhost:3001;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection 'upgrade';
         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;
         proxy_cache_bypass $http_upgrade;

         # Necessary to enable message streaming
         proxy_buffering off;
    }
}

On this page