This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

設定

すべての設定は環境変数を通じて行います。各変数には妥当なデフォルト値があるため、SnapOtter は何も設定しなくてもそのまま動作します。

環境変数

サーバー

変数デフォルト説明
PORT1349サーバーがリッスンするポート。
RATE_LIMIT_PER_MIN1000IP ごとの 1 分あたりの最大リクエスト数。レート制限を無効にするには 0 に設定します。
CORS_ORIGIN(空)CORS で許可するオリジンのカンマ区切りリスト。空の場合は同一オリジンのみ。
LOG_LEVELinfoログの詳細度。fatalerrorwarninfodebugtrace のいずれか。
TRUST_PROXYtrueリバースプロキシからの X-Forwarded-For ヘッダーを信頼します。プロキシの背後にない場合は false に設定します。

認証

変数デフォルト説明
AUTH_ENABLEDfalseログインを必須にするには true に設定します。Docker イメージのデフォルトは true です。
DEFAULT_USERNAMEadmin初期 admin アカウントのユーザー名。初回起動時のみ使用されます。
DEFAULT_PASSWORDadmin初期 admin アカウントのパスワード。初回ログイン後に変更してください。
MAX_USERS0 (無制限)登録済みユーザーアカウントの最大数。無制限にするには 0 に設定します。
SESSION_DURATION_HOURS168ログインセッションの有効期間(時間単位、デフォルトは 7 日)。
SKIP_MUST_CHANGE_PASSWORD-空でない任意の値を設定すると、初回ログイン時の強制パスワード変更プロンプトをバイパスします

ストレージ

変数デフォルト説明
STORAGE_MODElocallocal または s3。S3/MinIO には s3_storage 機能を含むライセンスが必要です。
DATABASE_URLpostgres://snapotter:snapotter@postgres:5432/snapotterPostgreSQL 接続文字列。
REDIS_URLredis://redis:6379Redis 接続文字列(BullMQ ジョブキューに使用)。
WORKSPACE_PATH./tmp/workspace処理中の一時ファイル用ディレクトリ。自動的にクリーンアップされます。
FILES_STORAGE_PATH./data/files永続的なユーザーファイル(アップロードした画像、保存した結果)用ディレクトリ。

組み込みモード

DATABASE_URLREDIS_URL も指定せずにイメージを実行すると、コンテナ内で独自の PostgreSQL 17 と Redis を起動し、ループバックにバインドして、すべてのデータを /data ボリューム上に置きます。これにより、クイックスタート、ホームラボ、1.x からのアップグレード向けに、ワンコマンドの docker run 体験が復活します。これは利便性のための手段であり、本番デプロイではありません。本番環境では、PostgreSQL と Redis を分離した 3 コンテナの Compose スタックを実行してください。組み込みモードはコンテナを root として実行する必要があり、任意 UID のランタイム(OpenShift、Kubernetes runAsNonRoot)とは互換性がありません。その場合は Compose を使用してください。

変数デフォルト説明
EMBEDDEDautoDATABASE_URLREDIS_URL の両方が未設定の場合に自動で有効になります。無効にするには 0 に設定します(その場合、外部の DATABASE_URL/REDIS_URL が設定されていなければ、アプリはコンテナ内データベースを黙って起動する代わりに即座に失敗します)。
REDIS_MAXMEMORY512mb組み込み Redis のメモリ上限(組み込みモードのみ)。Raspberry Pi のようなメモリ制約のあるホストでは下げてください。

1.x からのアップグレード: 古い snapotter.db をボリューム内の /data/snapotter.db に配置すると、組み込みモードが初回起動時にそれを組み込み PostgreSQL へインポートします。インポートは一度だけ実行され、以降の起動ではスキップされます。

テレメトリに関する注記: 組み込みモードは、他の設定と同様にイメージの分析デフォルトを継承します。公開イメージは分析を有効にした状態で出荷されます。無効にするには --build-arg SNAPOTTER_ANALYTICS=off でビルドするか、アプリ内の admin オプトアウトを使用してください。

処理制限

変数デフォルト説明
MAX_UPLOAD_SIZE_MB100アップロードあたりの最大ファイルサイズ(メガバイト単位)。無制限にするには 0 に設定します。
MAX_BATCH_SIZE100単一バッチリクエスト内の最大ファイル数。無制限にするには 0 に設定します。
CONCURRENT_JOBS0 (自動)並列実行されるバッチジョブの数。利用可能な CPU コア数に基づいて自動検出するには 0 に設定します。
MAX_MEGAPIXELS0 (無制限)許可される最大画像解像度(メガピクセル単位)。無制限にするには 0 に設定します。
MAX_WORKER_THREADS0 (自動)画像処理の最大ワーカースレッド数。利用可能な CPU コア数に基づいて自動検出するには 0 に設定します。
PROCESSING_TIMEOUT_S0 (制限なし)リクエストあたりの最大処理時間(秒単位)。タイムアウトなしにするには 0 に設定します。
MAX_PIPELINE_STEPS20パイプライン内の最大ステップ数。制限なしにするには 0 に設定します。
MAX_CANVAS_PIXELS0 (制限なし)出力画像の最大キャンバスサイズ(ピクセル単位)。制限なしにするには 0 に設定します。
MAX_SVG_SIZE_MB0 (無制限)最大 SVG ファイルサイズ(メガバイト単位)。無制限にするには 0 に設定します。
MAX_SPLIT_GRID100画像分割ツールの最大グリッド次元。
MAX_PDF_PAGES0 (無制限)PDF-to-image 変換での PDF の最大ページ数。無制限にするには 0 に設定します。

クリーンアップ

変数デフォルト説明
FILE_MAX_AGE_HOURS72未保存の処理結果(生のアップロードとツール出力)を自動削除するまで保持する期間。Files ライブラリに明示的に保存したファイルは影響を受けず、削除するまで保持されます。
CLEANUP_INTERVAL_MINUTES60クリーンアップジョブを実行する頻度。

外観

変数デフォルト説明
DEFAULT_THEMElight新規セッションのデフォルトテーマ。light または dark
DEFAULT_LOCALEenデフォルトのインターフェース言語。
DEFAULT_TOOL_VIEWsidebarデフォルトのツールレイアウト。sidebar または fullscreen

Docker 権限

変数デフォルト説明
PUID999コンテナプロセスをこの UID として実行します。バインドマウントの場合はホストユーザーに合わせて設定します(id -u)。
PGID999コンテナプロセスをこの GID として実行します。バインドマウントの場合はホストグループに合わせて設定します(id -g)。

Docker の例

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
      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-workspace:
  SnapOtter-pgdata:
  SnapOtter-redisdata:

ボリューム

Docker Compose スタックは 4 つのボリュームを使用します:

  • /data (app) - AI モデル、Python venv、ユーザーファイル。アップロードしたファイルとインストール済みの AI バンドルを再起動を越えて保持するには、これをマウントします。
  • /tmp/workspace (app) - 処理中のファイルの一時ストレージ。エフェメラルでも構いませんが、マウントするとコンテナの書き込み可能レイヤーが埋まるのを防げます。
  • SnapOtter-pgdata (postgres) - PostgreSQL データディレクトリ。すべてのリレーショナルデータ(ユーザー、設定、パイプライン、ジョブ、監査ログ)を保持します。pg_dump またはボリュームスナップショットでバックアップします。
  • SnapOtter-redisdata (redis) - 永続的なジョブキュー用の Redis 追記専用ファイル。