動画配信サービス — Jellyfin 検証メモ

// VIDEO SERVICE / 初回構築 2026-03-23 / 最終更新: 2026-05-14 (構成棚卸し)

構想/休眠 2026-03-23 にR640上で Jellyfin 検証稼働。 その後の R640 再構築 (2026-05-14 OS fresh install) で停止中。 将来の VOD サービス化向けの設計メモとして保管。

構想の背景

Nextcloud 上での MV (Music Video) 直接再生はトランスコード/ストリーム制御が弱く、 モバイル/TV 再生で安定しなかった。 これを解決するために専用配信サーバー Jellyfin を導入し、 NC のデータ領域をライブラリとしてマウントする構成を検証した。

2026-03 試験構成 (履歴)
Docker 上で稼働 (当時 R640) └─ Jellyfin (port 8096) └─ /media/music_video └─ NC データ領域 (music video ディレクトリ) を read-only マウント

実施した手順 (記録として保存):

# 1. ffmpeg 同居 (NC側コンテナ)
docker exec -u root nextcloud-stack-app-1 apt-get update
docker exec -u root nextcloud-stack-app-1 apt-get install -y ffmpeg

# 2. compose.yml にJellyfin追加
  jellyfin:
    image: jellyfin/jellyfin
    restart: unless-stopped
    ports:
      - "8096:8096"
    volumes:
      - jellyfin-config:/config
      - jellyfin-cache:/cache
      - "/path/to/music video:/media/music_video:ro"
volumes:
  jellyfin-config:
  jellyfin-cache:

# 3. 起動
docker compose up -d jellyfin

# 4. 初期セットアップ
#  - サーバー名: k2-o.net
#  - ライブラリ: ミュージックビデオ → /media/music_video
#  - ffmpeg パス設定済み

当時のローカルアクセス: http://<ホストIP>:8096 (内部LANのみ)

現状 (2026-05-14)
項目状態
Jellyfin コンテナ停止 (R640 OS再インストール時に消失)
NC データ領域maguro /srv/storage/nextcloud-data/ に移行済
Music Video データNC 内に保持
再起動方針必要が出たら maguro 上で再構築 (NC データと同居なら NFS マウント不要)
方針変更: 当初は「R640 で Jellyfin + NC データを NFS マウント」だったが、 2026-05-14 の構成変更で
NC本体と NCデータがどちらも maguro に集約された。 Jellyfin を再起動する場合は maguro上のDocker で立てるのが自然 (NFSマウント不要、 ローカル volume mount で完結)。
将来の VOD サービス化 (構想)
  • 外部公開は R640 nginx SNI passthrough 経由 (専用FQDN 例: video.k2-o.net) で maguro:8096 へ
  • または WireGuard 経由のみ (顧客VPN wg-clients から)
  • 顧客ポータル (mikyun-portal) と Jellyfin アカウント連動 (SSO 検討)
  • 将来: PX-W3U4 + Mirakurun + EPGStation での TV録画配信を追加
[将来構想] TV録画基盤 darkhero (PX-W3U4 + Mirakurun + EPGStation) ↓ 録画ファイル maguro /srv/storage (NC ↔ Jellyfin で参照) ↓ Jellyfin (maguro Docker) ↓ WG 経由 / または R640 SNI 経由 ↓ 顧客 (スマホ / TV / ブラウザ)
2026-03 検証で得たノウハウ: NC データ領域を Jellyfin で直接マウントすると ffmpeg トランスコードが必要な動画の再生が安定する。 NC との同居が必須ではないので、 ストレージ近接ホスト (= maguro) に立てるのが正解。 再構築時は本ページの compose 定義を再利用。