Configurando um Bot QQ com Mirai Usando Docker Compose

Este guia detalha o processo de implantação de um bot QQ utilizando a estrutura Mirai, gerenciada eficientemente com Docker Compose. Abordaremos desde a instalação das ferramentas essenciais até a configuração dos plugins e permissões necessárias para o funcionamento do seu bot.

  1. Instalação do Docker

O primeiro paso é garantir que o Docker esteja instalado em seu sistema operacional. Execute o seguinte script oficial para uma instalação rápida:

curl -sSL https://get.docker.com/ | sh
  1. Instalação do Docker Compose

Após a instalação do Docker, é necessário configurar o Docker Compose, uma ferramenta crucial para orquestrar aplicações multi-contêineres. Siga os comandos abaixo:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Para verificar se a instalação foi bem-sucedida, execute:

docker-compose --version
  1. Gerenciamento Visual com Portainer

Para uma administração visual e simplificada de seus contêineres Docker, recomendamos o Portainer. Execute o comando abaixo para implantar o Portainer Community Edition (CE):

docker run -d -p 9000:9000 \
    --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    --name portainer \
    portainer/portainer-ce:latest

Após a inicialização, acesse o Portainer através do seu navegador em http://seu_endereco_ip:9000 e siga as instruções para configurar uma senha de administrador.

  1. Configurando o Mirai com Docker Compose

Crie um arquivo chamado docker-compose.yml em um diretório de sua escolha. Este arquivo definirá os serviços necessários para o seu bot Mirai.

nano docker-compose.yml

Insira o seguinte conteúdo no arquivo. Este setup inclui um serviço VNC (novnc) para o login inicial do Mirai e o serviço principle do bot (mirai-cqhttp-bot):

version: '3.8'
services:
  # Serviço VNC para acesso visual ao Mirai (necessário para login interativo)
  novnc:
    image: theasp/novnc:latest
    restart: always
    environment:
      DISPLAY_WIDTH: 425
      DISPLAY_HEIGHT: 900
      RUN_XTERM: 'no'
    ports:
      - '11180:8080' # Porta para acessar o VNC via navegador

  # Serviço principal do bot Mirai, utilizando a imagem mirai-cqhttp
  mirai-cqhttp-bot:
    image: nanahira/mirai-cqhttp:x
    restart: always
    ports:
      - '6700:6700' # Porta padrão para o protocolo HTTP/WS do bot
    volumes:
      - ./data:/usr/src/app/data    # Para dados persistentes do Mirai
      - ./config:/usr/src/app/config # Para arquivos de configuração
      - ./bots:/usr/src/app/bots    # Para armazenar dados específicos do bot
      - ./plugins:/usr/src/app/plugins # Para os plugins do Mirai
    stdin_open: true # Permite interação via console para o processo de login
    environment:
      DISPLAY: novnc:0.0       # Conecta o Mirai ao ambiente gráfico do novnc
      QQ_ID: SEU_ID_QQ         # SUBSTITUA pelo número do seu QQ
      QQ_PASS: SUA_SENHA_QQ    # SUBSTITUA pela sua senha do QQ (cuidado: texto claro)
      WS_PORT: 6700            # Porta para o WebSocket
      WS_TOKEN: SUA_CHAVE_SECRETA # Token para autenticação de API (SUBSTITUA)
      TZ: Asia/Shanghai        # Define o fuso horário para o bot

Importante: Lembre-se de substituir SEU_ID_QQ, SUA_SENHA_QQ e SUA_CHAVE_SECRETA pelos seus dados reais. Considere usar variáveis de ambiente ou secrets para senhas em ambientse de produção.

  1. Executando o Mirai e Login Inicial

No diretório onde você criou o docker-compose.yml, inicie os serviços:

docker-compose up

O Mirai irá iniciar e tentar fazer login. Para concluir o processo (que pode exigir verificação), acesse a interface VNC em seu navegador:

http://seu_endereco_ip:11180/vnc.html

Na tela do VNC, siga as instruções para escanear um código QR ou usar o método de link/código de verificação no seu aplicativo QQ móvel. Após a verificação bem-sucedida e o login do bot, você pode parar o contêiner com Ctrl+C e então iniciá-lo novamente em modo "detacached" (segundo plano) se desejar:

docker-compose up -d
  1. Instalação de Plugins Essenciais

Para estender as funcionalidades do seu bot Mirai, instale os seguintes plugins:

  • chat-command: Permite executar comandos diretamente no chat, prefixados com /.
  • mirai-api-http: Oferece suporte HTTP e WebSocket para integração com outras linguagens de programação e ferramentas.

Baixe os arquivos .jar das últimas versões desses plugins nos respectivos repositórios de release (geralmente no GitHub). Em seguida, interrompa os serviços do Docker Compose se estiverem em execução (docker-compose down) e coloque os arquivos .jar baixados no diretório plugins. Este diretório corresponde ao volume ./plugins que você mapeou no seu docker-compose.yml.

Se você enfrentar problemas de permissão para gravar no diretório plugins, pode precisar ajustar as permissões do diretório local ou, alternativamente, usar a interface do Portainer (http://seu_endereco_ip:9000/#/containers) para acessar o volume e fazer o upload dos arquivos.

Após adicionar os plugins, reinicie o Docker Compose:

docker-compose up -d

Os logs indicarão o carregamento dos plugins e a criação de arquivos de configuração padrão no diretório config.

  1. Configuração dos Plugins

7.1. Gerenciamento de Permissões

Para conceder acesso de administrador ao seu bot, edite o arquivo PermissionService.yml, que estará localizado em ./config/PermissionService.yml:

nano ./config/PermissionService.yml

Localize a seção de permissões e adicione os IDs QQ dos usuários que você deseja que sejam administradores. O formato para um usuário individual é u:SEU_ID_QQ. Por exemplo:

# Exemplo de conteúdo do PermissionService.yml
permissions:
  # Permissão padrão para o console
  - console:*
  # Adicione seu ID QQ como administrador para todas as funcionalidades
  - u:1234567890:* # Substitua 1234567890 pelo seu ID QQ

O curinga * após o ID concede acesso a todas as funcionalidades de todos os plugins. Salve as alterações e saia do editor.

7.2. Configuração do Protocolo HTTP/WS (mirai-api-http)

Edite o arquivo de configuração do plugin mirai-api-http, que se encontra em ./config/mirai-api-http/setting.yml:

nano ./config/mirai-api-http/setting.yml

Certifique-se de que os seguintes parâmetros estejam ajustados para permitir que seu bot seja acessível de fora do contêiner e utilize o token de segurança correto:

  • host: Defina como 0.0.0.0 para permitir conexões de qualquer endereço IP.
  • port e verifyKey: Devem corresponder aos valores (6700 e SUA_CHAVE_SECRETA) que você definiu no seu docker-compose.yml.

Um exemplo da seção relevante no setting.yml:

## Configurações para adapters
adapterSettings:
  http:
    host: 0.0.0.0
    port: 6700
    cors: ["*"] # Permite CORS de qualquer origem, ajuste conforme necessário para segurança
  ws:
    host: 0.0.0.0
    port: 6700
    reservedSyncId: -1

## Ativar verificação de chave
enableVerify: true
verifyKey: SUA_CHAVE_SECRETA # Deve corresponder a WS_TOKEN no docker-compose.yml

Salve as alterações e saia.

  1. Finalização

Após todas as configurações terem sido aplicadas, reinicie o Docker Compose uma última vez para que as alterações entrem em vigor:

docker-compose up -d

Seu bot QQ Mirai está agora totalmente configurado e pronto para uso, com suporte a comandos de chat e integração HTTP/WebSocket para desenvolvimento e automação avançada.

Tags: Docker Docker Compose Mirai QQ Bot Portainer

Publicado em 8-27 21:28