海外に住んでいると、日本のテレビ番組を自由に見られないことがよくあります。
ニュースやバラエティ、アニメなど、日常的に見ていた番組が見られなくなって不便に感じている方も多いのではないでしょうか。
私自身アメリカで生活していて、日本のテレビを好きな時間に、できれば録画して楽しみたいと思うようになりました。そこで今回、実家に地デジ録画サーバーを構築し、録画した番組を Emby 経由で PC やスマホから再生できる環境を整えました。これにより、海外にいても快適に日本のテレビ番組を楽しめるようになりました。
使用したのは、Linux環境でも使えるUSB接続型地デジチューナー「PX-Q1UD」と、B-CASカードを読み取るICカードリーダー「SCR3310/v2.0」を使いました
※このほかに、アンテナケーブルと有効なB-CASカードが別途必要です。
この記事では、Docker を使った Emby と mirakc の構築手順を中心に紹介していきます。
これから録画環境を整えたい方、日本のテレビを海外でも楽しみたい方は、ぜひ参考にしてみてください。
本構成は正規のB-CASカードを用い、自宅内や個人利用の範囲での録画・視聴を目的としており、第三者への配信や再配布などの行為を含みません。著作権および暗号回避に関する法律に従って、再配信や不正改造は行っていません。
録画サーバーの構成と必要なもの
今回構築した録画サーバーは、Ubuntu Server 24.04 LTS と Docker Compose をベースに Emby と mirakc を組み合わせたシンプルかつ拡張性の高い構成です。
テレビ番組を録画・視聴できる環境を構築するために、以下のようなハードウェアとソフトウェアを使用しました。
使用したハードウェア
| 製品名 | 用途 | 備考 |
|---|---|---|
| PX-Q1UD | USB接続型地デジチューナー | PX-S1UDを4基内蔵した地デジチューナー |
| SCR3310/v2.0 | ICカードリーダー | B-CASカードを認識するために使用 |
| アンテナケーブル | 地上波アンテナとチューナーの接続用 | 宅内アンテナ設備と接続 |
| B-CASカード | 地デジ視聴のために必須 | 有効なB-CASカードが必要 |
使用したソフトウェアとバージョン
| ソフトウェア名 | バージョン | 説明 | |
|---|---|---|---|
| Ubuntu Server | 24.04.2 LTS | サーバーOS | |
| Docker Engine | 28.2.2 | コンテナを使った仮想環境 | |
| Emby | 4.8.11.0 | メディアサーバー | |
| mirakc | 3.4.21 | チューナー制御・EPG取得などを行うサーバー | |
| b25 | 自作ビルド | B-CASデコード処理を行うプロキシサーバー | |
| bcas | 自作ビルド | ICカードリーダーからB-CASカードを読み取るPCSCサーバー | |
録画サーバーの全体構成
この録画サーバーは、複数のDocker コンテナで構成され、それぞれが役割を分担しています。
中心となる Emby が録画の管理とストリーミング配信を担い、Mirakurun の軽量版フォークである mirakc がチューナー制御と番組表の管理を行います。mirakc は EPG(番組表)情報の取得・管理も行い、Emby と連携することで録画予約や番組視聴が可能になります。
mirakc 自体には暗号化された地デジストリーム(B-CAS)をデコードする機能がないため、TSストリームのデコード処理には libaribb25 を使用する b25 コンテナと、ICカードリーダーからB-CASカードの情報を提供する bcas コンテナを併用しています。これにより、mirakc が受信したストリームはデコードされて Emby に渡され、録画や視聴が可能になります。
ディレクトリ構成図
tv-server/
├── emby/
│ ├── compose.yml
│ └── config/
│
└── mirakc/
├── compose.yml
├── config.yml
├── b25/
│ ├── Dockerfile
│ └── main.sh
└── bcas/
├── Dockerfile
└── main.sh
初期設定とセットアップ
ファームウェアのインストール
今回使用する PX-Q1UD は、内部的に PX-S1UD を4つ搭載した構成になっており、Linux では PX-S1UD 用のファームウェアを流用することで正しく認識されます。そのため、まず PX-S1UD 用のファームウェアをシステムに導入し、再起動してチューナーを有効化する必要があります。
# ファームウェアのダウンロードと設置
wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
unzip PX-S1UD_driver_Ver.1.0.1.zip
sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/
# システムを再起動
sudo reboot nowチューナーの認識確認
以下のコマンドでadapter0〜adapter3 が表示されていれば、PX-Q1UDが4チューナーとして正しく認識されています。
ls /dev/dvb
# adapter0 adapter1 adapter2 adapter3ディレクトリ構成の準備
このプロジェクト用に必要なディレクトリをまとめて作成します。
mkdir -p ~/tv-server/{emby/config,mirakc/b25,mirakc/bcas}
cd ~/tv-serverファイルの配置
本構成では、emby と mirakc の compose.yml や設定ファイルをコンテナごとに整理しておくことで、メンテナンス性と可読性の高い構成を実現しています。mirakc/config.yml は 公式ドキュメントを参考にしながら、自分の環境に合わせてカスタマイズしてください。
b25・bcas コンテナのセットアップ手順は、以下の公式ドキュメントまたは GitHubの構成例を確認してください。
ここでは以下の3つの主要ファイルを例として紹介します。
emby/compose.yml
services:
emby:
image: emby/embyserver:latest
container_name: emby
restart: unless-stopped
environment:
- UID=1000
- GID=100
- GIDLIST=100
- TZ=Asia/Tokyo
volumes:
- ./config:/config
- ./recordings:/recordings
ports:
- 8096:8096
- 8920:8920mirakc/compose.yml
services:
mirakc:
image: docker.io/mirakc/mirakc:alpine
container_name: mirakc
init: true
restart: unless-stopped
environment:
TZ: Asia/Tokyo
RUST_LOG: info
devices:
- /dev/dvb:/dev/dvb
volumes:
- mirakc-epg:/var/lib/mirakc/epg
- ./config.yml:/etc/mirakc/config.yml:ro
ports:
- 40772:40772
b25:
container_name: b25
build:
context: ./b25
depends_on:
- bcas
init: true
restart: unless-stopped
ports:
- 40773:40773
environment:
BCAS_SERVER: bcas:40774
TZ: Asia/Tokyo
bcas:
container_name: bcas
build:
context: ./bcas
init: true
restart: unless-stopped
devices:
- /dev/bus/usb
ports:
- 40774:40774
volumes:
mirakc-epg:mirakc/config.yml
epg:
cache-dir: /var/lib/mirakc/epg
server:
addrs:
- http: '0.0.0.0:40772'
channels:
- name: "NHK総合"
type: "GR"
channel: "19"
- name: "NHK教育"
type: "GR"
channel: "26"
tuners:
- name: "PX-Q1UD_0"
types: [GR]
command: >-
recdvb --dev 0 {{channel}} {{duration}} -
- name: "PX-Q1UD_1"
types: [GR]
command: >-
recdvb --dev 1 {{channel}} {{duration}} -
- name: "PX-Q1UD_2"
types: [GR]
command: >-
recdvb --dev 2 {{channel}} {{duration}} -
- name: "PX-Q1UD_3"
types: [GR]
command: >-
recdvb --dev 3 {{channel}} {{duration}} -
filters:
decode-filter:
command: >-
socat - tcp-connect:b25:40773録画・視聴のテストと確認
ここからは、実際に録画サーバーとして正しく動作するかを確認していきます。各コンテナの起動、Embyの初期設定、mirakcの動作確認、必要に応じたログ確認まで順に進めましょう。
コンテナの起動
まず、作成した compose.yml があるディレクトリに移動し、以下のようにコンテナを起動します。emby と mirakc に加え、b25・bcas の2つの補助コンテナも正常に立ち上がっているか確認してください。
cd emby
docker compose up -d
cd ../mirakc
docker compose up -dEmbyにアクセスして初期設定
ブラウザで以下のURLにアクセスし、Embyの初期セットアップ(言語・ユーザー登録・パスワード設定など)を行ってください。
http://<サーバーのIPアドレス>:8096
mirakcのバージョン・状態確認
APIから mirakc が正常に起動しているか確認するには、以下のコマンドを実行します。
curl http://localhost:40772/api/version
# {"current":"3.4.21","latest":"3.4.21"}また、動作に問題がある場合は各コンテナのログを確認して、エラーが出ていないかを調べてください。
docker logs mirakc
docker logs b25
docker logs bcasEmbyにM3UとXMLTVを追加する
TV ソース(M3Uチューナー)の追加
- EmbyのWeb UIで「Live TV」→「TV ソースを追加」をクリックします。
- ソースタイプを 「M3U Tuner」 に設定します。
- M3U URL は以下のように設定します。
http://<サーバーのIPアドレス>:40772/api/iptv/playlist
TV ガイドデータプロバイダ(XMLTV)の追加
- 「Live TV」→「TV ガイドデータプロバイダを追加」へ進みます。
- ソースタイプを 「XMLTV」 に設定します。
- XMLTV URL を以下のように設定します。
http://<サーバーのIPアドレス>:40772/api/iptv/xmltv
設定が完了すると、Emby が番組表を取得し、チャンネル一覧が自動的に表示されるようになります。
この状態で「ライブTV」タブから、リアルタイムで地デジを視聴・録画できるようになります。
まとめ
今回は自宅に地デジ録画サーバーを構築することで、外出先からでもテレビ番組を録画・視聴できる、快適なテレビ環境を手に入れることができました。
当初は Mirakurun を使用していましたが、Emby との相性の問題により InternalServerError が発生することがありました。そのため、活発にメンテナンスされておりより軽量な mirakc に切り替えたところ、問題なく録画・再生ができるようになりました。
録画した番組は Emby を通じて PC やスマホから再生でき、ネットワーク環境が整っていれば 自宅外からでもアクセスできるのが大きなメリットです。さらに、番組表連携による録画予約や、アプリからの視聴もスムーズに行えるため、普段テレビを見る時間が取りにくい方にとっても便利な仕組みです。
Emby + mirakc による録画サーバーは、テレビの楽しみ方を大きく広げてくれるツールだと実感しています。ぜひ自分のスタイルに合わせた環境構築にチャレンジしてみてください。



コメント