Skip to content

Uma ferramenta que quebra barreiras de acesso e elementos que atrapalham a leitura! / Marreta is a tool that removes access barriers and visual distractions!

License

Notifications You must be signed in to change notification settings

manualdousuario/marreta

Repository files navigation

🛠️ Marreta

pt-br en

Forks Stars Issues

Marreta é uma ferramenta que quebra barreiras de acesso e elementos que atrapalham a leitura!

Antes e depois do Marreta

Instancia publica em marreta.pcdomanual.com!

✨ O que tem de legal?

  • Limpa e arruma URLs automaticamente
  • Remove parâmetros chatos de rastreamento
  • Força HTTPS pra manter tudo seguro
  • Troca de user agent pra evitar bloqueios
  • DNS esperto
  • Deixa o HTML limpinho e otimizado
  • Conserta URLs relativas sozinho
  • Permite colocar seus próprios estilos
  • Remove elementos indesejados
  • Cache, cache!
  • Bloqueia domínios que você não quer
  • Permite configurar headers e cookies do seu jeito
  • Tudo com SSL/TLS
  • PHP-FPM
  • OPcache ligado
  • Compartilhamento direto via PWA no Chrome do Android

🐳 Docker

Antes de começar

Só precisa ter instalado:

  • Docker e docker compose

Produção

curl -o ./docker-compose.yml https://raw.githubusercontent.com/manualdousuario/marreta/main/docker-compose.yml

Se necessario

nano docker-compose.yml

services:
  marreta:
    container_name: marreta
    image: ghcr.io/manualdousuario/marreta:latest
    ports:
      - "80:80"
    environment:
      - SITE_NAME=
      - SITE_DESCRIPTION=
      - SITE_URL=
  • SITE_NAME: Nome do seu Marreta
  • SITE_DESCRIPTION: Conta pra que serve
  • SITE_URL: Onde vai rodar, endereço completo com https://. Se você alterar a porta no docker-compose (ex: 8080:80), você também deve incluir a porta no SITE_URL (ex: https://seusite:8080)
  • DNS_SERVERS: Quais servidores DNS usar 1.1.1.1, 8.8.8.8
  • SELENIUM_HOST: Servidor:PORTA do host do Selenium (ex: selenium-hub:4444)

Agora pode rodar docker compose up -d

Desenvolvimento

  1. Primeiro, clona o projeto:
git clone https://github.com/manualdousuario/marreta/
cd marreta
  1. Cria o arquivo de configuração:
cp app/.env.sample app/.env
  1. Configura do seu jeito no app/.env:
SITE_NAME="Marreta"
SITE_DESCRIPTION="Chapéu de paywall é marreta!"
SITE_URL=http://localhost
DNS_SERVERS=1.1.1.1,8.8.8.8
LOG_LEVEL=WARNING
SELENIUM_HOST=selenium-hub:4444
LANGUAGE=pt-br
  1. Roda tudo:
docker-compose up -d

Pronto! Vai estar rodando em http://localhost 🎉

⚙️ Personalizando

As configurações estão organizadas em data/:

  • domain_rules.php: Regras específicas para cada site
  • global_rules.php: Regras que se aplicam a todos os sites
  • blocked_domains.php: Lista de sites bloqueados

Traduções

  • /languages/: Cada lingua está em seu ISO id (pt-br, en, es ou de-de) e pode ser definida no environment LANGUAGE

Cache S3

Suporte de armazenamento do cache em S3. Configure as seguintes variáveis no seu .env:

S3_CACHE_ENABLED=true

S3_ACCESS_KEY=access_key
S3_SECRET_KEY=secret_key
S3_BUCKET=nome_do_bucket
S3_REGION=us-east-1
S3_FOLDER_=cache/
S3_ACL=private
S3_ENDPOINT=

Configurações possiveis:

## R2
S3_ACCESS_KEY=access_key
S3_SECRET_KEY=secret_key
S3_BUCKET=nome_do_bucket
S3_ENDPOINT=https://{TOKEN}.r2.cloudflarestorage.com
S3_REGION=auto
S3_FOLDER_=cache/
S3_ACL=private

## DigitalOcean
S3_ACCESS_KEY=access_key
S3_SECRET_KEY=secret_key
S3_BUCKET=nome_do_bucket
S3_ENDPOINT=https://{REGIAO}.digitaloceanspaces.com
S3_REGION=auto
S3_FOLDER_=cache/
S3_ACL=private

Integração com Selenium

Integração com Selenium para processar sites que requerem javascript ou têm algumas barreiras de proteção mais avançadas. Para usar esta funcionalidade, você precisa configurar um ambiente Selenium com Firefox. Adicione a seguinte configuração ao seu docker-compose.yml:

services:
  selenium-firefox:
    container_name: selenium-firefox
    image: selenium/node-firefox:4.27.0-20241204
    shm_size: 2gb
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
      - SE_ENABLE_TRACING=false
      - SE_NODE_MAX_SESSIONS=10
      - SE_NODE_OVERRIDE_MAX_SESSIONS=true
    entrypoint: bash -c 'SE_OPTS="--host $$HOSTNAME" /opt/bin/entry_point.sh'
    depends_on:
      - selenium-hub

  selenium-hub:
    image: selenium/hub:4.27.0-20241204
    container_name: selenium-hub
    environment:
      - SE_ENABLE_TRACING=false
      - GRID_MAX_SESSION=10
      - GRID_BROWSER_TIMEOUT=10
      - GRID_TIMEOUT=10
    ports:
      - 4442:4442
      - 4443:4443
      - 4444:4444

Configurações importantes:

  • shm_size: Define o tamanho da memória compartilhada para o Firefox (2GB recomendado)
  • SE_NODE_MAX_SESSIONS: Número máximo de sessões simultâneas por nó
  • GRID_MAX_SESSION: Número máximo de sessões simultâneas no hub
  • GRID_BROWSER_TIMEOUT e GRID_TIMEOUT: Timeouts em segundos

Após configurar o Selenium, certifique-se de definir a variável SELENIUM_HOST no seu ambiente para apontar para o hub do Selenium (geralmente selenium-hub:4444).

Sistema de Logs

Os logs são armazenados em app/logs/app.log com rotação automática a cada 7 dias.

Configurações de log disponíveis no .env ou docker:

LOG_LEVEL=WARNING

Níveis de log disponíveis:

  • DEBUG: Informações detalhadas para debug
  • INFO: Informações gerais sobre operações
  • WARNING: Avisos que merecem atenção (padrão)
  • ERROR: Erros que não interrompem a operação
  • CRITICAL: Erros críticos que precisam de atenção imediata

🛠️ Manutenção

Logs

Ver os logs da aplicação:

docker-compose logs app
# ou diretamente do arquivo de log
cat app/logs/app.log

Limpando o cache

Quando precisar limpar:

docker-compose exec app rm -rf /app/cache/*

🚀 Integrações


Feito com ❤️! Se tiver dúvidas ou sugestões, abre uma issue que a gente ajuda! 😉

Agradecimento ao projeto https://github.com/burlesco/burlesco e https://github.com/nang-dev/hover-paywalls-browser-extension/ que serviu de base para varias regras!

Star History

Star History Chart

About

Uma ferramenta que quebra barreiras de acesso e elementos que atrapalham a leitura! / Marreta is a tool that removes access barriers and visual distractions!

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 3

  •  
  •  
  •