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 på /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.