2023年8月版 45分で作れる自宅録画サーバー(Ubuntu 22.04.3LTS)

2023年8月現在、自宅録画サーバーを45分で作る方法を紹介します。

<前提条件>

  1. PC(PLEXチューナーカード搭載、あるいはUSB接続PLEXチューナー)
  2. USB接続カードリーダー
  3. B-CASカード

上記が揃っていれば、約45分でインストール完了。

  • (30分) Ubuntu 22.04.3インストール
  • (15分) 自宅録画サーバー完成
  • (20分) EPGStationで1週間の番組表を読み込み、予約録画ができる

入手可能な以下4点を利用します。

  1. Ubuntu LTS 22.04 日本語Remix
  2. EPGStation Mirakurun docker版
  3. 非公式Linuxドライバ for PLEX TVチューナー
  4. PLEX TVチューナー

    (PX-Q3PE4/5、PX-W3PE4/5)
    (PX-MLT5PE、PX-MLT8PE)
    (PX-Q3U4、PX-W3U4)

<2022年5月からの改訂ポイント>

  • Mirakurun 3.9.0-rc.4(最新版がインストールされる)
  • EPGStation 2.7.1(最新版がインストールされる)

docker Compose V2は、次回のバージョンで対応予定

用意するもの

No.品名説明
1B-CASカード
2USB接続カードリーダー例えば、SCR3310v2.0
3PLEX社製TVチューナーPX-Q3PE4/5,
PX-W3PE4/5,
PX-Q3U4,
PX-W3U4,
PX-MLT5PE,
PX-MLT8PE
4アンテナケーブル
5LANケーブルかWiFi
6PCUbuntu 22.04がインストールできるPC
B-CASカード
USB接続カードリーダー
PLEX社製TVチューナー
アンテナケーブル
PC

PLEX TVチューナーには、使用できるPCに以下の制限があります。

PCW3U4
Q3U4
W3PE4
Q3PE4
MLT5PE
W3PE5
Q3PE5
MLT8PE
フルハイトの
PCI Expressカード
が使える

内部USBポート
接続が必要

内部USBポート
接続が必要
ロープロファイルの
PCI Expressカード
が使える

内部USBポート
接続が必要
PCI Expressカード
が使えないが
USBポートがある

それ以外に制約はありませんが、推奨事項がいくつかあります。

  • CPU
    第6世代 Intel Core i3 以上が推奨。
  • ストレージ
    システム用と録画データ用を分ける。
    システム用は、120GB以上のSSD、録画データ用は、HDDが推奨。
  • 電源
    TSからmp4へトランスコードを行う場合は、400W以上の安定した電源が望ましい。

ハードウェアの準備

  1. PCを組み立てます。
  2. (W3U4、Q3U4の場合)
    外部USBポートに接続します。
    (W3PE5、Q3PE5の場合)
    PLEX TVチューナーをPCI Expressのスロットに入れます。
    (W3PE4、Q3PE4、MLT5PE、MLT8PEの場合)
    PLEX TVチューナーをPCI Expressのスロットに入れます。
    内部USBポートとTVチューナーカードを接続します。
  3. B-CASカードをUSB接続カードリーダーに挿入する。
    B-CASカードの裏面を上にして挿入する。
  4. USB接続カードリーダーを外部USBポートに接続する。
  5. LANケーブルをPCに接続するか、WiFiを用意する。
  6. 準備した例を以下に示します。
  7. 最後に、PLEXチューナーのドライバをインストールするために、
    セキュリティーブートを「非UEFIモード」にします。
    PCの電源を入れて、「DEL」キーを押してBIOSユーティリティーを起動します。
    (本例は、ASUSのマザーボードの場合です。)
    画面下のメニュー左寄り「Advanced Mode」をクリックします。

    Advanced ModeのMain画面で、メニューから「起動」をクリックします。

    「起動」画面で「セキュリティブートメニュー」をクリックします。

    「セキュリティブートメニュー」画面で「OSタイプ」を「非UEFIモード」にします。

    メニューから「終了」をクリックし、「変更を保存しリセット」をクリックします。

    これで、リブートすれば、ハードウェアの準備は完了です。

インストールの準備

  1. 既に稼働しているdocker版EPGStationがある場合は、バックアップをしてください。
  2. Ubuntu 22.04をインストールします。
  3. root以外のユーザーでログインしてください。
    例えば、euserというユーザーを作成し、euserでログインします。
  4. インストールスクリプトをダウンロードします。
  5. ダウンロードしたファイルをホームディレクトリに展開します。
    ダウンロードディレクトリを表示します。
    「2023temp-20230821T031356Z-001.zip」をダブルクリックします。

    「2023temp」を右クリックしてメニューを表示し、「展開」をクリックします。

    「ホーム」をクリックして、「展開」をクリックします。

    「アーカイブの展開が完了しました」と表示されたら、「ファイル表示」をクリックします。「ホーム」の配下に「2023temp」ディレクトリができたことを確認します。
  6. 「端末」アプリを開く。
    画面左下の「アプリケーションを表示する」をクリックします。

    「端末」を左クリックして、「お気に入りに追加」をクリックします。

    画面左のメニューから「端末」をクリックします。

インストールの実行

  1. 「端末」を実行して、スクリプトを確認します。
    euser@pc:~$ cd ~/2023temp/epg-plex
    euser@pc:~/2023temp/epg-plex$ ls -la
    合計 48
    drwxrwxr-x 3 euser euser 4096 8月 21 12:25 .
    drwxrwxr-x 4 euser euser 4096 8月 21 12:25 ..
    -rw-rw-r-- 1 euser euser 212  8月 26 2021 1-preprocess.sh
    -rw-rw-r-- 1 euser euser 85   8月 26 2021 2-carddriver.sh
    -rw-rw-r-- 1 euser euser 116  8月 26 2021 3-checkcard.sh
    -rw-rw-r-- 1 euser euser 576  8月 26 2021 4-tunerdriver.sh
    -rw-rw-r-- 1 euser euser 27   8月 26 2021 5-checktuner.sh
    -rw-rw-r-- 1 euser euser 1115 8月 20 19:30 6-install-mlt5.sh
    -rw-rw-r-- 1 euser euser 1115 8月 20 19:31 6-install-mlt8.sh
    -rw-rw-r-- 1 euser euser 1105 8月 20 19:31 6-install-q.sh
    -rw-rw-r-- 1 euser euser 1109 8月 20 19:31 6-install-w.sh
    drwxrwxr-x 2 euser euser 4096 8月 21 12:25 dat
  2. スクリプトを順番に実行していきます。
    euser@pc:~/2023temp/epg-plex$ bash 1-preprocess.sh
    euser@pc:~/2023temp/epg-plex$ bash 2-carddriver.sh
    euser@pc:~/2023temp/epg-plex$ bash 3-checkcard.sh
    euser@pc:~/2023temp/epg-plex$ bash 4-tunerdriver.sh

    ここで自動的にリブートします。(ここまで5分
    リブート後端末を開き、~/2023temp/epg-plexまで戻ります。

    euser@pc:$cd ~/2023temp/epg-plex
    euser@pc:~/2023temp/epg-plex$ bash 5-checktuner.sh

    チューナードライバを確認したら、最後のインストールです。(ここから10分
    <Q3PE4/5、Q3U4>の場合

    euser@pc:~/2023temp/epg-plex$ bash 6-install-q.sh
    

    <W3PE4/5、W3U4>の場合

    euser@pc:~/2023temp/epg-plex$ bash 6-install-w.sh
    

    <MLT5PE>の場合

    euser@pc:~/2023temp/epg-plex$ bash 6-install-mlt5.sh
    

    <MLT8PE>の場合

    euser@pc:~/2023temp/epg-plex$ bash 6-install-mlt8.sh
    

インストールの詳細画面

  1.  1-preprocess.sh
    以下のスクリプトを実行します。

    euser@pc:~/2023temp/epg-plex$ bash 1-preprocess.sh
    

    結果は、以下のとおりです。

    docker-compose (1.29.2-1) を展開しています...
    python3-dotenv (0.19.2-1) を設定しています ...
    python3-distutils (3.10.4-0ubuntu1) を設定しています ...
    python3-attr (21.2.0-1) を設定しています ...
    python3-texttable (1.6.4-1) を設定しています ...
    python3-docopt (0.6.2-4) を設定しています ...
    python3-setuptools (59.6.0-1.2) を設定しています ...
    python3-pyrsistent:amd64 (0.18.1-1build1) を設定しています ...
    python3-websocket (1.2.3-1) を設定しています ...
    python3-dockerpty (0.4.1-2) を設定しています ...
    python3-docker (5.0.3-1) を設定しています ...
    python3-jsonschema (3.2.0-0ubuntu2) を設定しています ...
    docker-compose (1.29.2-1) を設定しています ...
    man-db (2.10.2-1) のトリガを処理しています ...
    docker-compose version 1.29.2, build unknown
    

    docker、docker-composeなどをインストールし、準備を完了します。

  2. 2-carddriver.sh
    以下のスクリプトを実行します。

    euser@pc:~/2023temp/epg-plex$ bash 2-carddriver.sh
    

    結果は以下のとおりです。

    + Historical bytes: 
    + TCK = 99 (correct checksum)
    
    Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
    3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
    	Japanese Chijou Digital B-CAS Card (pay TV)
    

    ctrl-cを入力して、スクリプトを終了します。
    これで、B-CASカードが有効になります。

  3. 3-checkcard.sh
    以下のスクリプトを実行します。

    euser@pc:~/2023temp/epg-plex$ bash 3-checkcard.sh
    

    結果は以下のとおりです。

    ○ pcscd.socket - PC/SC Smart Card Daemon Activation Socket
         Loaded: loaded (/lib/systemd/system/pcscd.socket; disabled; vendor preset:>
         Active: inactive (dead)
       Triggers: ● pcscd.service
         Listen: /run/pcscd/pcscd.comm (Stream)
    
     5月 23 10:22:29 motown systemd[1]: Listening on PC/SC Smart Card Daemon Activa>
     5月 23 10:23:51 motown systemd[1]: pcscd.socket: Deactivated successfully.
     5月 23 10:23:51 motown systemd[1]: Closed PC/SC Smart Card Daemon Activation S>
    lines 1-9/9 (END)
    

    「Active: inactive (dead)」を確認した後、
    ctrl-cを入力して、スクリプトを終了します。

  4. 4-tunerdriver.sh
    以下のスクリプトを実行します。

    euser@pc:~/2023temp/epg-plex$ bash 4-tunerdriver.sh
    

    結果は以下のとおりです。

    px4_drv.ko:
    Running module version sanity check.
     - Original module
       - No original module exists within this kernel
     - Installation
       - Installing to /lib/modules/5.15.0-30-generic/updates/dkms/
    
    Running the post_install script:
    './etc/99-px4video.rules' -> '/etc/udev/rules.d/99-px4video.rules'
    
    depmod....
    ドライバがインストールされました。enterキーを押すとリブートします。
    

    TVチューナーのドライバがインストールされました。
    enterキーを押してリブートしてください。

  5. 5-checktuner.sh
    以下のスクリプトを実行します。

    euser@pc:~/2023temp/epg-plex$ bash 5-checktuner.sh
    

    TVチューナーの非公式ドライバが正常にインストールされたことを確認します。
    Q3PE4/5、Q3U4の場合は、以下のように表示されます。

    crw-rw-r-- 1 root video 239, 0  3月 29 17:48 /dev/px4video0
    crw-rw-r-- 1 root video 239, 1  3月 29 17:48 /dev/px4video1
    crw-rw-r-- 1 root video 239, 2  3月 29 17:48 /dev/px4video2
    crw-rw-r-- 1 root video 239, 3  3月 29 17:48 /dev/px4video3
    crw-rw-r-- 1 root video 239, 4  3月 29 17:48 /dev/px4video4
    crw-rw-r-- 1 root video 239, 5  3月 29 17:48 /dev/px4video5
    crw-rw-r-- 1 root video 239, 6  3月 29 17:48 /dev/px4video6
    crw-rw-r-- 1 root video 239, 7  3月 29 17:48 /dev/px4video7
    

    W3PE4/5、W3U4の場合は、以下のように表示されます。

    crw-rw-r-- 1 root video 239, 0  3月 29 17:48 /dev/px4video0
    crw-rw-r-- 1 root video 239, 1  3月 29 17:48 /dev/px4video1
    crw-rw-r-- 1 root video 239, 2  3月 29 17:48 /dev/px4video2
    crw-rw-r-- 1 root video 239, 3  3月 29 17:48 /dev/px4video3
    

    MLT5PEの場合は、以下のように表示されます。

    crw-rw-r-- 1 root video 237, 0  9月 13 13:53 /dev/pxmlt5video0
    crw-rw-r-- 1 root video 237, 1  9月 13 13:53 /dev/pxmlt5video1
    crw-rw-r-- 1 root video 237, 2  9月 13 13:53 /dev/pxmlt5video2
    crw-rw-r-- 1 root video 237, 3  9月 13 13:53 /dev/pxmlt5video3
    crw-rw-r-- 1 root video 237, 4  9月 13 13:53 /dev/pxmlt5video4
    

    MLT8PEの場合は、以下のように表示されます。

    crw-rw-r-- 1 root video 237, 0  9月 13 13:53 /dev/pxmlt8video0
    crw-rw-r-- 1 root video 237, 1  9月 13 13:53 /dev/pxmlt8video1
    crw-rw-r-- 1 root video 237, 2  9月 13 13:53 /dev/pxmlt8video2
    crw-rw-r-- 1 root video 237, 3  9月 13 13:53 /dev/pxmlt8video3
    crw-rw-r-- 1 root video 237, 4  9月 13 13:53 /dev/pxmlt8video4
    crw-rw-r-- 1 root video 237, 5  9月 13 13:53 /dev/pxmlt8video5
    crw-rw-r-- 1 root video 237, 6  9月 13 13:53 /dev/pxmlt8video6
    crw-rw-r-- 1 root video 237, 7  9月 13 13:53 /dev/pxmlt8video7
    

    もし、ドライバが表示されない場合は、原因を調査します。
    解決しない場合は、先に進めません。

  6. 6-install
    インストールの最後のステップです。PLEX TVチューナー対応docker版mirakurun、mysql、epgstationをインストールします。
    (a) PX-Q3PE4/5、PX-Q3U4の場合、6-install-q.sh

    euser@pc:~/2023temp/epg-plex$ bash 6-install-q.sh
    

    (b) PX-W3PE4/5、PX-W3U4の場合、6-install-w.sh

    euser@pc:~/2023temp/epg-plex$ bash 6-install-w.sh
    

    (c) PX-MLT5PEの場合は、6-install-mlt5.sh

    euser@pc:~/2023temp/epg-plex$ bash 6-install-mlt5.sh
    

    (d) PX-MLT8PEの場合は、6-install-mlt8.sh

    euser@pc:~/2023temp/epg-plex$ bash 6-install-mlt8.sh
    

    スクリプト実行後、約10分で以下が表示されれば「インストール完了」です。

    Successfully built af61c6cadc6a
    Successfully tagged docker-mirakurun-epgstation_epgstation:latest
    Creating network "docker-mirakurun-epgstation_default" with the default driver
    Creating volume "docker-mirakurun-epgstation_mysql-db" with local driver
    Creating mirakurun           ... done
    Creating mysql-epgstation-v2 ... done
    Creating epgstation-v2       ... done
    
  7. Mirakurunの稼働確認
    ブラウザでMirakurunの稼働を確認する。
    「http://localhost:40772」

    2023年8月21日現在、Mirakurun 3.9.0-rc.4がインストールできます。
  8. EPGStationの稼働確認
    ブラウザでEPGStationの稼働を確認する。
    「http://localhost:8888」

    2023年8月21日現在、EPGStation 2.7.1がインストールできます。
    BSの番組表の方が、地デジの番組表より早く表示されます。
    地デジの1週間後の番組表が表示されるまで、およそ20分かかります。

録画する前に必ず実施すること

EPGStationのストレージの所有者は、デフォールトでrootになります。
所有者をログインユーザーにする必要があります。
以下の設定を行わないと、ファイルの自動削除などの際に、きちんと削除されないことが起こります。
また、sambaなど他のシステムからファイルの変更や削除を行う場合、アクセス権限の変更が面倒になります。

録画を始める前に、必ず以下を実施してください。

idコマンドを使って、ユーザーIDを調べます。

euser@pc:~$ id
uid=1000(euser) gid=1000(euser) groups=1000(euser)

上記の場合は、uid=1000(euser)からユーザーIDが1000であることがわかります。
ユーザーIDをEPGStationのconfig.ymlに設定します。
以下の場所を開いて下さい。~/git/docker-mirakurun-epgstation/epgstation/config

euser@pc:~$ cd ~/git/docker-mirakurun-epgstation
euser@pc:~$ docker-compose down
euser@pc:~$ cd epgstation/config

epgstationを停止してから、config.ymlを開けて、編集してください。

config.ymlを開いて、調べたユーザーidを追加してください。
例えばユーザーIDが1000ならば、「uid: 1000」と追記して保存して下さい。

編集が完了したら、epgstationを立ち上げてください。

euser@pc:~$ cd ~/git/docker-mirakurun-epgstation
euser@pc:~$ docker-compose up -d

ここで、EPGStationが立ち上がらないことがあります。

問題は、~/git/docker-mirakurun-epgstation/epgstation/logsで発生していました。
logファイルがrootで書き込まれて、アクセスができなくなっていました。
例えばログインユーザーがeuserの場合、以下のようにオーナーを変更します。

euser@pc:~$ cd ~/git/docker-mirakurun-epgstation/epgstation
euser@pc:~$ sudo chown euser -R logs

更に録画ファイルを入れるディレクトリ/media/tv_recordのオーナーをログインユーザーに変更してください。
例えばログインユーザーがeuserならば、

sudo chown euser /media/tv_record

変更後、Ububtuをリブートしてください。
問題なくシステムが立ち上がることを確認したら、EPGStationから録画を行ってください。

追加インストール情報

本記事の手順でEPGStationをインストールした後、参考になる記事は以下のとおりです。

ストレージの拡張について

トランスコードの最適化について

sambaについて

muninについて

全録サーバーについて

EPGStationのデータのバックアップとリストアについて

関連記事

コメント2件

  • 風小僧 より:

    非常に便利なスクリプトを公開してくださり、感謝しております。
    さすがに45分では無理でしたが、半日ほどで稼働できるようになりました。
    特にトラブることもなく、スムーズにインストールできました。
    あえていえば、6-installが10分で・・とありましたが、すごく長く感じられました。吐き出されているログがエラーなのかドキドキして待っていたら無事終了して感激でした。
    また、ストレージ拡張・トランスコード・samba共有の別記事(スクリプト)も役に立ちました。
    ありがとうございます。
    こんな質問は野暮なんですが、カードリーダーが邪魔で、softcasがubuntuに実装できたらいいんですが、無理ですよね!
    本当にありがとうございました。今後の有益な記事に期待しております。

  • simplelife より:

    風小僧さん

    インストールできて良かったです。

    softcasに関しては、きちんと調べたわけではありませんが、違法の可能性があったので、
    使っていません。B-CASに関しては、管理している会社そのものの権利が無効の可能性が
    高く、法律に触れない範囲で流用できるという解釈で利用しています。
    詳しくは、このブログの中でも記事にしています。
    https://www.digital-den.jp/simplelife/archives/5191/

  • コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください