Bumps every version surface to 2.2.0, fixes a latent version-coupling bug in the OCR runtime tests, and stops an absent GPU runner from silently stalling a release. Version surfaces: scripts/sync-version.sh covers the 11 workspaces, APP_VERSION, and the docs release commands across all locales. Root package.json plus the three surfaces the script never reaches are done by hand: the DOCKERHUB.md banner and tag table, the docker-tags.md pinning table in 21 locales, and the example runtimeVersion in tools/image/ocr.md in 21 locales. The release-notes archive step is deliberately not pre-run, so the notes text stays editable until the release. Latent bug: runtime-state rejects any runtime whose compatibility.snapotterVersion is not exactly APP_VERSION, and five fixtures pinned the literal 2.1.0. Since semantic-release rewrites APP_VERSION on every release, the first PR after any bump would have gone red for a reason nobody would trace to the release. The fixtures now derive from APP_VERSION. GPU runner: sign-ocr-index needs verify-ocr-nvidia on self-hosted hardware, and the gated manifest job needs ai-bundles, so a missing runner queued instead of failing and produced no image tags. preflight-gpu-runner claims the same labels with no dependencies, so it is scheduled first and validates the GPU before the 90-minute build. An API preflight is impossible because listing self-hosted runners needs Administration:read, which GITHUB_TOKEN cannot hold, so RELEASE.md carries the maintainer-side check.
8.4 KiB
description, i18n_source_hash, i18n_provenance, i18n_output_hash, i18n_hash_version
| description | i18n_source_hash | i18n_provenance | i18n_output_hash | i18n_hash_version |
|---|---|---|---|---|
| Instala SnapOtter con Docker en un solo comando. Incluye la configuración de Docker Compose, la compilación desde el código fuente y una descripción completa de las funciones. | 8040133a6982 | machine | 5d9ea3a3420e | 2 |
Primeros pasos
::: tip Pruébalo antes de instalar Explora la interfaz completa en demo.snapotter.com, sin necesidad de registro ni instalación. :::
Inicio rápido
docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data snapotter/snapotter:latest
Este único contenedor ejecuta todo lo que necesita: sin DATABASE_URL configurado, inicia su propio PostgreSQL y Redis en la interfaz loopback (modo integrado) y mantiene todos los datos en el volumen SnapOtter-data. Es la forma más rápida de probar SnapOtter o autohospedarse en un laboratorio doméstico. Para producción, utilice la pila canónica de Docker Compose, que mantiene PostgreSQL y Redis en sus propios contenedores. El modo integrado se ejecuta como root (el valor predeterminado) y se apaga automáticamente tan pronto como configura DATABASE_URL.
¿Vas a instalar en una Raspberry Pi, un portátil viejo o un VPS pequeño? Consulta Configuraciones con recursos limitados para una guía paso a paso ajustada y para saber qué esperar de un hardware limitado.
Se te pedirá que cambies tu contraseña en el primer inicio de sesión.
::: tip 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. :::
::: tip Aceleración con NVIDIA CUDA
Agregue --gpus all para NVIDIA eliminación de fondo, ampliación, mejora facial y restauración acelerada por CUDA. OCR permanece basado en CPU y funciona en la misma imagen con o sin acceso a GPU:
docker run -d --name SnapOtter -p 1349:1349 --gpus all -v SnapOtter-data:/data snapotter/snapotter:latest
Requiere el NVIDIA Container Toolkit. Vuelve a la CPU automáticamente cuando CUDA no está disponible. La aceleración Intel/AMD iGPU a través de VA-API, Quick Sync u OpenCL no es compatible con la inferencia de IA en la actualidad. Consulte Etiquetas Docker para conocer los puntos de referencia. Si las herramientas de IA se ejecutan en la CPU a pesar de --gpus all, consulte Verificar la aceleración de la GPU.
:::
::: details También en GHCR
docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data ghcr.io/snapotter-hq/snapotter:latest
Ambos registros publican la misma imagen en cada versión. :::
Docker componer
Utilice el archivo de producción mantenido y probado con cada versión en lugar de copiar un ejemplo de Compose abreviado de esta página:
install -d -m 700 snapotter && cd snapotter
curl --proto '=https' --tlsv1.2 -fsSLo docker-compose.yml \
https://raw.githubusercontent.com/snapotter-hq/SnapOtter/v2.2.0/docker/docker-compose.yml
# Keep generated service credentials out of shell history and world-readable files.
umask 077
POSTGRES_PASSWORD="$(openssl rand -hex 32)"
REDIS_PASSWORD="$(openssl rand -hex 32)"
printf 'POSTGRES_PASSWORD=%s\nREDIS_PASSWORD=%s\n' \
"$POSTGRES_PASSWORD" "$REDIS_PASSWORD" > .env
docker compose -f docker-compose.yml pull
docker compose -f docker-compose.yml up -d --no-build
El canónico docker/docker-compose.yml incluye los cuatro volúmenes de tiempo de ejecución, comprobaciones de estado, límites de recursos, configuración duradera de Redis, imágenes de caché/base de datos fijadas y el refuerzo del contenedor actual. Cambie la contraseña de administrador predeterminada inmediatamente después del primer inicio de sesión. Para una implementación reproducible, fije la imagen de la aplicación SnapOtter a la etiqueta de versión o resumen que verificó en lugar de seguir latest.
Consulte Configuración para conocer todas las variables de entorno y Seguridad y refuerzo para conocer secretos, políticas de red y orientación sobre copias de seguridad.
Compilar desde el código fuente
Requisitos previos: Node.js 22.22+, pnpm 9+, Docker (para Postgres + Redis), Python 3.11+ (para funciones de IA), Git.
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:1351
- Backend: http://localhost:13490
Qué puedes hacer
Procesamiento de archivos (200+ herramientas)
| Modalidad | Recuento | Herramientas de ejemplo |
|---|---|---|
| Imagen | 107 | 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 | 29 | Combinar, Dividir, Comprimir, OCR, Marca de agua, Redactar, Word a PDF, Excel a PDF, Rotar, Proteger, Reparar |
| Archivos | 23 | 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:
curl -X POST http://localhost:1349/api/v1/tools/image/resize \
-H "Authorization: Bearer si_<your-api-key>" \
-F "file=@photo.jpg" \
-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).