integraçao site

This commit is contained in:
HalbeBruno
2025-12-17 12:33:42 -03:00
parent fca10b13c1
commit 72b7d8ccd7
572 changed files with 1646 additions and 27 deletions

10
.env
View File

@@ -1,8 +1,10 @@
DB_HOST=db
DB_NAME=dnsblock
DB_USER=user
DB_PASS=password
DB_USER=dnsblock_user
DB_PASS=Sy61qblvmrn6DpirIR6FdE93
DB_ROOT_PASSWORD=4oe6wXyR4NSUEBcOGQDQkukR
DB_PORT=3306
APP_URL=http://localhost:8001
JWT_SECRET=change_this_secret_key_to_something_secure_in_production
APP_URL=http://localhost:8000
JWT_SECRET=1zjOy5pxGdSKfW7UcKY2usgE9CxBqr1P
INTEGRATION_TOKEN=yNrZr5qRTqAqlIzZ0glR3nXujFmdMTqb

View File

@@ -7,6 +7,7 @@ Este guia descreve os passos para implantar a aplicação DNSBlock em um ambient
- Docker instalado
- Docker Compose instalado
- Git instalado (para clonar o repositório)
- Make (opcional, para usar os comandos facilitadores)
## Passos para Instalação
@@ -42,7 +43,13 @@ nano .env
### 3. Inicializar os Containers
Execute o Docker Compose para construir e iniciar os serviços em segundo plano:
Você pode usar o comando `make` para facilitar o processo:
```bash
make up
```
Ou usar o comando manual:
```bash
docker-compose up -d --build
@@ -52,13 +59,20 @@ docker-compose up -d --build
A primeira vez que o container do banco de dados sobe, ele pode estar vazio. Você precisa importar o esquema do banco de dados.
Copie o arquivo de esquema para dentro do container e execute a importação:
**Recomendado (Corrige Encoding):**
```bash
# Aguarde alguns segundos para o banco de dados inicializar completamente
make import
```
# Importar o esquema
docker exec -i dnsblock-db mysql -u root -p<SUA_SENHA_ROOT> dnsblock < database/schema.sql
**Manual:**
Se preferir fazer manualmente, certifique-se de usar a flag de charset para evitar problemas de codificação:
```bash
# Copiar esquema e seeds
docker exec -i dnsblock-db mysql -u root -p<SUA_SENHA_ROOT> dnsblock --default-character-set=utf8mb4 < database/schema.sql
docker exec -i dnsblock-db mysql -u root -p<SUA_SENHA_ROOT> dnsblock --default-character-set=utf8mb4 < database/seeds.sql
```
*Nota: Substitua `<SUA_SENHA_ROOT>` pela senha definida no `.env`.*
@@ -67,11 +81,10 @@ docker exec -i dnsblock-db mysql -u root -p<SUA_SENHA_ROOT> dnsblock < database/
O banco de dados inicia vazio. Você tem duas opções para criar o primeiro usuário:
**Opção A: Importar dados de exemplo (Seeds)**
Isso criará um usuário `admin@dnsblock.com.br` com senha `admin123`.
```bash
docker exec -i dnsblock-db mysql -u root -p<SUA_SENHA_ROOT> dnsblock < database/seeds.sql
```
**Opção A: Usuário Padrão**
Se você executou o `make import` (ou importou o `seeds.sql` manualmente), o usuário padrão já foi criado:
- Email: `admin@dnsblock.com.br`
- Senha: `admin123`
**Opção B: Criar usuário manualmente**
Se preferir criar um usuário específico:

86
MIGRATION.md Normal file
View File

@@ -0,0 +1,86 @@
# Guia de Migração para Produção
Este guia descreve o procedimento seguro para atualizar o ambiente de produção para a nova arquitetura de persistência local, garantindo que nenhum dado seja perdido.
## Pré-requisitos
1. Acesso SSH ao servidor de produção.
2. Permissões de `sudo` ou docker.
## Procedimento Passo-a-Passo
### 1. Preparação e Backup
Antes de atualizar qualquer código, faça o backup do banco de dados atual (que está rodando no volume Docker antigo).
Se você já baixou o novo `Makefile`, pode usar o comando abaixo. Caso contrário, copie o `Makefile` para o servidor ou execute o comando manual.
**Opção A: Usando Makefile (Recomendado)**
```bash
make backup
```
*Isso criará um arquivo `.sql` na pasta `backups/`.*
**Opção B: Manual**
```bash
mkdir -p backups
docker exec dnsblock-db mysqldump -u root -p<SUA_SENHA_ATUAL> --all-databases > backups/backup_pre_migration.sql
```
### 2. Atualização do Código
Baixe a versão mais recente do código que contém a nova configuração do `docker-compose.yml` (com volume `./mysql_data`) e o `.env` seguro.
```bash
git pull origin main
# Ou copie os arquivos manualmente se não usar git
```
### 3. Configuração do Ambiente
1. Certifique-se de que o arquivo `.env` está configurado corretamente com as novas variáveis seguras (caso tenha mudado).
2. Garanta que o `.env` **NÃO** está versionado no git.
### 4. Reinicialização dos Serviços
Agora vamos trocar a infraestrutura. Ao rodar este comando, o container do banco será recriado apontando para a nova pasta `./mysql_data` (que estará vazia inicialmente).
```bash
make down
make up
```
*Ou `docker-compose down && docker-compose up -d`*
### 5. Restauração dos Dados
Agora que o banco novo está vazio, vamos importar o backup que fizemos no Passo 1.
Identifique o nome do arquivo gerado em `backups/` (ex: `backups/backup_20241217_100000.sql`).
```bash
make restore FILE=backups/backup_YYYYMMDD_HHMMSS.sql
```
**Manual:**
```bash
docker exec -i dnsblock-db mysql -u root -p<NOVA_SENHA_ENV> < backups/backup_pre_migration.sql
```
### 6. Verificação
Verifique se os dados foram restaurados corretamente acessando a aplicação ou consultando o banco:
```bash
# Verifica se o cliente "IPv0 Soluções" está correto
docker exec -i dnsblock-db mysql -u root -p<NOVA_SENHA_ENV> dnsblock -e "SELECT name FROM clients WHERE id=1;"
```
### 7. Limpeza (Opcional)
Após confirmar que tudo está funcionando, você pode listar e remover o volume antigo do Docker, se desejar liberar espaço.
```bash
docker volume ls
# Remova o volume 'dnsblock_dbdata' se ele existir e não for mais usado
# docker volume rm dnsblock_dbdata
```

81
Makefile Normal file
View File

@@ -0,0 +1,81 @@
# Makefile for DNSBlock
# Variables
DOCKER_COMPOSE = docker-compose
DB_CONTAINER = dnsblock-db
APP_CONTAINER = dnsblock-app
MYSQL_CMD = docker exec -i $(DB_CONTAINER) mysql -uroot -p"$$(grep DB_ROOT_PASSWORD .env | cut -d '=' -f2)" "$$(grep DB_NAME .env | cut -d '=' -f2)" --default-character-set=utf8mb4
# Colors
GREEN=\033[0;32m
NC=\033[0m # No Color
.PHONY: help setup up down restart logs shell import reset
help:
@echo "Sistema de Gerenciamento DNSBlock"
@echo "Comandos disponíveis:"
@echo " make setup - Configura o arquivo .env inicial"
@echo " make up - Inicia os containers em background"
@echo " make down - Para e remove os containers"
@echo " make restart - Reinicia os containers"
@echo " make logs - Exibe logs dos containers"
@echo " make shell - Abre um shell no container da aplicação"
@echo " make import - Importa o schema e seeds do banco de dados (Corrige Encoding)"
@echo " make reset - [PERIGO] Reseta tudo: down, apaga dados, up e importa"
setup:
@if [ ! -f .env ]; then \
cp .env.example .env; \
echo "$(GREEN).env criado a partir do exemplo. Edite-o com suas configurações!$(NC)"; \
else \
echo "Arquivo .env já existe."; \
fi
up:
@echo "$(GREEN)Iniciando containers...$(NC)"
$(DOCKER_COMPOSE) up -d
down:
@echo "$(GREEN)Parando containers...$(NC)"
$(DOCKER_COMPOSE) down
restart: down up
logs:
$(DOCKER_COMPOSE) logs -f
shell:
docker exec -it $(APP_CONTAINER) bash
import:
@echo "$(GREEN)Importando banco de dados com correção de encoding (UTF-8)...$(NC)"
@# Aguarda o banco estar pronto (simples sleep, idealmente seria um wait-for-it)
@sleep 5
@$(MYSQL_CMD) < database/schema.sql
@$(MYSQL_CMD) < database/seeds.sql
@echo "$(GREEN)Importação concluída com sucesso!$(NC)"
reset:
@echo "$(GREEN)Resetando ambiente...$(NC)"
$(DOCKER_COMPOSE) down
sudo rm -rf mysql_data
$(DOCKER_COMPOSE) up -d
@echo "Aguardando inicialização do banco de dados..."
@sleep 10
make import
backup:
@echo "$(GREEN)Gerando backup do banco de dados...$(NC)"
@mkdir -p backups
@docker exec $(DB_CONTAINER) mysqldump -u root -p"$$(grep DB_ROOT_PASSWORD .env | cut -d '=' -f2)" --all-databases > backups/backup_$$(date +%Y%m%d_%H%M%S).sql
@echo "$(GREEN)Backup salvo em backups/backup_$$(date +%Y%m%d_%H%M%S).sql$(NC)"
restore:
@if [ -z "$(FILE)" ]; then \
echo "Erro: Especifique o arquivo de backup com FILE=caminho/do/arquivo.sql"; \
exit 1; \
fi
@echo "$(GREEN)Restaurando banco de dados a partir de $(FILE)...$(NC)"
@docker exec -i $(DB_CONTAINER) mysql -u root -p"$$(grep DB_ROOT_PASSWORD .env | cut -d '=' -f2)" < $(FILE)
@echo "$(GREEN)Restauração concluída!$(NC)"

0
agent/build.sh Executable file → Normal file
View File

0
agent/build_venv/bin/normalizer Executable file → Normal file
View File

0
agent/build_venv/bin/pip Executable file → Normal file
View File

0
agent/build_venv/bin/pip3 Executable file → Normal file
View File

0
agent/build_venv/bin/pip3.11 Executable file → Normal file
View File

0
agent/build_venv/bin/pyi-archive_viewer Executable file → Normal file
View File

0
agent/build_venv/bin/pyi-bindepend Executable file → Normal file
View File

0
agent/build_venv/bin/pyi-grab_version Executable file → Normal file
View File

0
agent/build_venv/bin/pyi-makespec Executable file → Normal file
View File

0
agent/build_venv/bin/pyi-set_version Executable file → Normal file
View File

0
agent/build_venv/bin/pyinstaller Executable file → Normal file
View File

View File

View File

View File

View File

View File

Some files were not shown because too many files have changed in this diff Show More