Den här sidan är maskinöversatt. Hittade du ett fel?Hjälp till att förbättra den.
Skip to content

Konfiguration

All konfiguration görs via miljövariabler. Varje variabel har ett vettigt standardvärde, så SnapOtter fungerar direkt utan att någon av dem sätts.

Miljövariabler

Server

VariabelStandardBeskrivning
PORT1349Port som servern lyssnar på.
RATE_LIMIT_PER_MIN1000Maximalt antal förfrågningar per minut per IP. Sätt till 0 för att inaktivera hastighetsbegränsning.
CORS_ORIGIN(tom)Kommaseparerade tillåtna ursprung för CORS, eller tom för endast samma ursprung.
LOG_LEVELinfoLoggutförlighet. En av: fatal, error, warn, info, debug, trace.
TRUST_PROXYloopback,linklocal,uniquelocalVilka motparter som får sätta klientens IP via X-Forwarded-For. Standardvärdet tror bara på en motpart i ett privat nät, så en omvänd proxy på ett Docker-nätverk eller i ett LAN är betrodd medan en publik klients förfalskade huvud inte är det. Sätt true bara när en proxy du själv styr står framför på en publik adress.

Autentisering

De två booleska värdena nedan accepterar bara true och false. Allt annat, 1 eller yes eller on, klarar inte valideringen och servern avslutas innan den börjar lyssna.

VariabelStandardBeskrivning
AUTH_ENABLEDtrueKräver inloggning. Sätt till false för att köra helt utan konton, vilket ger varje förfrågan adminrättigheter, så håll det till ett betrott nätverk.
DEFAULT_USERNAMEadminAnvändarnamn för det initiala admin-kontot. Används endast vid första körningen.
DEFAULT_PASSWORDadminLösenord för det initiala admin-kontot. Ändra detta efter första inloggningen.
MAX_USERS0 (obegränsat)Maximalt antal registrerade användarkonton. Sätt till 0 för obegränsat.
SESSION_DURATION_HOURS168Livslängd för inloggningssession i timmar (standard är 7 dagar).
SKIP_MUST_CHANGE_PASSWORDfalseSätt till true för att hoppa över den tvingade uppmaningen om lösenordsbyte vid första inloggningen.

Lagring

VariabelStandardBeskrivning
STORAGE_MODElocallocal eller s3. S3 och MinIO kräver en licens med funktionen s3_storage plus S3_*-variablerna nedan.
DATABASE_URLpostgres://snapotter:snapotter@localhost:5432/snapotterPostgreSQL-anslutningssträng. Compose-stacken pekar den mot sin postgres-tjänst; lämna den osatt (tillsammans med REDIS_URL) för att få inbäddat läge.
REDIS_URLredis://localhost:6379Redis-anslutningssträng (används för BullMQ-jobbköer). Compose pekar den mot sin redis-tjänst.
WORKSPACE_PATH./tmp/workspaceKatalog för tillfälliga filer under bearbetning. Rensas automatiskt. Avbildningen sätter /tmp/workspace.
FILES_STORAGE_PATH./data/filesKatalog för beständiga användarfiler (uppladdade bilder, sparade resultat). Avbildningen sätter /data/files.

S3-objektlagring

Läses bara när STORAGE_MODE=s3. Missar du någon av de tre obligatoriska misslyckas starten med namnet på variabeln du utelämnade.

VariabelStandardBeskrivning
S3_BUCKET(tom)Bucket som håller uppladdningar och utdata. Obligatorisk.
S3_ACCESS_KEY_ID(tom)Åtkomstnyckel. Obligatorisk. I containern kan du montera den i stället, via S3_ACCESS_KEY_ID_FILE.
S3_SECRET_ACCESS_KEY(tom)Hemlig nyckel. Obligatorisk. Samma filkonvention: S3_SECRET_ACCESS_KEY_FILE.
S3_REGIONus-east-1Bucketens region.
S3_ENDPOINT(tom)Egen endpoint för MinIO, R2, Backblaze och andra S3-kompatibla lagringar. Tom betyder AWS.
S3_FORCE_PATH_STYLEfalseSätt till true för MinIO och allt annat som vill ha endpoint/bucket/key i stället för adressering via virtuell värd.
S3_PREFIX(tom)Nyckelprefix, så att en bucket kan rymma flera instanser.

Kryptering i vila

VariabelStandardBeskrivning
DATA_ENCRYPTION_KEY(tom)64 hexadecimala tecken (32 byte). Krypterar känsliga inställningar som lagras i databasen. Allt som inte är 64 hexadecimala tecken avvisas vid start.
DATA_ENCRYPTION_KEY_PREVIOUS(tom)Nyckeln du roterar bort från, samma format. Sätt båda under en rotation så att befintliga rader fortfarande går att dekryptera, och ta sedan bort den här.

Inbäddat läge

Kör avbildningen utan DATABASE_URL och utan REDIS_URL så startar den sin egen PostgreSQL 17 och Redis inuti containern, bundna till loopback, med all data på /data-volymen. Detta återställer docker run-upplevelsen med ett enda kommando för snabbstart, homelab och uppgraderingar från 1.x. Det är en bekvämlighetsväg, inte en produktionsdistribution: för produktion, kör Compose-stacken med 3 containrar med separat PostgreSQL och Redis. Inbäddat läge kräver att containern körs som root och är inkompatibelt med körtider med godtyckligt UID (OpenShift, Kubernetes runAsNonRoot); använd Compose där.

VariabelStandardBeskrivning
EMBEDDEDautoAktiveras automatiskt när både DATABASE_URL och REDIS_URL är osatta. Sätt till 0 för att inaktivera det (appen misslyckas då snabbt om ingen extern DATABASE_URL/REDIS_URL är satt, i stället för att tyst starta en databas i containern).
REDIS_MAXMEMORY512mbMinnestak för den inbäddade Redis (endast inbäddat läge). Sänk det på minnesbegränsade värdar som en Raspberry Pi.

Uppgradering från 1.x: lägg din gamla snapotter.db/data/snapotter.db i volymen så importerar inbäddat läge den till den inbäddade PostgreSQL vid första start. Importen körs en gång; senare starter hoppar över den.

Telemetrinotering: inbäddat läge ärver avbildningens analysstandard som all annan konfiguration. Den publicerade avbildningen levereras med analys på; bygg med --build-arg SNAPOTTER_ANALYTICS=off, eller använd admin-opt-out i appen, för att inaktivera det.

Bearbetningsgränser

VariabelStandardBeskrivning
MAX_UPLOAD_SIZE_MB0 (obegränsat)Maximal filstorlek per uppladdning i megabyte. Sätt till 0 för obegränsat. Den publicerade avbildningen levereras med 0; ett bygge från källkoden börjar på 100.
MAX_BATCH_SIZE0 (obegränsat)Maximalt antal filer i en enda batchförfrågan. Sätt till 0 för obegränsat. Den publicerade avbildningen levereras med 0; ett bygge från källkoden börjar på 100.
CONCURRENT_JOBS0 (auto)Antal batchjobb som körs parallellt. Sätt till 0 för att detektera automatiskt baserat på tillgängliga CPU-kärnor.
MAX_MEGAPIXELS0 (obegränsat)Maximal bildupplösning tillåten i megapixlar. Sätt till 0 för obegränsat.
MAX_WORKER_THREADS0 (auto)Maximalt antal worker-trådar för bildbehandling. Sätt till 0 för att detektera automatiskt baserat på tillgängliga CPU-kärnor.
PROCESSING_TIMEOUT_S0 (ingen gräns)Maximal bearbetningstid per förfrågan i sekunder. Sätt till 0 för ingen timeout.
MAX_PIPELINE_STEPS20Maximalt antal steg i en pipeline. Sätt till 0 för ingen gräns.
MAX_CANVAS_PIXELS0 (ingen gräns)Maximal arbetsytestorlek i pixlar för utdatabilder. Sätt till 0 för ingen gräns.
MAX_SVG_SIZE_MB50Största SVG som accepteras före sanering, i megabyte. 0 beter sig annorlunda här än i raderna omkring. Det tar bort storleksgränsen före parsning helt i stället för att höja den, så låt den här vara satt.
MAX_PDF_PAGES0 (obegränsat)Maximalt antal PDF-sidor för PDF-till-bild-konvertering. Sätt till 0 för obegränsat.

Rensning

VariabelStandardBeskrivning
FILE_MAX_AGE_HOURS72Hur länge osparade bearbetningsresultat (råa uppladdningar och verktygsutdata) behålls innan automatisk radering. Filer du uttryckligen sparar till Files-biblioteket påverkas inte och består tills du raderar dem.
CLEANUP_INTERVAL_MINUTES60Hur ofta rensningsjobbet körs.

Utseende

VariabelStandardBeskrivning
DEFAULT_THEMElightStandardtema för nya sessioner. light, dark eller system.
DEFAULT_LOCALEenStandardgränssnittsspråk.
DEFAULT_TOOL_VIEWsidebarStandardverktygslayout. sidebar eller fullscreen.

Docker-behörigheter

VariabelStandardBeskrivning
PUID999Kör containerprocessen som detta UID. Sätt till att matcha din värdanvändare för bind-monteringar (id -u).
PGID999Kör containerprocessen som detta GID. Sätt till att matcha din värdgrupp för bind-monteringar (id -g).

Docker-exempel

yaml
services:
  SnapOtter:
    image: snapotter/snapotter:latest
    ports:
      - "1349:1349"
    volumes:
      - SnapOtter-data:/data
      - SnapOtter-workspace:/tmp/workspace
    environment:
      - AUTH_ENABLED=true
      - DEFAULT_USERNAME=admin
      - DEFAULT_PASSWORD=changeme
      - DATABASE_URL=postgres://snapotter:snapotter@postgres:5432/snapotter
      - REDIS_URL=redis://redis:6379
      - MAX_UPLOAD_SIZE_MB=200
      - CONCURRENT_JOBS=4
      - FILE_MAX_AGE_HOURS=12
    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     # Ändra detta för icke-lokala distributioner
      POSTGRES_DB: snapotter
    volumes:
      - SnapOtter-pgdata:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U snapotter -d 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-workspace:
  SnapOtter-pgdata:
  SnapOtter-redisdata:

Volymer

Docker Compose-stacken använder fyra volymer:

  • /data (app) - AI-modeller, Python-venv och användarfiler. Montera denna för att behålla uppladdade filer och installerade AI-paket över omstarter.
  • /tmp/workspace (app) - Tillfällig lagring för filer som bearbetas. Denna kan vara flyktig, men att montera den undviker att fylla upp containerns skrivbara lager.
  • SnapOtter-pgdata (postgres) - PostgreSQL-datakatalog. Denna innehåller alla relationsdata (användare, inställningar, pipelines, jobb, revisionslogg). Säkerhetskopiera via pg_dump eller volymögonblicksbild.
  • SnapOtter-redisdata (redis) - Redis append-only-fil för beständiga jobbköer.