Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,5 @@ mssql/var_opt_mssql
mssql/backups
logs
postgres/data/*

.tmp
15 changes: 15 additions & 0 deletions chatwoot/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Variáveis de ambiente para Chatwoot
POSTGRES_HOST=postgres
POSTGRES_DATABASE=chatwoot
POSTGRES_USERNAME=chatwoot
POSTGRES_PASSWORD=chatwoot
REDIS_URL=redis://redis:6379
RAILS_ENV=production
RACK_ENV=production
SECRET_KEY_BASE=abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234
FRONTEND_URL=http://localhost:3000
DEFAULT_LOCALE=pt_BR
FILE_STORAGE_SERVICE=local
ENABLE_ACCOUNT_SIGNUP=true
SMTP_ENABLED=false
ENABLE_EMAIL_VERIFICATION=false
86 changes: 86 additions & 0 deletions chatwoot/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Chatwoot - Docker Compose

Instância de Chatwoot rodando localmente via Docker Compose.

## Iniciando

```bash
docker compose -f ~/personal/docker-composes/chatwoot/docker-compose.yml up
```

A aplicação estará disponível em: **http://localhost:3000**

## Primeira vez

Na primeira vez que acessar, você verá a tela de boas-vindas. Para criar sua conta:

1. Clique em **"Create a new account"** ou similar
2. Preencha com seus dados:
- **Email**: seu_email@example.com
- **Password**: sua_senha
- **Name**: seu nome
3. Clique em **Sign up**

## Confirmando email do usuário

Se você não receber o email de confirmação, execute o script para confirmar manualmente:

```bash
./confirm-email.sh seu_email@example.com
```

Ou manualmente via comando:

```bash
docker compose -f ~/personal/docker-composes/chatwoot/docker-compose.yml exec -T chatwoot bundle exec rails runner "User.find_by(email: 'seu_email@example.com').update(confirmed_at: Time.current)"
```

## Tornando primeiro usuário admin

Se o primeiro usuário não foi criado como admin automaticamente, use o script:

```bash
./make-first-user-admin.sh
```

Ou manualmente:

```bash
docker compose -f ~/personal/docker-composes/chatwoot/docker-compose.yml exec -T chatwoot bundle exec rails runner "au = AccountUser.where(user_id: User.first.id).first; au.update(role: :administrator) if au"
```

## Criando usuário admin via CLI

Se precisar criar um usuário admin via comando:

```bash
docker compose -f ~/personal/docker-composes/chatwoot/docker-compose.yml exec chatwoot bundle exec rake 'chatwoot:create_account[account_name]' 'chatwoot:create_user[email@example.com,Name,password,account_name]'
```

## Parando

```bash
docker compose -f ~/personal/docker-composes/chatwoot/docker-compose.yml down
```

## Limpando dados (remover tudo)

```bash
docker compose -f ~/personal/docker-composes/chatwoot/docker-compose.yml down -v
```

## Configurações

As variáveis de ambiente estão em `.env`. Principais:

- `POSTGRES_HOST`, `POSTGRES_DATABASE`, `POSTGRES_USERNAME`, `POSTGRES_PASSWORD` - Conexão PostgreSQL
- `REDIS_URL` - URL do Redis
- `FRONTEND_URL` - URL para acessar a aplicação
- `DEFAULT_LOCALE` - Idioma padrão (pt_BR = português)
- `SECRET_KEY_BASE` - Chave de segurança da aplicação

## Serviços

- **Chatwoot**: http://localhost:3000
- **PostgreSQL**: localhost:5432 (usuário: chatwoot, senha: chatwoot)
- **Redis**: localhost:6379
10 changes: 10 additions & 0 deletions chatwoot/confirm-email.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

if [ -z "$1" ]; then
echo "Uso: ./confirm-email.sh seu_email@example.com"
exit 1
fi

EMAIL=$1

docker compose -f ~/personal/docker-composes/chatwoot/docker-compose.yml exec -T chatwoot bundle exec rails runner "User.find_by(email: '$EMAIL').update(confirmed_at: Time.current)" && echo "Email $EMAIL confirmado com sucesso!"
61 changes: 61 additions & 0 deletions chatwoot/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
services:
postgres:
image: postgres:14
restart: always
environment:
POSTGRES_DB: chatwoot
POSTGRES_USER: chatwoot
POSTGRES_PASSWORD: chatwoot
volumes:
- pg_data:/var/lib/postgresql/data
networks:
- chatwoot
healthcheck:
test: ["CMD-SHELL", "pg_isready -U chatwoot"]
interval: 10s
timeout: 5s
retries: 5

redis:
image: redis:7
restart: always
volumes:
- redis_data:/data
networks:
- chatwoot
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5

chatwoot:
image: chatwoot/chatwoot:v3.13.0
restart: on-failure
env_file:
- .env
ports:
- "3000:3000"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
networks:
- chatwoot
volumes:
- chatwoot_data:/app/storage
entrypoint: /bin/sh
command: -c "bundle exec rails db:migrate 2>/dev/null || true && bundle exec rails s -b 0.0.0.0 -p 3000"

volumes:
pg_data:
redis_data:
chatwoot_data:

networks:
chatwoot:
driver: bridge
ipam:
config:
- subnet: 172.25.0.0/16
1 change: 1 addition & 0 deletions chatwoot/make-first-user-admin.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
docker compose -f ~/personal/docker-composes/chatwoot/docker-compose.yml exec -T chatwoot bundle exec rails runner "au = AccountUser.where(user_id: User.first.id).first; au.update(role: :administrator) if au; puts au.inspect"
5 changes: 1 addition & 4 deletions redis/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@ services:
image: redis
restart: always
container_name: redis
network_mode: host
volumes:
- ./redis_data:/data
networks:
- net
ports:
- 6379:6379
command: ["redis-server", "--appendonly", "yes"]
networks:
net: