From 35a75c5cbc11e50543f59eac541bd2bae2ec7adc Mon Sep 17 00:00:00 2001 From: DelBuiTechCorporation Date: Fri, 17 Jan 2025 04:17:39 +0000 Subject: [PATCH] Redis DB, Username e Password, Ajuste no Env e Docker Compose --- .env.example | 14 ++++++++++++++ config.py | 22 ++++++++++++++++++---- docker-compose.yaml | 6 ++++++ manager.py | 7 +++++-- start.sh | 46 ++++++++++++++++++++++++++++++++++++++------- storage.py | 8 +++++--- 6 files changed, 87 insertions(+), 16 deletions(-) diff --git a/.env.example b/.env.example index 0ccdcd6..b8135e6 100644 --- a/.env.example +++ b/.env.example @@ -10,3 +10,17 @@ MANAGER_PASSWORD=impacteai2024 FASTAPI_PORT=8005 STREAMLIT_PORT=8501 HOST=0.0.0.0 +API_DOMAIN=seu.dominio.com #coloque seu subdominio da API apontado aqui + +#Redis +REDIS_HOST=redis-transcrevezap +REDIS_PORT=6380 # Porta personalizada para o Redis do TranscreveZAP +REDIS_DB=0 # Opcional: pode ser removida para usar o valor padrão +REDIS_USERNAME=impacteai # Usuário Redis +REDIS_PASSWORD=trascrevezap # Senha Redis + +#Env's Obrigatórios +GROQ_API_KEY=gsk_abc123... # Chave da API GROQ (deve começar com 'gsk_') +BUSINESS_MESSAGE=substitua_sua_mensagem_de_servico_aqui # Mensagem de rodapé após transcrição +PROCESS_GROUP_MESSAGES=false # Habilita processamento de mensagens em grupos - Padrão "false" +PROCESS_SELF_MESSAGES=true # Habilita processamento de mensagens enviadas por você - Padrão "true" \ No newline at end of file diff --git a/config.py b/config.py index 9c5c2f3..9771073 100644 --- a/config.py +++ b/config.py @@ -29,14 +29,28 @@ logger.addHandler(handler) # Nível de log inicial (pode ser ajustado após o carregamento de configurações) logger.setLevel(logging.INFO) -# Conexão com o Redis +# Conexão com o Redis usando username e password redis_client = redis.Redis( host=os.getenv('REDIS_HOST', 'localhost'), - port=int(os.getenv('REDIS_PORT', 6380)), - db=int(os.getenv('REDIS_DB', '0')), + port=int(os.getenv('REDIS_PORT', 6379)), + username=os.getenv('REDIS_USERNAME', 'default'), # Nome de usuário padrão + password=os.getenv('REDIS_PASSWORD', ''), # Senha padrão + db=int(os.getenv('REDIS_DB', 0)), # Banco de dados padrão decode_responses=True ) +# Testar conexão com Redis +try: + redis_client.ping() + logger.info("Conexão com Redis estabelecida com sucesso!") +except redis.exceptions.AuthenticationError: + logger.critical("Falha de autenticação no Redis. Verifique as credenciais.") + raise +except Exception as e: + logger.critical(f"Erro ao conectar ao Redis: {e}") + raise + +# Classe Settings para gerenciar configurações class Settings: """Classe para gerenciar configurações do sistema.""" def __init__(self): @@ -110,4 +124,4 @@ def load_settings(): # Ajustar nível de log log_level = getattr(logging, settings.LOG_LEVEL, logging.INFO) logger.setLevel(log_level) - logger.info(f"Nível de log ajustado para: {logging.getLevelName(log_level)}") \ No newline at end of file + logger.info(f"Nível de log ajustado para: {logging.getLevelName(log_level)}") diff --git a/docker-compose.yaml b/docker-compose.yaml index 1dea44f..b1472de 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -21,6 +21,12 @@ services: - REDIS_HOST=redis-transcrevezap - REDIS_PORT=6380 # Porta personalizada para o Redis do TranscreveZAP - REDIS_DB=0 # Opcional: pode ser removida para usar o valor padrão + - REDIS_USERNAME=impacteai # Usuário Redis + - REDIS_PASSWORD=trascrevezap # Senha Redis + - GROQ_API_KEY=gsk_abc123... # Chave da API GROQ (deve começar com 'gsk_') + - BUSINESS_MESSAGE=substitua_sua_mensagem_de_servico_aqui # Mensagem de rodapé após transcrição + - PROCESS_GROUP_MESSAGES=false # Habilita processamento de mensagens em grupos - Padrão "false" + - PROCESS_SELF_MESSAGES=true # Habilita processamento de mensagens enviadas por você - Padrão "true" depends_on: - redis-transcrevezap deploy: diff --git a/manager.py b/manager.py index 551ddd7..bb712c4 100644 --- a/manager.py +++ b/manager.py @@ -15,10 +15,13 @@ st.set_page_config( initial_sidebar_state="expanded", ) -# 2. Depois: Inicialização do Redis +# Conexão com o Redis usando username e password redis_client = redis.Redis( host=os.getenv('REDIS_HOST', 'localhost'), - port=int(os.getenv('REDIS_PORT', 6380)), + port=int(os.getenv('REDIS_PORT', 6379)), + username=os.getenv('REDIS_USERNAME', 'default'), # Nome de usuário padrão + password=os.getenv('REDIS_PASSWORD', ''), # Senha padrão + db=int(os.getenv('REDIS_DB', 0)), # Banco de dados padrão decode_responses=True ) diff --git a/start.sh b/start.sh index f80d91d..1a5bddb 100644 --- a/start.sh +++ b/start.sh @@ -2,28 +2,60 @@ # Função para inicializar configurações no Redis se não existirem initialize_redis_config() { - redis-cli -h $REDIS_HOST -p $REDIS_PORT SET GROQ_API_KEY "sua_api_key_aqui" NX - redis-cli -h $REDIS_HOST -p $REDIS_PORT SET BUSINESS_MESSAGE "*Impacte AI* Premium Services" NX - redis-cli -h $REDIS_HOST -p $REDIS_PORT SET PROCESS_GROUP_MESSAGES "false" NX - redis-cli -h $REDIS_HOST -p $REDIS_PORT SET PROCESS_SELF_MESSAGES "true" NX - redis-cli -h $REDIS_HOST -p $REDIS_PORT SET API_DOMAIN "$API_DOMAIN" NX + redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" \ + --user "$REDIS_USERNAME" \ + -a "$REDIS_PASSWORD" \ + -n "$REDIS_DB" \ + SET GROQ_API_KEY "$GROQ_API_KEY" NX + + redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" \ + --user "$REDIS_USERNAME" \ + -a "$REDIS_PASSWORD" \ + -n "$REDIS_DB" \ + SET BUSINESS_MESSAGE "$BUSINESS_MESSAGE" NX + + redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" \ + --user "$REDIS_USERNAME" \ + -a "$REDIS_PASSWORD" \ + -n "$REDIS_DB" \ + SET PROCESS_GROUP_MESSAGES "$PROCESS_GROUP_MESSAGES" NX + + redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" \ + --user "$REDIS_USERNAME" \ + -a "$REDIS_PASSWORD" \ + -n "$REDIS_DB" \ + SET PROCESS_SELF_MESSAGES "$PROCESS_SELF_MESSAGES" NX + + redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" \ + --user "$REDIS_USERNAME" \ + -a "$REDIS_PASSWORD" \ + -n "$REDIS_DB" \ + SET API_DOMAIN "$API_DOMAIN" NX } # Aguardar o Redis estar pronto echo "Aguardando o Redis ficar disponível..." -until redis-cli -h $REDIS_HOST -p $REDIS_PORT PING; do +until redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" \ + --user "$REDIS_USERNAME" \ + -a "$REDIS_PASSWORD" \ + -n "$REDIS_DB" \ + PING | grep -q PONG; do echo "Redis não está pronto - aguardando..." sleep 5 done +echo "Redis está disponível." + # Inicializar configurações no Redis (apenas se não existirem) initialize_redis_config # Iniciar o FastAPI em background +echo "Iniciando o FastAPI..." uvicorn main:app --host 0.0.0.0 --port 8005 & # Iniciar o Streamlit -streamlit run manager.py --server.address 0.0.0.0 --server.port 8501 +echo "Iniciando o Streamlit..." +streamlit run manager.py --server.address 0.0.0.0 --server.port 8501 & # Manter o script rodando wait \ No newline at end of file diff --git a/storage.py b/storage.py index 2fa734b..75160e3 100644 --- a/storage.py +++ b/storage.py @@ -19,11 +19,13 @@ class StorageHandler: self.logger.setLevel(logging.DEBUG) self.logger.info("StorageHandler inicializado.") - # Conexão com o Redis + # Conexão com o Redis usando username e password self.redis = redis.Redis( host=os.getenv('REDIS_HOST', 'localhost'), - port=int(os.getenv('REDIS_PORT', 6380)), - db=0, + port=int(os.getenv('REDIS_PORT', 6379)), + username=os.getenv('REDIS_USERNAME', 'default'), # Nome de usuário padrão + password=os.getenv('REDIS_PASSWORD', ''), # Senha padrão + db=int(os.getenv('REDIS_DB', 0)), # Banco de dados padrão decode_responses=True )