Verification Report · jellyfin v12.2

NOT PUBLISHED   jellyfin-v12.2-20261006-001   verified_at 2026-10-06T03:37:41Z

Immutable inputs

App versionv12.2 ← release tag v12.2 · source ca0f16eb7c19
Image (exact tag)jellyfin/jellyfin:12.2
Image digest (linux/amd64)sha256:da3cd1e48322a35e4b60f3d0a49fca2649e7acce90346dd6e42db777f94e3bbd
Index digestsha256:357724bf0ae27a672c7cbaa899db2d9abeb13dbd8657ccce750258a4c059d037
Pulled asjellyfin/jellyfin:12.2@sha256:da3cd1e48322a35e4b60f3d0a49fca2649e7acce90346dd6e42db777f94e3bbd via registry-1.docker.io
Platform contractami-0045d7fc2ad003464 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20261001-001)
Config revisionsapp e0d620bc1b59 · compose cb6224fdbc5a
Release typenew_version — rule4: not semver-comparable to previous 'v12.1'

Publish gate

CheckFieldResult
Compose startedchecks.compose_startedPassed
Container healthychecks.container_healthyPassed
Health check passedchecks.health_check_passedPassed
Application testschecks.tests_passedPassed
Screenshots capturedchecks.screenshots_generatedPassed
Screenshots publishedchecks.screenshots_uploadedFailed
Report publishedchecks.report_uploadedFailed
Manifest publishedchecks.verification_manifest_uploadedFailed
Platform contract validchecks.required_platform_contract_validPassed

Evidence

Health probeHTTP 200 — ready
Version assertionTrue actual 12.2.0.0 — 匹配(prefix):kind=exec_command 取到 '12.2.0.0',期望 '12.2'
Testspytest exit=0 .. [100%] ==================================== PASSES ==================================== =========================== short test summary info ============================ PASSED apps/jellyfin/tests/test_wizard.py::test_health_ready PASSED apps/jellyfin/tests/test_wizard.py::test_wizard_renders 2 passed in 15.02s
Container staterunning
Duration45.1s(2026-10-06T03:36:56Z → 2026-10-06T03:37:40Z)

Screenshots

wizard
wizard · Startup wizard / 初始化向导

Application test output

pytest exit=0
..                                                                       [100%]
==================================== PASSES ====================================
=========================== short test summary info ============================
PASSED apps/jellyfin/tests/test_wizard.py::test_health_ready
PASSED apps/jellyfin/tests/test_wizard.py::test_wizard_renders
2 passed in 15.02s

Container logs (tail)

 Studio Images 12.2.0.0
jellyfin-1  | [03:37:22.969] [INF] [11] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: OMDb 12.2.0.0
jellyfin-1  | [03:37:22.981] [INF] [11] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: MusicBrainz 12.2.0.0
jellyfin-1  | [03:37:22.981] [INF] [11] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: ListenBrainz Similarity Provider 12.2.0.0
jellyfin-1  | [03:37:22.982] [INF] [11] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: AudioDB 12.2.0.0
jellyfin-1  | [03:37:23.021] [INF] [11] Emby.Server.Implementations.Library.Search.SearchManager: Registered 0 external search providers: . Fallback providers: Database (priority 100)
jellyfin-1  | [03:37:23.023] [INF] [11] Jellyfin.Server.Migrations.JellyfinMigrationService: There are 5 migrations for stage AppInitialisation.
jellyfin-1  | [03:37:23.023] [INF] [11] InternalCodeMigration: Perform migration 20250420090000_AddDefaultPluginRepository
jellyfin-1  | [03:37:23.025] [INF] [11] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Saving system configuration
jellyfin-1  | [03:37:23.026] [INF] [11] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
jellyfin-1  | [03:37:23.027] [INF] [11] InternalCodeMigration: Migration 20250420090000_AddDefaultPluginRepository was successfully applied
jellyfin-1  | [03:37:23.033] [INF] [11] InternalCodeMigration: Perform migration 20250420110000_ReaddDefaultPluginRepository
jellyfin-1  | [03:37:23.034] [INF] [11] InternalCodeMigration: Migration 20250420110000_ReaddDefaultPluginRepository was successfully applied
jellyfin-1  | [03:37:23.036] [INF] [11] InternalCodeMigration: Perform migration 20250420160000_AddDefaultCastReceivers
jellyfin-1  | [03:37:23.037] [INF] [11] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Saving system configuration
jellyfin-1  | [03:37:23.037] [INF] [11] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
jellyfin-1  | [03:37:23.038] [INF] [11] InternalCodeMigration: Migration 20250420160000_AddDefaultCastReceivers was successfully applied
jellyfin-1  | [03:37:23.039] [INF] [11] InternalCodeMigration: Perform migration 20250420170000_UpdateDefaultPluginRepository
jellyfin-1  | [03:37:23.040] [INF] [11] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Saving system configuration
jellyfin-1  | [03:37:23.040] [INF] [11] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
jellyfin-1  | [03:37:23.041] [INF] [11] InternalCodeMigration: Migration 20250420170000_UpdateDefaultPluginRepository was successfully applied
jellyfin-1  | [03:37:23.042] [INF] [11] InternalCodeMigration: Perform migration 20250420230000_MoveTrickplayFiles
jellyfin-1  | [03:37:23.158] [WRN] [4] Microsoft.Extensions.Diagnostics.HealthChecks.DefaultHealthCheckService: Health check StartupCheck with status Degraded completed after 0.0519ms with message 'Server is still starting up.'
jellyfin-1  | [03:37:23.506] [INF] [11] Jellyfin.Server.Migrations.Routines.MoveTrickplayFiles: Checked: 5000 - Moved: 0 - Time: 00:00:00.4620253
jellyfin-1  | [03:37:23.506] [INF] [11] Jellyfin.Server.Migrations.Routines.MoveTrickplayFiles: Moved 0 items in 00:00:00.4625450
jellyfin-1  | [03:37:23.506] [INF] [11] InternalCodeMigration: Migration 20250420230000_MoveTrickplayFiles was successfully applied
jellyfin-1  | [03:37:23.509] [INF] [11] Main: Attempt to cleanup JellyfinDb backup.
jellyfin-1  | [03:37:23.510] [INF] [11] Main: Migrations have been applied, optimizing the database... This might take a while
jellyfin-1  | [03:37:23.537] [INF] [11] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: Not analyzing jellyfin.db, the library holds no items yet
jellyfin-1  | [03:37:23.539] [INF] [11] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: jellyfin.db optimized successfully!
jellyfin-1  | [03:37:23.569] [INF] [10] Main: Kestrel is listening on 0.0.0.0
jellyfin-1  | [03:37:23.586] [WRN] [10] Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager: No XML encryptor configured. Key {8760d422-7415-49f3-8c89-7e8b165844ae} may be persisted to storage in unencrypted form.
jellyfin-1  | [03:37:24.049] [WRN] [10] Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware: The WebRootPath was not found: /wwwroot. Static files may be unavailable.
jellyfin-1  | [03:37:24.564] [INF] [10] Emby.Server.Implementations.ApplicationHost: Running startup tasks
jellyfin-1  | [03:37:24.620] [INF] [10] Emby.Server.Implementations.ScheduledTasks.TaskManager: Daily trigger for Generate Trickplay Images set to fire at 2026-10-07 03:00:00.000 +00:00, which is 23:22:35.3796317 from now.
jellyfin-1  | [03:37:24.623] [INF] [10] Emby.Server.Implementations.ScheduledTasks.TaskManager: Daily trigger for Extract Chapter Images set to fire at 2026-10-07 02:00:00.000 +00:00, which is 22:22:35.3767042 from now.
jellyfin-1  | [03:37:24.649] [INF] [10] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Found ffmpeg version 8.1.3
jellyfin-1  | [03:37:24.688] [INF] [10] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available decoders: ["libdav1d", "av1", "av1_cuvid", "av1_qsv", "h264", "h264_qsv", "h264_cuvid", "hevc", "hevc_qsv", "hevc_cuvid", "mpeg2video", "mpeg2_qsv", "mpeg2_cuvid", "mpeg4", "mpeg4_cuvid", "msmpeg4", "vc1_qsv", "vc1_cuvid", "vp8", "libvpx", "vp8_cuvid", "vp8_qsv", "vp9", "libvpx-vp9", "vp9_cuvid", "vp9_qsv", "aac", "ac3", "ac4", "dca", "flac", "mp3", "truehd"]
jellyfin-1  | [03:37:24.704] [INF] [10] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available encoders: ["libsvtav1", "av1_nvenc", "av1_qsv", "av1_amf", "av1_vaapi", "libx264", "h264_amf", "h264_nvenc", "h264_qsv", "h264_v4l2m2m", "h264_vaapi", "libx265", "hevc_amf", "hevc_nvenc", "hevc_qsv", "hevc_vaapi", "mjpeg_qsv", "mjpeg_vaapi", "aac", "libfdk_aac", "ac3", "alac", "dca", "flac", "libmp3lame", "libopus", "truehd", "libvorbis", "srt"]
jellyfin-1  | [03:37:24.721] [INF] [10] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available filters: ["bwdif_cuda", "bwdif_opencl", "deinterlace_qsv", "deinterlace_vaapi", "flip_vulkan", "hwupload_cuda", "hwupload_vaapi", "libplacebo", "overlay_opencl", "overlay_qsv", "overlay_vaapi", "overlay_vulkan", "overlay_cuda", "procamp_vaapi", "scale_cuda", "scale_opencl", "scale_qsv", "scale_vaapi", "scale_vulkan", "tonemapx", "tonemap_cuda", "tonemap_opencl", "tonemap_vaapi", "transpose_cuda", "transpose_opencl", "transpose_vaapi", "transpose_vulkan", "vpp_qsv", "yadif_cuda", "yadif_opencl", "zscale", "alphasrc"]
jellyfin-1  | [03:37:24.919] [INF] [10] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available hwaccel types: ["cuda", "vaapi", "qsv", "drm", "opencl", "vulkan", "amf"]
jellyfin-1  | [03:37:26.521] [INF] [10] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: FFmpeg: /usr/lib/jellyfin-ffmpeg/ffmpeg
jellyfin-1  | [03:37:26.522] [INF] [10] Emby.Server.Implementations.ApplicationHost: ServerId: 9a695e3f13604a63a7da3c8bbebf631c
jellyfin-1  | [03:37:26.522] [INF] [10] Emby.Server.Implementations.ApplicationHost: Core startup complete
jellyfin-1  | [03:37:26.522] [INF] [10] Main: Startup complete 0:00:07.2710525
jellyfin-1  | [03:37:27.635] [INF] [11] Emby.Server.Implementations.ScheduledTasks.TaskManager: Clean Transcode Directory Completed after 0 minute(s) and 0 seconds
jellyfin-1  | [03:37:28.754] [INF] [11] Emby.Server.Implementations.ScheduledTasks.TaskManager: Update Plugins Completed after 0 minute(s) and 1 seconds
jellyfin-1  | [03:37:37.436] [ERR] [10] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: Token is required. URL GET /socket.
jellyfin-1  | [03:37:39.484] [ERR] [10] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: Token is required. URL GET /socket.
jellyfin-1  | [03:37:40.488] [ERR] [26] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: Token is required. URL GET /socket.

Raw manifest

{
  "schema_version": "1.0",
  "verification_id": "jellyfin-v12.2-20261006-001",
  "app": "jellyfin",
  "app_version": "v12.2",
  "release": {
    "source_repo": "jellyfin/jellyfin",
    "source_revision": "ca0f16eb7c195f720a1493ed469a27c4657db0c6",
    "release_tag": "v12.2",
    "upstream_tag": "v12.2",
    "image_reference": "jellyfin/jellyfin:12.2"
  },
  "container": {
    "image": "jellyfin/jellyfin:12.2",
    "digest": "sha256:da3cd1e48322a35e4b60f3d0a49fca2649e7acce90346dd6e42db777f94e3bbd",
    "manifest_digest": "sha256:357724bf0ae27a672c7cbaa899db2d9abeb13dbd8657ccce750258a4c059d037",
    "platform": "linux/amd64"
  },
  "platform": {
    "platform_verification_id": "plat-us-east-1-x86_64-20261001-001",
    "ami_id": "ami-0045d7fc2ad003464",
    "base_ami_source": "public",
    "source_ami_name": "ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-amd64-server-*",
    "region": "us-east-1",
    "architecture": "x86_64"
  },
  "config": {
    "app_config_revision": "e0d620bc1b593b880fa9b35662644c29afb325c6",
    "compose_revision": "cb6224fdbc5a2500a809a1ae10bfe2a62689e2dd",
    "tests_revision": "4136a9fc8de221b57a8878a17ae7ecd5de3f5cb1",
    "template_revision": "c9350db2baff041f7af1051e500f8db9da8c749a"
  },
  "verification": {
    "application": "passed",
    "platform": "referenced",
    "tests": "passed"
  },
  "checks": {
    "compose_started": true,
    "container_healthy": true,
    "health_check_passed": true,
    "tests_passed": true,
    "screenshots_generated": true,
    "screenshots_uploaded": false,
    "report_uploaded": false,
    "verification_manifest_uploaded": false,
    "required_platform_contract_valid": true
  },
  "artifacts": {
    "screenshots": [
      {
        "scenario": "wizard",
        "file": "wizard.png",
        "url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/jellyfin/v12.2/wizard.png",
        "caption": {
          "en": "Startup wizard",
          "zh": "初始化向导"
        }
      }
    ],
    "report_url": "",
    "workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunch/actions/runs/37409744705"
  },
  "website": {
    "app": "jellyfin",
    "app_version": "v12.2",
    "verification_id": "jellyfin-v12.2-20261006-001",
    "verification_run_id": "37409744705",
    "platform_verification_id": "plat-us-east-1-x86_64-20261001-001",
    "ami_id": "ami-0045d7fc2ad003464",
    "architecture": "x86_64",
    "region": "us-east-1",
    "display_name": {
      "en": "Jellyfin",
      "zh": "Jellyfin 媒体中心"
    },
    "description": {
      "en": "Free software media system: stream movies, shows and music to any device",
      "zh": "免费开源的流媒体服务,把影音库串流到任何设备"
    },
    "category": "media",
    "icon": "/icons/jellyfin.svg",
    "featured": true,
    "tags": [
      "media",
      "streaming",
      "plex-alternative"
    ],
    "features": [
      {
        "en": "Stream to browsers, TVs and mobile apps (Jellyfin clients)",
        "zh": "串流到浏览器、电视与移动客户端"
      },
      {
        "en": "Movies, shows, music and books with metadata and subtitles",
        "zh": "电影、剧集、音乐与书籍,含元数据与字幕"
      },
      {
        "en": "No accounts or tracking required; fully self-hosted",
        "zh": "无需账号与追踪,完全自托管"
      }
    ],
    "health": "passed",
    "status": "pending",
    "verified_at": "2026-10-06T03:37:41Z",
    "report_url": "",
    "workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunch/actions/runs/37409744705",
    "screenshots_order": [
      "wizard"
    ],
    "deploy": {
      "documentation_url": "https://jellyfin.org/docs",
      "regions": [
        "us-east-1"
      ],
      "instance_type": "t3.medium",
      "data_volume_gb": 60,
      "container_port": 8096,
      "health_check_path": "/health",
      "docker_image": "jellyfin/jellyfin:12.2",
      "extra_environment": [],
      "template": {
        "url": "https://corenovalaunch-templates.s3.us-east-1.amazonaws.com/corenova-one-click.template.yaml",
        "revision": "c9350db2baff041f7af1051e500f8db9da8c749a"
      },
      "post_deploy": {
        "admin_path": "/",
        "admin_setup": {
          "en": "First visit opens the startup wizard: set language, user account and library folders in the form. There are no preset credentials.",
          "zh": "首次访问进入初始化向导:在表单中设置语言、用户账户与媒体库目录;没有预置账号密码。"
        },
        "notes": [
          {
            "en": "Media files should be mounted/uploaded to the media volume (/media); empty installs ship no content.",
            "zh": "媒体文件需挂载/上传到媒体卷(/media);空装实例不含任何内容。"
          },
          {
            "en": "Jellyfin benefits from ~1 GB+ RAM; the CFN 'medium' profile (t3.medium) is recommended for transcoding.",
            "zh": "Jellyfin 建议 ~1GB 以上内存;如需转码推荐 CFN 'medium' 档(t3.medium)。"
          },
          {
            "en": "Config and cache live on a retained volume (/config). It keeps billing after stack deletion; snapshot it, then delete the volume when no longer needed.",
            "zh": "配置与缓存保存在保留数据卷(/config)中。删除栈后该卷仍会计费;请先创建快照,不再需要时再删除卷。"
          }
        ]
      },
      "cost_estimate": {
        "monthly_usd": 39,
        "note": {
          "en": "Verified default in us-east-1: ~$30.4 t3.medium + ~$2 for the 30 GB root and data gp3 volumes + $3.65 public IPv4 per month. Transcoding CPU/network usage is extra.",
          "zh": "us-east-1 已验证默认配置:t3.medium 约 $30.4/月 + 30GB 系统盘与数据盘 gp3 约 $2/月 + 公网 IPv4 约 $3.65/月;转码产生的 CPU/流量另计。"
        }
      },
      "data_path": "/config"
    },
    "release": {
      "type": "new_version",
      "previous_version": "v12.1",
      "type_evidence": "rule4: not semver-comparable to previous 'v12.1'"
    },
    "screenshots": [
      {
        "scenario": "wizard",
        "file": "wizard.png",
        "url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/jellyfin/v12.2/wizard.png",
        "caption": {
          "en": "Startup wizard",
          "zh": "初始化向导"
        }
      }
    ]
  },
  "verification_run_id": "37409744705",
  "verified_at": "2026-10-06T03:37:41Z"
}