This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Primeiros Passos

Experimente antes de instalar

Explore a interface completa em demo.snapotter.com - sem cadastro ou instalação necessários.

Início Rápido

bash
docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data snapotter/snapotter:latest

Este contêiner único roda tudo de que precisa: sem um DATABASE_URL definido, ele inicia seu próprio PostgreSQL e Redis na interface de loopback (modo embutido) e mantém todos os dados no volume SnapOtter-data. É a maneira mais rápida de experimentar o SnapOtter ou fazer self-host em um homelab. Para produção, rode a stack do Docker Compose abaixo, que mantém o PostgreSQL e o Redis em seus próprios contêineres. O modo embutido roda como root (o padrão) e se desliga automaticamente assim que você define DATABASE_URL.

Você será solicitado a trocar sua senha no primeiro login.

Analytics Anônimos de Produto

O SnapOtter inclui analytics de produto anônimos por padrão. Para desativá-los, abra Configurações → Sistema → Privacidade e desligue Analytics Anônimos de Produto. Eles param imediatamente para toda a instância.

Você também pode definir a variável de ambiente SNAPOTTER_TELEMETRY=0 (false e off também funcionam) para desabilitar toda a telemetria da instância sem um rebuild.

O monitoramento de erros é fornecido pelo Sentry, que patrocina o SnapOtter através do seu programa open-source.

Para detalhes sobre o que é coletado, veja O que o SnapOtter coleta.

Aceleração NVIDIA CUDA

Adicione --gpus all para remoção de fundo, upscaling, OCR, aprimoramento de rosto e restauração acelerados por NVIDIA CUDA:

bash
docker run -d --name SnapOtter -p 1349:1349 --gpus all -v SnapOtter-data:/data snapotter/snapotter:latest

Requer o NVIDIA Container Toolkit. Faz fallback para CPU automaticamente quando o CUDA está indisponível. A aceleração por iGPU Intel/AMD através de VA-API, Quick Sync ou OpenCL não é suportada para inferência de IA no momento. Veja Tags Docker para benchmarks.

Também no GHCR
bash
docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data ghcr.io/snapotter-hq/snapotter:latest

Ambos os registries publicam a mesma imagem a cada release.

Docker Compose

yaml
services:
  SnapOtter:
    image: snapotter/snapotter:latest  # or ghcr.io/snapotter-hq/snapotter:latest
    ports:
      - "1349:1349"
    volumes:
      - SnapOtter-data:/data
    environment:
      - AUTH_ENABLED=true
      - DEFAULT_USERNAME=admin
      - DEFAULT_PASSWORD=admin
      - DATABASE_URL=postgres://snapotter:snapotter@postgres:5432/snapotter
      - REDIS_URL=redis://redis:6379
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    restart: unless-stopped

  postgres:
    image: postgres:17-alpine
    environment:
      POSTGRES_USER: snapotter
      POSTGRES_PASSWORD: snapotter
      POSTGRES_DB: snapotter
    volumes:
      - SnapOtter-pgdata:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U snapotter"]
      interval: 10s
      timeout: 5s
      retries: 12

  redis:
    image: redis:8-alpine
    command: ["redis-server", "--maxmemory-policy", "noeviction", "--appendonly", "yes"]
    volumes:
      - SnapOtter-redisdata:/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 12

volumes:
  SnapOtter-data:
  SnapOtter-pgdata:
  SnapOtter-redisdata:

Veja Configuração para todas as variáveis de ambiente.

Build a partir do Código-Fonte

Pré-requisitos: Node.js 22+, pnpm 9+, Docker (para Postgres + Redis), Python 3.10+ (para features de IA), Git.

bash
git clone https://github.com/snapotter-hq/SnapOtter.git
cd SnapOtter
docker compose -f docker-compose.dev.yml up -d   # start Postgres + Redis
pnpm install
pnpm dev

O Que Você Pode Fazer

Processamento de Arquivos (200+ Ferramentas)

ModalidadeContagemFerramentas de Exemplo
Imagem105Redimensionar, Recortar, Comprimir, Converter, Remover Fundo, Upscale, OCR, Marca d'água, Colagem, Colorizar, Ferramentas de GIF, presets de formato
Vídeo57Cortar, Recortar, Comprimir, Converter, Mesclar, Extrair Áudio, Legendas Automáticas, Vídeo para GIF, Redimensionar, Estabilizar, presets de formato
Áudio27Cortar, Mesclar, Converter, Normalizar, Redução de Ruído, Transcrever, Alteração de Pitch, Fade, Criador de Toques, presets de formato
PDF / Documento42Mesclar, Dividir, Comprimir, OCR, Marca d'água, Ocultar, Word para PDF, Excel para PDF, Girar, Proteger, Reparar
Arquivos10CSV para JSON, JSON para XML, Mesclar CSVs, Dividir CSV, Criar ZIP, Extrair ZIP, Criador de Gráficos, YAML/JSON

Pipelines

Encadeie ferramentas em fluxos de trabalho de múltiplas etapas e aplique-os a uma imagem ou a um lote inteiro:

  1. Abra Pipelines na barra lateral.
  2. Adicione etapas (qualquer ferramenta, quaisquer configurações).
  3. Rode em um único arquivo - ou em um lote inteiro de uma vez.
  4. Salve o pipeline para reutilização posterior.

Os pipelines permitem 20 etapas por padrão. Defina MAX_PIPELINE_STEPS=0 para tornar o limite ilimitado.

Biblioteca de Arquivos

Cada arquivo que você processa pode ser salvo na sua biblioteca de Arquivos. O SnapOtter rastreia todo o histórico de versões para que você possa acompanhar cada etapa de processamento do upload original até a saída final.

Salvar é explícito: resultados que você salva na biblioteca são mantidos até você excluí-los, enquanto resultados que você processa e deixa sem salvar são limpos automaticamente após 72 horas (configurável via FILE_MAX_AGE_HOURS).

API REST e Chaves de API

Toda ferramenta é acessível via HTTP:

bash
curl -X POST http://localhost:1349/api/v1/tools/image/resize \
  -H "Authorization: Bearer si_<your-api-key>" \
  -F "[email protected]" \
  -F 'settings={"width":800,"height":600,"fit":"cover"}'

Gere chaves de API em Configurações → Chaves de API. Veja a referência da API REST para todos os endpoints, ou acesse http://localhost:1349/api/docs para a referência interativa.

Multiusuário e Equipes

Habilite múltiplos usuários com controle de acesso baseado em papéis:

  • Admin: acesso completo - gerenciar usuários, equipes, configurações, todos os arquivos/pipelines/chaves de API
  • Usuário: usar ferramentas, gerenciar os próprios arquivos/pipelines/chaves de API

Crie equipes em Configurações → Equipes para agrupar usuários.

Defina AUTH_ENABLED=true (ou false para usuário único/uso próprio sem login).