Search K
Primeros pasos
Pruébalo antes de instalar
Explora la interfaz completa en demo.snapotter.com, sin necesidad de registro ni instalación.
Inicio rápido
bash
docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data snapotter/snapotter:latestEste único contenedor ejecuta todo lo que necesita: sin DATABASE_URL definido, inicia su propio PostgreSQL y Redis en la interfaz de loopback (modo embebido) y mantiene todos los datos en el volumen SnapOtter-data. Es la forma más rápida de probar SnapOtter o de autoalojarlo en un homelab. Para producción, ejecuta la pila de Docker Compose que aparece abajo, que mantiene PostgreSQL y Redis en sus propios contenedores. El modo embebido se ejecuta como root (el valor por defecto) y se desactiva automáticamente en cuanto defines DATABASE_URL.
Se te pedirá que cambies tu contraseña en el primer inicio de sesión.
Analítica Anónima de Producto
SnapOtter incluye analítica de producto anónima por defecto. Para desactivarla, abre Ajustes → Sistema → Privacidad y desactiva Analítica Anónima de Producto. Se detiene de inmediato para toda la instancia.
También puedes establecer la variable de entorno SNAPOTTER_TELEMETRY=0 (false y off también funcionan) para deshabilitar toda la telemetría de la instancia sin recompilar.
La monitorización de errores funciona con Sentry, que patrocina a SnapOtter a través de su programa de código abierto.
Para más detalles sobre qué se recopila, consulta Qué recopila SnapOtter.
Aceleración con NVIDIA CUDA
Añade --gpus all para eliminación de fondo, escalado, OCR, mejora de rostros y restauración acelerados con NVIDIA CUDA:
bash
docker run -d --name SnapOtter -p 1349:1349 --gpus all -v SnapOtter-data:/data snapotter/snapotter:latestRequiere el NVIDIA Container Toolkit. Recurre a la CPU automáticamente cuando CUDA no está disponible. La aceleración por iGPU de Intel/AMD mediante VA-API, Quick Sync u OpenCL no es compatible con la inferencia de IA por ahora. Consulta Etiquetas de Docker para las pruebas de rendimiento.
También en GHCR
bash
docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data ghcr.io/snapotter-hq/snapotter:latestAmbos registros publican la misma imagen en cada versión.
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:Consulta Configuración para todas las variables de entorno.
Compilar desde el código fuente
Requisitos previos: Node.js 22+, pnpm 9+, Docker (para Postgres + Redis), Python 3.10+ (para funciones 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- Frontend: http://localhost:1349
- Backend: http://localhost:13490
Qué puedes hacer
Procesamiento de archivos (200+ herramientas)
| Modalidad | Recuento | Herramientas de ejemplo |
|---|---|---|
| Imagen | 105 | Redimensionar, Recortar, Comprimir, Convertir, Eliminar fondo, Escalar, OCR, Marca de agua, Collage, Colorizar, Herramientas GIF, ajustes de formato predefinidos |
| Vídeo | 57 | Recortar, Recortar marco, Comprimir, Convertir, Combinar, Extraer audio, Subtítulos automáticos, Vídeo a GIF, Redimensionar, Estabilizar, ajustes de formato predefinidos |
| Audio | 27 | Recortar, Combinar, Convertir, Normalizar, Reducción de ruido, Transcribir, Cambio de tono, Fundido, Creador de tonos de llamada, ajustes de formato predefinidos |
| PDF / Documento | 42 | Combinar, Dividir, Comprimir, OCR, Marca de agua, Redactar, Word a PDF, Excel a PDF, Rotar, Proteger, Reparar |
| Archivos | 10 | CSV a JSON, JSON a XML, Combinar CSVs, Dividir CSV, Crear ZIP, Extraer ZIP, Creador de gráficos, YAML/JSON |
Canalizaciones
Encadena herramientas en flujos de trabajo de varios pasos y aplícalos a una imagen o a un lote completo:
- Abre Canalizaciones en la barra lateral.
- Añade pasos (cualquier herramienta, cualquier configuración).
- Ejecuta sobre un solo archivo, o sobre un lote entero a la vez.
- Guarda la canalización para reutilizarla más tarde.
Las canalizaciones permiten 20 pasos por defecto. Establece MAX_PIPELINE_STEPS=0 para dejar el límite en ilimitado.
Biblioteca de archivos
Cada archivo que proceses puede guardarse en tu biblioteca de Archivos. SnapOtter registra el historial de versiones completo para que puedas rastrear cada paso de procesamiento desde la subida original hasta la salida final.
Guardar es explícito: los resultados que guardas en la biblioteca se conservan hasta que los eliminas, mientras que los resultados que procesas y dejas sin guardar se eliminan automáticamente tras 72 horas (configurable mediante FILE_MAX_AGE_HOURS).
API REST y claves de API
Cada herramienta es accesible mediante 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"}'Genera claves de API en Ajustes → Claves de API. Consulta la referencia de la API REST para todos los endpoints, o visita http://localhost:1349/api/docs para la referencia interactiva.
Multiusuario y equipos
Habilita varios usuarios con control de acceso basado en roles:
- Administrador: acceso completo, gestiona usuarios, equipos, ajustes, todos los archivos/canalizaciones/claves de API
- Usuario: usa herramientas, gestiona sus propios archivos/canalizaciones/claves de API
Crea equipos en Ajustes → Equipos para agrupar usuarios.
Establece AUTH_ENABLED=true (o false para un solo usuario/uso propio sin inicio de sesión).
