Verification Report · jellyfin v12.1
NOT PUBLISHED
jellyfin-v12.1-20260915-001
verified_at 2026-09-15T02:11:42Z
Immutable inputs
| App version | v12.1 ← release tag v12.1 · source ee91c75e777d |
| Image (exact tag) | jellyfin/jellyfin:12.1 |
| Image digest (linux/amd64) | sha256:326be1010b16c92e492f6c7dd6fd105943db84ce723c73183279a1ab357b8f9b |
| Index digest | sha256:78d3ea1207d1322471fcac39a614f004f2ccf7e878f95ab2977d752f07e4dd7e |
| Pulled as | jellyfin/jellyfin:12.1@sha256:326be1010b16c92e492f6c7dd6fd105943db84ce723c73183279a1ab357b8f9b via registry-1.docker.io |
| Platform contract | ami-025d99823a4caad37 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20260909-001) |
| Config revisions | app e0d620bc1b59 · compose cb6224fdbc5a |
| Release type | new_version — rule4: not semver-comparable to previous 'v12.0' |
Publish gate
| Check | Field | Result |
|---|
| Compose started | checks.compose_started | Passed |
| Container healthy | checks.container_healthy | Passed |
| Health check passed | checks.health_check_passed | Passed |
| Application tests | checks.tests_passed | Passed |
| Screenshots captured | checks.screenshots_generated | Passed |
| Screenshots published | checks.screenshots_uploaded | Failed |
| Report published | checks.report_uploaded | Failed |
| Manifest published | checks.verification_manifest_uploaded | Failed |
| Platform contract valid | checks.required_platform_contract_valid | Passed |
Evidence
| Health probe | HTTP 200 — ready |
| Version assertion | True actual 12.1.0.0 — 匹配(prefix):kind=exec_command 取到 '12.1.0.0',期望 '12.1' |
| Tests | 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 9.96s
|
| Container state | running |
| Duration | 44.7s(2026-09-15T02:10:57Z → 2026-09-15T02:11:41Z) |
Screenshots

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 9.96s
Container logs (tail)
Implementations.Plugins.PluginManager: Loaded plugin: TMDb 12.1.0.0
jellyfin-1 | [02:11:28.581] [INF] [10] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: Studio Images 12.1.0.0
jellyfin-1 | [02:11:28.582] [INF] [10] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: OMDb 12.1.0.0
jellyfin-1 | [02:11:28.590] [INF] [10] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: MusicBrainz 12.1.0.0
jellyfin-1 | [02:11:28.590] [INF] [10] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: ListenBrainz Similarity Provider 12.1.0.0
jellyfin-1 | [02:11:28.591] [INF] [10] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: AudioDB 12.1.0.0
jellyfin-1 | [02:11:28.619] [INF] [10] Emby.Server.Implementations.Library.Search.SearchManager: Registered 0 external search providers: . Fallback providers: Database (priority 100)
jellyfin-1 | [02:11:28.620] [INF] [10] Jellyfin.Server.Migrations.JellyfinMigrationService: There are 5 migrations for stage AppInitialisation.
jellyfin-1 | [02:11:28.621] [INF] [10] InternalCodeMigration: Perform migration 20250420090000_AddDefaultPluginRepository
jellyfin-1 | [02:11:28.622] [INF] [10] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Saving system configuration
jellyfin-1 | [02:11:28.623] [INF] [10] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
jellyfin-1 | [02:11:28.623] [INF] [10] InternalCodeMigration: Migration 20250420090000_AddDefaultPluginRepository was successfully applied
jellyfin-1 | [02:11:28.625] [INF] [10] InternalCodeMigration: Perform migration 20250420110000_ReaddDefaultPluginRepository
jellyfin-1 | [02:11:28.625] [INF] [10] InternalCodeMigration: Migration 20250420110000_ReaddDefaultPluginRepository was successfully applied
jellyfin-1 | [02:11:28.626] [INF] [10] InternalCodeMigration: Perform migration 20250420160000_AddDefaultCastReceivers
jellyfin-1 | [02:11:28.627] [INF] [10] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Saving system configuration
jellyfin-1 | [02:11:28.627] [INF] [10] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
jellyfin-1 | [02:11:28.627] [INF] [10] InternalCodeMigration: Migration 20250420160000_AddDefaultCastReceivers was successfully applied
jellyfin-1 | [02:11:28.629] [INF] [10] InternalCodeMigration: Perform migration 20250420170000_UpdateDefaultPluginRepository
jellyfin-1 | [02:11:28.629] [INF] [10] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Saving system configuration
jellyfin-1 | [02:11:28.642] [INF] [10] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
jellyfin-1 | [02:11:28.642] [INF] [10] InternalCodeMigration: Migration 20250420170000_UpdateDefaultPluginRepository was successfully applied
jellyfin-1 | [02:11:28.648] [INF] [10] InternalCodeMigration: Perform migration 20250420230000_MoveTrickplayFiles
jellyfin-1 | [02:11:28.892] [WRN] [16] Microsoft.Extensions.Diagnostics.HealthChecks.DefaultHealthCheckService: Health check StartupCheck with status Degraded completed after 0.8474ms with message 'Server is still starting up.'
jellyfin-1 | [02:11:29.031] [INF] [10] Jellyfin.Server.Migrations.Routines.MoveTrickplayFiles: Checked: 5000 - Moved: 0 - Time: 00:00:00.3824585
jellyfin-1 | [02:11:29.032] [INF] [10] Jellyfin.Server.Migrations.Routines.MoveTrickplayFiles: Moved 0 items in 00:00:00.3830123
jellyfin-1 | [02:11:29.032] [INF] [10] InternalCodeMigration: Migration 20250420230000_MoveTrickplayFiles was successfully applied
jellyfin-1 | [02:11:29.035] [INF] [10] Main: Attempt to cleanup JellyfinDb backup.
jellyfin-1 | [02:11:29.035] [INF] [10] Main: Migrations have been applied, optimizing the database... This might take a while
jellyfin-1 | [02:11:29.127] [INF] [10] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: jellyfin.db optimized successfully!
jellyfin-1 | [02:11:29.152] [INF] [6] Main: Kestrel is listening on 0.0.0.0
jellyfin-1 | [02:11:29.166] [WRN] [6] Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager: No XML encryptor configured. Key {b441a5e2-6e57-4bb3-ac17-23b2370e3fbc} may be persisted to storage in unencrypted form.
jellyfin-1 | [02:11:29.507] [WRN] [6] Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware: The WebRootPath was not found: /wwwroot. Static files may be unavailable.
jellyfin-1 | [02:11:29.891] [INF] [6] Emby.Server.Implementations.ApplicationHost: Running startup tasks
jellyfin-1 | [02:11:29.935] [INF] [6] Emby.Server.Implementations.ScheduledTasks.TaskManager: Daily trigger for Generate Trickplay Images set to fire at 2026-09-15 03:00:00.000 +00:00, which is 00:48:30.0643278 from now.
jellyfin-1 | [02:11:29.938] [INF] [6] Emby.Server.Implementations.ScheduledTasks.TaskManager: Daily trigger for Extract Chapter Images set to fire at 2026-09-16 02:00:00.000 +00:00, which is 23:48:30.0619610 from now.
jellyfin-1 | [02:11:29.959] [INF] [6] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Found ffmpeg version 8.1.2
jellyfin-1 | [02:11:29.989] [INF] [6] 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 | [02:11:30.003] [INF] [6] 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 | [02:11:30.017] [INF] [6] 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 | [02:11:30.181] [INF] [6] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available hwaccel types: ["cuda", "vaapi", "qsv", "drm", "opencl", "vulkan", "amf"]
jellyfin-1 | [02:11:31.760] [INF] [6] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: FFmpeg: /usr/lib/jellyfin-ffmpeg/ffmpeg
jellyfin-1 | [02:11:31.761] [INF] [6] Emby.Server.Implementations.ApplicationHost: ServerId: cb46a62b1f3e424cb74ce347f5186e32
jellyfin-1 | [02:11:31.761] [INF] [6] Emby.Server.Implementations.ApplicationHost: Core startup complete
jellyfin-1 | [02:11:31.762] [INF] [6] Main: Startup complete 0:00:05.9236783
jellyfin-1 | [02:11:32.947] [INF] [16] Emby.Server.Implementations.ScheduledTasks.TaskManager: Clean Transcode Directory Completed after 0 minute(s) and 0 seconds
jellyfin-1 | [02:11:33.528] [INF] [10] Emby.Server.Implementations.ScheduledTasks.TaskManager: Update Plugins Completed after 0 minute(s) and 0 seconds
jellyfin-1 | [02:11:38.812] [ERR] [4] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: Token is required. URL GET /socket.
jellyfin-1 | [02:11:40.488] [ERR] [4] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: Token is required. URL GET /socket.
jellyfin-1 | [02:11:41.492] [ERR] [23] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: Token is required. URL GET /socket.
Raw manifest
{
"schema_version": "1.0",
"verification_id": "jellyfin-v12.1-20260915-001",
"app": "jellyfin",
"app_version": "v12.1",
"release": {
"source_repo": "jellyfin/jellyfin",
"source_revision": "ee91c75e777da41a9c4f4855e70adc604fbf2ef8",
"release_tag": "v12.1",
"upstream_tag": "v12.1",
"image_reference": "jellyfin/jellyfin:12.1"
},
"container": {
"image": "jellyfin/jellyfin:12.1",
"digest": "sha256:326be1010b16c92e492f6c7dd6fd105943db84ce723c73183279a1ab357b8f9b",
"manifest_digest": "sha256:78d3ea1207d1322471fcac39a614f004f2ccf7e878f95ab2977d752f07e4dd7e",
"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.1/wizard.png",
"caption": {
"en": "Startup wizard",
"zh": "初始化向导"
}
}
],
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/34920147114"
},
"website": {
"app": "jellyfin",
"app_version": "v12.1",
"verification_id": "jellyfin-v12.1-20260915-001",
"verification_run_id": "34920147114",
"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-15T02:11:42Z",
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/34920147114",
"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.1",
"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": "new_version",
"previous_version": "v12.0",
"type_evidence": "rule4: not semver-comparable to previous 'v12.0'"
},
"screenshots": [
{
"scenario": "wizard",
"file": "wizard.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/jellyfin/v12.1/wizard.png",
"caption": {
"en": "Startup wizard",
"zh": "初始化向导"
}
}
]
},
"verification_run_id": "34920147114",
"verified_at": "2026-09-15T02:11:42Z"
}