Ferramenta web offline, leve e rápida para processamento de imagens e PDFs.
Construída em Go. O contêiner incluilibrsvgpara SVG epoppler-utilspara rasterização de PDF.
| Idioma | Link |
|---|---|
| 🇧🇷 Português | README_pt.md |
| 🇺🇸 English | README_en.md |
| 🇪🇸 Español | README_es.md |
| 🇫🇷 Français | README_fr.md |
| 🇩🇪 Deutsch | README_de.md |
| 🇷🇺 Русский | README_ru.md |
| 🇨🇳 中文 | README_zh.md |
| Categoria | Ferramentas |
|---|---|
| 🖼️ Imagem | Remover fundo, recorte interativo, redimensionar, converter (PNG/JPG/BMP), comprimir |
| 🎨 Cores | Extrair paleta de cores (HEX) |
| Imagens → PDF, juntar PDFs, dividir PDF, otimizar, proteger com senha | |
| 🔁 Conversão | PDF → Imagens, SVG → PNG |
| 📱 QR Code | Gerar e decodificar QR Codes e códigos de barras |
O sistema pode ser customizado através das seguintes variáveis de ambiente:
| Variável | Padrão | Descrição |
|---|---|---|
PORT |
7001 |
Porta em que o servidor web irá rodar. |
MAX_CONCURRENT_JOBS |
100 |
Limite de processamentos simultâneos (Rate Limiter) para evitar sobrecarga do servidor. |
docker run -d \
--name canivete-da-mata \
-p 7001:7001 \
--restart unless-stopped \
ghcr.io/facrf/canivete:latestAcesse em: http://localhost:7001
Consulte o arquivo docker-compose.yml — compatível com Portainer.
No Portainer:
- Stacks → Add Stack → Web editor
- Cole o conteúdo de
docker-compose.yml - Clique em Deploy the stack
git clone http://192.168.0.10:3010/facrf/canivete.git
cd canivete
docker build -t canivete-da-mata:latest .
docker run -d -p 7001:7001 --name canivete-da-mata canivete-da-mata:latestEsse erro indica que o executável não é compatível com a arquitetura do sistema.
O build usa a plataforma de destino do Docker BuildKit, sem fixar amd64.
Confira o sistema instalado (um Pi 400 também pode usar um sistema de 32 bits):
uname -m
getconf LONG_BIT
docker info --format '{{.Architecture}}'Com sistema de 64 bits (aarch64, 64 e Docker aarch64/arm64),
compile uma imagem local com uma tag própria:
docker buildx build --platform linux/arm64 --load -t canivete-da-mata:arm64 .
docker run -d --name canivete-pi400 -p 7001:7001 canivete-da-mata:arm64Em sistemas ARM de 32 bits, use --platform linux/arm/v7 e uma tag
canivete-da-mata:armv7 em ambos os comandos. Se o comando buildx não
existir, instale o plugin Docker Buildx. Não sobrescreva TARGETARCH com
--build-arg: deixe o Docker selecionar a arquitetura.
Para Portainer, publique a correção no GHCR antes de atualizar a stack.
Depois, habilite a opção de baixar a imagem novamente ao recriar o serviço.
Para usar o build local, altere image: para canivete-da-mata:arm64 na stack.
Uma imagem antiga em cache ainda pode conter o executável incompatível.
Sem Docker, confira o executável com file ./canivete. Para gerar um binário
ARM64 a partir do código, use:
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o canivete-linux-arm64 .A imagem no GHCR é publicada para múltiplas arquiteturas automaticamente via GitHub Actions:
| Plataforma | Hardware |
|---|---|
linux/amd64 |
Servidores x86_64, PCs, VMs |
linux/arm64 |
Raspberry Pi 4/400/5 (64-bit), Apple Silicon (M1/M2/M3) |
linux/arm/v7 |
Raspberry Pi 2/3/4/400 (32-bit), Orange Pi |
linux/riscv64 |
VisionFive 2, StarFive, Milk-V Mars |
- Sem banco de dados — imune a SQL Injection
- Templates Go com escaping automático de HTML/XSS
- Upload limitado com
http.MaxBytesReader - Validação de dimensões (máximo de 8000px e 20 megapixels)
- Validação de argumentos antes de passar a processos externos
- Senhas de PDF exigem mínimo de 8 caracteres
Consulte SECURITY.md para reportar vulnerabilidades.
O Canivete da Mata conta com uma cobertura completa de testes garantindo estabilidade e integridade:
- Detector de Corrida (Race Detector) ativo para evitar falhas de concorrência e uso paralelo na memória.
- Suíte cobrindo todos os utilitários, tratamento de imagens, limpeza de temporários e validação HTTP.
- Integração e verificação de formatação via Github Actions para assegurar a melhor performance com o Go 1.26+.
Para executar a suíte localmente (incluindo o race detector):
go test -race -count=1 ./...Veja CONTRIBUTING.md para instruções de como contribuir com o projeto.
Distribuído sob a licença MIT. Veja LICENSE para mais informações.