File size: 9,855 Bytes
9deabdc
 
 
8b8f916
c143758
affe6ff
 
c143758
4ebde2b
c143758
affe6ff
 
c143758
4ebde2b
8b8f916
c143758
4ebde2b
 
9426207
 
 
affe6ff
4ebde2b
8b8f916
 
 
4ebde2b
 
722f6da
9deabdc
affe6ff
9deabdc
affe6ff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9deabdc
722f6da
 
9426207
 
 
 
 
 
 
 
 
 
 
 
 
722f6da
9deabdc
 
affe6ff
 
9deabdc
affe6ff
 
9deabdc
 
 
 
 
 
affe6ff
6b9a526
 
722f6da
affe6ff
c143758
affe6ff
 
b27f14d
 
9deabdc
 
 
5ddda4c
c143758
5ddda4c
 
9deabdc
 
 
 
 
 
 
 
5ddda4c
 
81a1c1a
affe6ff
9deabdc
affe6ff
 
9deabdc
 
 
 
 
 
 
5ddda4c
b27f14d
9deabdc
b27f14d
 
9426207
6b9a526
affe6ff
 
9deabdc
affe6ff
 
9deabdc
 
 
722f6da
6b9a526
722f6da
9deabdc
5ddda4c
c143758
6b9a526
affe6ff
9deabdc
affe6ff
 
9deabdc
 
6b9a526
affe6ff
8b8f916
 
 
 
 
 
 
4ebde2b
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# Dockerfile β€” AKIRA BOT HUGGING FACE SPACES (Atualizado Janeiro 2026)
# βœ… Otimizado para ambiente de containers restritos (sistema de arquivos somente leitura)
# βœ… CorreΓ§Γ£o de DNS/IPv4 para erro web.whatsapp.com no Hugging Face
# βœ… ConfiguraΓ§Γ£o DNS via NODE_OPTIONS (funciona em sistemas read-only)

FROM node:20-alpine

# ═══════════════════════════════════════════════════════════════════
# VARIÁVEIS DE AMBIENTE (CORREÇÃO DE CONEXΓƒO DNS - CRÍTICO)
# ═══════════════════════════════════════════════════════════════════
ENV NODE_ENV=production \
    PORT=7860 \
    TOOLS_INSTALLED=true \
    # SOLUÇÃO PARA ERRO DNS NO HUGGING FACE (CRÍTICO PARA QR CODE):
    # ForΓ§a IPv4 e usa DNS do Google via NODE_OPTIONS
    NODE_OPTIONS="--dns-result-order=ipv4first --no-warnings" \
    # ConfiguraΓ§Γ΅es de rede otimizadas para containers
    UV_THREADPOOL_SIZE=128 \
    LANG=C.UTF-8 \
    # ConfiguraΓ§Γ΅es especΓ­ficas para Hugging Face:
    DATA_DIR=/tmp/akira_data

# ═══════════════════════════════════════════════════════════════════
# NOTA: /etc/resolv.conf Γ© somente-leitura no HF Spaces!
# O DNS Γ© configurado via NODE_OPTIONS no comando de inicializaΓ§Γ£o
# e atravΓ©s de variΓ‘veis de ambiente do sistema
# ═══════════════════════════════════════════════════════════════════

# ═══════════════════════════════════════════════════════════════════
# INSTALAR DEPENDÊNCIAS DO SISTEMA ESSENCIAIS
# ═══════════════════════════════════════════════════════════════════
# Removidas ferramentas pesadas de pentesting para reduzir tamanho e evitar problemas

RUN apk add --no-cache \
    git \
    curl \
    wget \
    python3 \
    py3-pip \
    make \
    g++ \
    cairo-dev \
    pango-dev \
    jpeg-dev \
    giflib-dev \
    ffmpeg \
    yt-dlp \
    ca-certificates \
    openssl \
    openssl-dev \
    zlib-dev \
    bash

# ═══════════════════════════════════════════════════════════════════
# CONFIGURAÇÃO DE DIRETΓ“RIOS DE DADOS (USANDO /tmp PARA PERMISSΓ•ES)
# ═══════════════════════════════════════════════════════════════════
# No Hugging Face, /tmp Γ© o ΓΊnico diretΓ³rio com permissΓ΅es de escrita confiΓ‘veis

RUN mkdir -p /tmp/akira_data && \
    mkdir -p /tmp/akira_data/auth_info_baileys && \
    mkdir -p /tmp/akira_data/database && \
    mkdir -p /tmp/akira_data/logs && \
    mkdir -p /tmp/akira_data/temp && \
    chmod -R 777 /tmp/akira_data

# ═══════════════════════════════════════════════════════════════════
# VERIFICAÇÃO DE CONECTIVIDADE DE REDE
# ═══════════════════════════════════════════════════════════════════
RUN echo "πŸ” Verificando conectividade de rede..." && \
    curl -s --connect-timeout 10 https://httpbin.org/get >/dev/null && echo "βœ… Rede OK" || echo "⚠️  Rede pode ter restriΓ§Γ΅es"

# ═══════════════════════════════════════════════════════════════════
# INSTALAR FERRAMENTAS BÁSICAS DO GITHUB (LEVES)
# ═══════════════════════════════════════════════════════════════════

# 1. SQLMAP (opcional - comentado para reduzir tamanho)
# RUN mkdir -p /opt && \
#     cd /opt && \
#     git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git && \
#     chmod +x /opt/sqlmap/sqlmap.py && \
#     ln -s /opt/sqlmap/sqlmap.py /usr/local/bin/sqlmap

# 2. Ferramentas Python leves - USANDO APK EM VEZ DE PIP
RUN apk add --no-cache py3-requests py3-beautifulsoup4

# ═══════════════════════════════════════════════════════════════════
# CONFIGURAÇÃO DO DIRETΓ“RIO DE TRABALHO
# ═══════════════════════════════════════════════════════════════════

WORKDIR /app

# ═══════════════════════════════════════════════════════════════════
# INSTALAÇÃO DE DEPENDÊNCIAS NODE.JS (OTIMIZADA)
# ═══════════════════════════════════════════════════════════════════

# Copiar package.json primeiro para otimizar o cache de camadas do Docker
COPY package*.json ./

# InstalaΓ§Γ£o otimizada para Hugging Face
RUN npm config set fetch-retry-mintimeout 30000 && \
    npm config set fetch-retry-maxtimeout 180000 && \
    npm install --omit=dev --no-audit --progress=false --fetch-retries=3 --legacy-peer-deps

# ═══════════════════════════════════════════════════════════════════
# COPIAR CΓ“DIGO DA APLICAÇÃO
# ═══════════════════════════════════════════════════════════════════

COPY . .

# ═══════════════════════════════════════════════════════════════════
# AJUSTES DE ESTRUTURA (SE NECESSÁRIO)
# ═══════════════════════════════════════════════════════════════════

# Verificar se modules existe, caso contrΓ‘rio criar estrutura bΓ‘sica
RUN if [ ! -d "./modules" ]; then \
        echo "⚠️  Pasta modules não encontrada, criando estrutura bÑsica..." && \
        mkdir -p modules; \
    else \
        echo "βœ… Estrutura de mΓ³dulos encontrada"; \
    fi

# ═══════════════════════════════════════════════════════════════════
# CONFIGURAÇÃO DE PERMISSΓ•ES (ADAPTADA PARA HUGGING FACE)
# ═══════════════════════════════════════════════════════════════════

# Usar usuΓ‘rio node (jΓ‘ existe no container)
USER node

# ═══════════════════════════════════════════════════════════════════
# VERIFICAÇÃO FINAL
# ═══════════════════════════════════════════════════════════════════

RUN echo "πŸ” Verificando instalaΓ§Γ£o..." && \
    node -v && \
    npm -v && \
    python3 --version && \
    python3 -c "import requests; import bs4; print('βœ… Python packages installed')" 2>/dev/null || echo "⚠️  Python packages not fully installed" && \
    ffmpeg -version | head -1 && \
    echo "βœ… Dockerfile construΓ­do com sucesso para Hugging Face Spaces"

# Limpar cache para reduzir tamanho da imagem
RUN npm cache clean --force 2>/dev/null || true

# Porta padrΓ£o do Hugging Face
EXPOSE 7860

# Healthcheck adaptado para Hugging Face
HEALTHCHECK --interval=60s --timeout=20s --start-period=120s --retries=3 \
    CMD curl -f http://localhost:7860/health 2>/dev/null || wget -q --spider http://localhost:7860/health 2>/dev/null || exit 1

# ═══════════════════════════════════════════════════════════════════
# COMANDO DE INICIALIZAÇÃO COM DNS CONFIGURADO
# ═══════════════════════════════════════════════════════════════════
# O DNS Γ© configurado via NODE_OPTIONS que forΓ§a IPv4
# O arquivo /etc/resolv.conf Γ© somente-leitura no HF Spaces,
# entΓ£o usamos apenas variΓ‘veis de ambiente e configuraΓ§Γ΅es do Node.js

CMD ["sh", "-c", "node --dns-result-order=ipv4first index.js"]