Files
SnapOtter/apps/docs/sv/guide/getting-started.md
T
SnapOtterandGitHub d10d0f544f fix: release QA hardening across processing, media, security, and CI gates (#649)
A release-readiness QA pass over the whole product. The commits split into
defects a user would hit and gates that were reporting green while measuring
nothing.

## Fixes that change behaviour

Rate limiting was bypassable on every install: TRUST_PROXY defaulted to true, so
request.ip came from a client-set header and a forged X-Forwarded-For got past
the login limiter. The default is now a private-network trust list.

A transient Postgres outage stranded in-flight jobs, leaving finished output on
disk with no row pointing at it. A reconciler now resolves those rows and adopts
the bytes rather than dropping the work.

A Redis connection that moved to a new address wedged every read-blocked
consumer, so completions stopped signalling while health still answered 200.
Socket timeouts plus subscriber pings recover it.

Installing more than one AI bundle left the shared venv multi-versioned and
silently broke three tools. The installer now reconciles distributions to one
version each.

Converting an image to JXL at quality 1 through 4 returned a 500, because
libjxl 0.7 rejects the distance those values compute. The quality is floored at
what the encoder honours. A missing ffmpeg was also reported to the user as a
corrupt upload; it now says the engine is unavailable.

RAW uploads reached an unpatched LibRaw on arm64, so it is built from source at
0.22.2, and the release scan was split so it can fail on an unfixed critical
instead of hiding it behind ignore-unfixed.

## Gates that could not fail

Two mutation lanes ran zero mutants because Stryker crawled the gitignored docs
build; coverage discarded its whole report on any failing test; the lint gate
skipped root tests, scripts, and two workspaces; and several generated matrices
counted a host missing ffmpeg as a passing tool. Each now measures what it
claims.

Full evidence and the outstanding release items are tracked locally and are not
part of this branch.
2026-07-27 15:37:30 +08:00

7.8 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
Installera SnapOtter med Docker i ett enda kommando. Inkluderar Docker Compose-konfiguration, byggande från källkod och en fullständig funktionsöversikt. 8040133a6982 machine 2dc08df1543e 2

Kom igång

::: tip Prova innan du installerar Utforska hela gränssnittet på demo.snapotter.com - ingen registrering eller installation krävs. :::

Snabbstart

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

Denna enda behållare kör allt den behöver: utan DATABASE_URL-uppsättning startar den sin egen PostgreSQL och Redis på loopback-gränssnittet (inbäddat läge) och behåller all data i SnapOtter-data-volymen. Det är det snabbaste sättet att prova SnapOtter eller självvärd på ett homelab. För produktion, använd kanoniska Docker Compose-stacken, som håller PostgreSQL och Redis i sina egna behållare. Inbäddat läge körs som root (standard) och stängs av automatiskt så snart du ställer in DATABASE_URL.

Installerar du på en Raspberry Pi, en gammal bärbar dator eller en liten VPS? Se Resurssnåla installationer för en anpassad genomgång och vad du kan förvänta dig av begränsad hårdvara.

Du kommer att ombes att ändra ditt lösenord vid första inloggningen.

::: tip Anonym produktanalys SnapOtter innehåller anonym produktanalys som standard. För att stänga av den, öppna Settings → System → Privacy och stäng av Anonymous Product Analytics. Den stoppas omedelbart för hela instansen.

Du kan också ange miljövariabeln SNAPOTTER_TELEMETRY=0 (false och off fungerar också) för att inaktivera all telemetri för instansen utan en ombyggnad.

Felövervakning drivs av Sentry, som sponsrar SnapOtter genom sitt program för öppen källkod.

För detaljer om vad som samlas in, se Vad SnapOtter samlar in. :::

::: tip NVIDIA CUDA-acceleration Lägg till --gpus all för NVIDIA CUDA-accelererad bakgrundsborttagning, uppskalning, ansiktsförbättring och restaurering. OCR förblir CPU-baserad och fungerar i samma bild med eller utan GPU-åtkomst:

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

Kräver NVIDIA Container Toolkit. Faller tillbaka till CPU automatiskt när CUDA inte är tillgänglig. Intel/AMD iGPU-acceleration genom VA-API, Quick Sync eller OpenCL stöds inte för AI-inferens idag. Se Docker Tags för riktmärken. Om AI-verktyg körs på CPU trots --gpus all, se Verifiera GPU-acceleration. :::

::: details Även på GHCR

docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data ghcr.io/snapotter-hq/snapotter:latest

Båda registren publicerar samma avbildning vid varje utgåva. :::

Docker Compose

Använd produktionsfilen som underhålls och testas med varje release istället för att kopiera ett förkortat Compose-exempel från den här sidan:

install -d -m 700 snapotter && cd snapotter
curl --proto '=https' --tlsv1.2 -fsSLo docker-compose.yml \
  https://raw.githubusercontent.com/snapotter-hq/SnapOtter/v2.1.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

Den kanoniska docker/docker-compose.yml inkluderar alla fyra körtidsvolymer, hälsokontroller, resursgränser, hållbar Redis-konfiguration, fästa databas/cache-bilder och den aktuella behållarhärdningen. Ändra standardlösenordet för administratören direkt efter första inloggningen. För en reproducerbar distribution, fäst SnapOtter-applikationsbilden till releasetaggen eller sammanfattningen du verifierade istället för att följa latest.

Se Configuration för alla miljövariabler och Security & Hardening för hemligheter, nätverkspolicy och säkerhetskopieringsvägledning.

Bygg från källkod

Förutsättningar: Node.js 22.22+, pnpm 9+, Docker (för Postgres + Redis), Python 3.11+ (för AI-funktioner), 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

Vad du kan göra

Filbearbetning (200+ verktyg)

Modalitet Antal Exempelverktyg
Bild 107 Ändra storlek, beskär, komprimera, konvertera, ta bort bakgrund, uppskala, OCR, vattenmärke, collage, färglägg, GIF-verktyg, formatförinställningar
Video 57 Klipp, beskär, komprimera, konvertera, slå samman, extrahera ljud, autotextning, video till GIF, ändra storlek, stabilisera, formatförinställningar
Ljud 27 Klipp, slå samman, konvertera, normalisera, brusreducering, transkribera, tonhöjdsskift, tona, ringsignalsskapare, formatförinställningar
PDF / dokument 29 Slå samman, dela, komprimera, OCR, vattenmärke, redigera bort, Word till PDF, Excel till PDF, rotera, skydda, reparera
Filer 23 CSV till JSON, JSON till XML, slå samman CSV-filer, dela CSV, skapa ZIP, extrahera ZIP, diagramskapare, YAML/JSON

Pipelines

Kedja ihop verktyg till arbetsflöden i flera steg och applicera dem på en bild eller en hel batch:

  1. Öppna Pipelines i sidofältet.
  2. Lägg till steg (valfritt verktyg, valfria inställningar).
  3. Kör på en enda fil - eller en hel batch på en gång.
  4. Spara pipelinen för senare återanvändning.

Pipelines tillåter 20 steg som standard. Ange MAX_PIPELINE_STEPS=0 för att göra gränsen obegränsad.

Filbibliotek

Varje fil du bearbetar kan sparas i ditt Files-bibliotek. SnapOtter spårar den fullständiga versionshistoriken så att du kan spåra varje bearbetningssteg från den ursprungliga uppladdningen till det slutliga resultatet.

Sparande är explicit: resultat som du sparar i biblioteket behålls tills du raderar dem, medan resultat som du bearbetar och lämnar osparade rensas automatiskt efter 72 timmar (konfigurerbart via FILE_MAX_AGE_HOURS).

REST API och API-nycklar

Varje verktyg är tillgängligt via 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"}'

Generera API-nycklar under Settings → API Keys. Se REST API-referensen för alla slutpunkter, eller besök http://localhost:1349/api/docs för den interaktiva referensen.

Fleranvändare och team

Aktivera flera användare med rollbaserad åtkomstkontroll:

  • Admin: fullständig åtkomst - hantera användare, team, inställningar, alla filer/pipelines/API-nycklar
  • User: använd verktyg, hantera egna filer/pipelines/API-nycklar

Skapa team under Settings → Teams för att gruppera användare.

Ange AUTH_ENABLED=true (eller false för enanvändare/eget bruk utan inloggning).