Verification Report · jellyfin v12.0

NOT PUBLISHED   jellyfin-v12.0-20260911-001   verified_at 2026-09-11T10:51:06Z

Immutable inputs

App versionv12.0 ← release tag v12.0 · source 6c073e19ddf6
Image (exact tag)jellyfin/jellyfin:12.0
Image digest (linux/amd64)sha256:97150310f89f908abbf6fa9640ccc36f9bfa9e5e987775db310b3b70c2d11602
Index digestsha256:baba630419915985442f315f08b0cf46d9f4c8a0cc4bd38e94a6d35751dd5ef5
Pulled asjellyfin/jellyfin:12.0@sha256:97150310f89f908abbf6fa9640ccc36f9bfa9e5e987775db310b3b70c2d11602 via registry-1.docker.io
Platform contractami-025d99823a4caad37 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20260909-001)
Config revisionsapp e0d620bc1b59 · compose cb6224fdbc5a
Release typeinitial — rule1: no published versions recorded for this app

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.0.0.0 — 匹配(prefix):kind=exec_command 取到 '12.0.0.0',期望 '12.0'
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 10.22s
Container staterunning
Duration47.5s(2026-09-11T10:50:19Z → 2026-09-11T10:51:06Z)

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 10.22s

Container logs (tail)

Implementations.AppBase.BaseConfigurationManager: Saving system configuration
jellyfin-1  | [10:50:53.196] [INF] [6] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
jellyfin-1  | [10:50:53.199] [INF] [6] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: TMDb 12.0.0.0
jellyfin-1  | [10:50:53.200] [INF] [6] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: Studio Images 12.0.0.0
jellyfin-1  | [10:50:53.200] [INF] [6] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: OMDb 12.0.0.0
jellyfin-1  | [10:50:53.209] [INF] [6] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: MusicBrainz 12.0.0.0
jellyfin-1  | [10:50:53.210] [INF] [6] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: ListenBrainz Similarity Provider 12.0.0.0
jellyfin-1  | [10:50:53.210] [INF] [6] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: AudioDB 12.0.0.0
jellyfin-1  | [10:50:53.241] [INF] [6] Emby.Server.Implementations.Library.Search.SearchManager: Registered 0 external search providers: . Fallback providers: Database (priority 100)
jellyfin-1  | [10:50:53.243] [INF] [6] Jellyfin.Server.Migrations.JellyfinMigrationService: There are 5 migrations for stage AppInitialisation.
jellyfin-1  | [10:50:53.243] [INF] [6] InternalCodeMigration: Perform migration 20250420090000_AddDefaultPluginRepository
jellyfin-1  | [10:50:53.245] [INF] [6] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Saving system configuration
jellyfin-1  | [10:50:53.246] [INF] [6] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
jellyfin-1  | [10:50:53.246] [INF] [6] InternalCodeMigration: Migration 20250420090000_AddDefaultPluginRepository was successfully applied
jellyfin-1  | [10:50:53.248] [INF] [6] InternalCodeMigration: Perform migration 20250420110000_ReaddDefaultPluginRepository
jellyfin-1  | [10:50:53.248] [INF] [6] InternalCodeMigration: Migration 20250420110000_ReaddDefaultPluginRepository was successfully applied
jellyfin-1  | [10:50:53.249] [INF] [6] InternalCodeMigration: Perform migration 20250420160000_AddDefaultCastReceivers
jellyfin-1  | [10:50:53.250] [INF] [6] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Saving system configuration
jellyfin-1  | [10:50:53.250] [INF] [6] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
jellyfin-1  | [10:50:53.251] [INF] [6] InternalCodeMigration: Migration 20250420160000_AddDefaultCastReceivers was successfully applied
jellyfin-1  | [10:50:53.252] [INF] [6] InternalCodeMigration: Perform migration 20250420170000_UpdateDefaultPluginRepository
jellyfin-1  | [10:50:53.252] [INF] [6] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Saving system configuration
jellyfin-1  | [10:50:53.252] [INF] [6] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
jellyfin-1  | [10:50:53.253] [INF] [6] InternalCodeMigration: Migration 20250420170000_UpdateDefaultPluginRepository was successfully applied
jellyfin-1  | [10:50:53.254] [INF] [6] InternalCodeMigration: Perform migration 20250420230000_MoveTrickplayFiles
jellyfin-1  | [10:50:53.625] [INF] [6] Jellyfin.Server.Migrations.Routines.MoveTrickplayFiles: Checked: 5000 - Moved: 0 - Time: 00:00:00.3700765
jellyfin-1  | [10:50:53.626] [INF] [6] Jellyfin.Server.Migrations.Routines.MoveTrickplayFiles: Moved 0 items in 00:00:00.3704755
jellyfin-1  | [10:50:53.626] [INF] [6] InternalCodeMigration: Migration 20250420230000_MoveTrickplayFiles was successfully applied
jellyfin-1  | [10:50:53.628] [INF] [6] Main: Attempt to cleanup JellyfinDb backup.
jellyfin-1  | [10:50:53.629] [INF] [6] Main: Migrations have been applied, optimizing the database... This might take a while
jellyfin-1  | [10:50:53.644] [INF] [6] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: jellyfin.db optimized successfully!
jellyfin-1  | [10:50:53.670] [INF] [4] Main: Kestrel is listening on 0.0.0.0
jellyfin-1  | [10:50:53.684] [WRN] [4] Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager: No XML encryptor configured. Key {282ab3e4-6b63-4568-add8-7de0034454c0} may be persisted to storage in unencrypted form.
jellyfin-1  | [10:50:54.050] [WRN] [4] Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware: The WebRootPath was not found: /wwwroot. Static files may be unavailable.
jellyfin-1  | [10:50:54.449] [INF] [4] Emby.Server.Implementations.ApplicationHost: Running startup tasks
jellyfin-1  | [10:50:54.497] [INF] [4] Emby.Server.Implementations.ScheduledTasks.TaskManager: Daily trigger for Generate Trickplay Images set to fire at 2026-09-12 03:00:00.000 +00:00, which is 16:09:05.5025100 from now.
jellyfin-1  | [10:50:54.499] [INF] [4] Emby.Server.Implementations.ScheduledTasks.TaskManager: Daily trigger for Extract Chapter Images set to fire at 2026-09-12 02:00:00.000 +00:00, which is 15:09:05.5001802 from now.
jellyfin-1  | [10:50:54.521] [INF] [4] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Found ffmpeg version 8.1.2
jellyfin-1  | [10:50:54.552] [INF] [4] 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  | [10:50:54.567] [INF] [4] 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  | [10:50:54.580] [INF] [4] 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  | [10:50:54.753] [INF] [4] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available hwaccel types: ["cuda", "vaapi", "qsv", "drm", "opencl", "vulkan", "amf"]
jellyfin-1  | [10:50:57.512] [INF] [6] Emby.Server.Implementations.ScheduledTasks.TaskManager: Clean Transcode Directory Completed after 0 minute(s) and 0 seconds
jellyfin-1  | [10:50:57.876] [INF] [4] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: FFmpeg: /usr/lib/jellyfin-ffmpeg/ffmpeg
jellyfin-1  | [10:50:57.877] [INF] [4] Emby.Server.Implementations.ApplicationHost: ServerId: ee36524ff75b41649e02afe6c0b9a9e0
jellyfin-1  | [10:50:57.877] [INF] [4] Emby.Server.Implementations.ApplicationHost: Core startup complete
jellyfin-1  | [10:50:57.877] [INF] [4] Main: Startup complete 0:00:08.0289242
jellyfin-1  | [10:50:58.598] [INF] [4] Emby.Server.Implementations.ScheduledTasks.TaskManager: Update Plugins Completed after 0 minute(s) and 1 seconds
jellyfin-1  | [10:51:03.412] [ERR] [21] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: Token is required. URL GET /socket.
jellyfin-1  | [10:51:05.130] [ERR] [23] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: Token is required. URL GET /socket.
jellyfin-1  | [10:51:06.137] [ERR] [21] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: Token is required. URL GET /socket.

Raw manifest

{
  "schema_version": "1.0",
  "verification_id": "jellyfin-v12.0-20260911-001",
  "app": "jellyfin",
  "app_version": "v12.0",
  "release": {
    "source_repo": "jellyfin/jellyfin",
    "source_revision": "6c073e19ddf604b2369c638716164fdab4c952dc",
    "release_tag": "v12.0",
    "upstream_tag": "v12.0",
    "image_reference": "jellyfin/jellyfin:12.0"
  },
  "container": {
    "image": "jellyfin/jellyfin:12.0",
    "digest": "sha256:97150310f89f908abbf6fa9640ccc36f9bfa9e5e987775db310b3b70c2d11602",
    "manifest_digest": "sha256:baba630419915985442f315f08b0cf46d9f4c8a0cc4bd38e94a6d35751dd5ef5",
    "platform": "linux/amd64"
  },
  "platform": {
    "platform_verification_id": "plat-us-east-1-x86_64-20260909-001",
    "ami_id": "ami-025d99823a4caad37",
    "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"
  },
  "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.0/wizard.png",
        "caption": {
          "en": "Startup wizard",
          "zh": "初始化向导"
        }
      }
    ],
    "report_url": "",
    "workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/34591089985"
  },
  "website": {
    "app": "jellyfin",
    "app_version": "v12.0",
    "verification_id": "jellyfin-v12.0-20260911-001",
    "verification_run_id": "34591089985",
    "platform_verification_id": "plat-us-east-1-x86_64-20260909-001",
    "ami_id": "ami-025d99823a4caad37",
    "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-09-11T10:51:06Z",
    "report_url": "",
    "workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/34591089985",
    "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.0",
      "extra_environment": [],
      "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": "initial",
      "previous_version": "",
      "type_evidence": "rule1: no published versions recorded for this app"
    },
    "screenshots": [
      {
        "scenario": "wizard",
        "file": "wizard.png",
        "url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/jellyfin/v12.0/wizard.png",
        "caption": {
          "en": "Startup wizard",
          "zh": "初始化向导"
        }
      }
    ]
  },
  "verification_run_id": "34591089985",
  "verified_at": "2026-09-11T10:51:06Z"
}