【完全解説】LinuxとPX-W3U4でEPGStation v2を構築する方法(PX-Q3U4/W3PE4/Q3PE4)

自宅サーバー
スポンサーリンク

本記事では、現時点で最新のEPGStation v2およびMirakurun 3.5.0を使ってLinux&Docker&PX-W3U4で録画サーバを構築する手順を解説します。

私

おひさしぶりです

半年程前にも録画サーバの構築手順を記事にしましたが、ソフトウェアのバージョンが上がったことで手順に乖離がありましたので記事をアップデートしました。

私が普段利用するうえではもはや何も問題ないくらいソフトウェアの品質は安定しています。

Linuxで録画サーバを構築したい方、現行のEPGStationとMirakurunで構築したい方、TS抜きしたい方は、本記事を参考にしてください。

私

長い記事ですが、最後までお付き合いよろしくお願いします

サーバ環境

今回、私が構築したベースマシンはECS LIVA Z n4200です。

ECS 小型デスクトップパソコン LIVAZ-8/240-W10Pro(N4200)TS

チューナーはPX-W3U4です。

その他サーバ周辺機器やソフトウェア構成は以下の通りです。

ハードウェア

  • Linuxサーバ
    • ECS LIVA Z(n4200)CPU n4200 (QSV/vaapiに対応)
      • eMMC 64GB
      • 拡張ストレージ SSD 120GB(録画領域。外付けHDDでも可)
      • メモリ 16GB(4GB以上あれば安心です)
  • 地デジ・BS/CSチューナー
    • PLEX PX-W3U4
      • 4番組同時録画(地デジ×2、BS/CS×2)が可能です(W3PE4や8番組同時録画可能なプレクス社のpx-w3q4でもOK)
  • B-cas対応 ICカードリーダー
    • NTTコミュニケーションズ SCR3310-NTTCom
      • LinuxだとPX-W3U4内臓のカードリーダーが使えないので別途カードリーダを準備します

上記の不足するものがあれば、事前にご用意ください。

NTTコミュニケーションズ 接触型ICカードリーダー・ライター e-Tax Win&Mac対応 SCR3310-NTTCom

今回の手順は以下のテレビチューナー製品に対応しています。

本記事の手順に対応するチューナー製品

<Plex>
・PX-Q3PE
・PX-W3PE
・PX-Q3U4
・PX-W3U4

https://s0.wordpress.com/mshots/v1/http%3A%2F%2Fwww.plex-net.co.jp%2F?w=160&h=90

<e-Better>
・DTV02-1T1S-U (実験的)

私

お好みの製品をご使用ください。

なお、本手順はPX-W3U4(USB接続タイプ)を前提としています。

サーバーはLinuxが導入できる機種であれば問題ありません。

ただし、私の経験上Raspberry pi 3B+だと性能的に動作が安定しませんでした(rpi4は未検証)。

以前Tinker board Sで録画サーバを構築しようとしましたが2番組以上の同時録画でノイズが出てしまいましたので、常時起動の録画サーバにする場合は、性能的に余裕を持たせた機種を使うことをオススメします。

未検証ですがRaspberry pi 4で構築できるという報告も多数あがっています。

PLEX 地上デジタル・BS・CS対応8チャンネルマルチTVチューナー PX-MLT8PE

私

私も次はラズパイで構築してみようかしら

Raspberry Pi 4 Model B /ラズベリーパイ4B(8GB RAM)技適マーク付/MicroSDHCカード128GB 一式セット

ソフトウェア

  • OS
    • ubuntu 18.04 LTS
      • raspbian等、Debian系OSなら同じ手順で実施できます
      • CentOS等、Redhat系OSでも導入可能です(ドライバ導入手順は一部読み替えて実施する必要あり)
  • ミドルウェア
    • Docker
    • docker-compose
    • git
    • samba
      • 必須ではないですが、あった方が便利です。

参考記事

sambaは録画システム構築に必須ではありませんが、Windowsのエクスプローラから参照できた方が便利かと思いますので、事前に入れておいた方が良いです。

dockerを使ったsambaの構築方法は以下の記事を参考にしてください。

sambaはKODIと連携する際にも便利です。

外出中にスマホから録画予約をしたい場合は以下の記事が参考になるかもしれません。

コメント

  1. simplelife0530 より:

    こもねさん

    素早い対応ありがとうございました。
    私のブログでも、こちらをリンクさせていただきます。

    • こもね より:

      >simplelife0530さん
      お待たせしてすみません。
      こちらこそ、ご指摘いただいたおかげで記事にすることができました。
      私の記事で良ければどなたでも自由にリンクを貼ってくださって結構です。

      引き続きどうぞよろしくお願いいたします!

  2. yup より:

    こもねさん

    初めまして。録画サーバーを構築したいと思いこの記事に辿りつきました。
    記事の通り進めているつもりですがEPGStationのビルドでつまってしまいました。相談などさせてもらってよろしいでしょうか?

    • こもね より:

      どーぞ:)

      • yup より:

        当方、macにてターミナルで色々試したことはありますがOSとしてlinuxを使うのは初めてです。
        今回、録画サーバーを実現したく、新たにPCを組んで取り組んでいます。

        CPU: Intel Core i3 10100
        マザーボード: ASRock H410M-HDV/M.2

        OS: ubuntu-ja-20.04.1-desktop-amd64 (日本語リミックス)

        新規にクリーンインストールしています。

        完全にこちらの記事に従って構築を進めました。(“ubuntu 18.04 LTSにDockerとdocker-composeを簡単にインストールする方法”も行なっています。)

        一点、途中、emacsが見つからなく、インストールを別途行なっています。

        そんな感じでビルドまで来て実行したところ、エラーが出てうまく行きません。

        以下、エラーの内容です。

        npm WARN saveError ENOENT: no such file or directory, open ‘/app/package.json’
        npm notice created a lockfile as package-lock.json. You should commit this file.
        npm WARN enoent ENOENT: no such file or directory, open ‘/app/package.json’
        npm WARN app No description
        npm WARN app No repository field.
        npm WARN app No README data
        npm WARN app No license field.

        up to date in 0.655s
        found 0 vulnerabilities

        npm ERR! code ENOENT
        npm ERR! syscall open
        npm ERR! path /app/package.json
        npm ERR! errno -2
        npm ERR! enoent ENOENT: no such file or directory, open ‘/app/package.json’
        npm ERR! enoent This is related to npm not being able to find a file.
        npm ERR! enoent

        npm ERR! A complete log of this run can be found in:
        npm ERR!     /root/.npm/_logs/2021-03-15T12_27_46_251Z-debug.log
        ERROR: Service ‘mirakurun’ failed to build: The command ‘/bin/sh -c apt-get update &&     apt-get upgrade -y &&     apt-get install -y –no-install-recommends build-essential &&     npm install &&     npm run build &&     npm install -g –unsafe-perm –production’ returned a non-zero code: 254
        $

        apt-utils, npm, node.jsもインストールしてみましたが同様の結果となります。
        本当に何から何まで頼りきりで、質問の仕方もよくわかっておりませんが、何卒ご教示いただければと思います。

        • こもね より:

          >yupさん

          記事の手順の通りにしてうまく行かないということでしょうか?
          エラーの内容を見ると /app/package.json が無いと怒られているのですが、gitリポジトリからダウンロードしたMirakurunを使用されていますか?

  3. yup より:

    >こもねさん

    ありがとうございます。
    ほんとうにお恥ずかしいですが、Mirakurunをダウンロードするディレクトリが間違っていました。正しい場所にインストールし、今度は止まることなくプロンプトが返って来、無事ビルドは終了したと思います。

    しかし、また詰まってしまいました。
    EPGstationのURLを開こうとしても、「正常に接続できませんでした。」と接続できません。

    -Firefoxにて開こうとしています。
    -ルータ関係全く設定していません。
    -ipアドレスはこのpcの192.168….のものを入れています。

    本当に基礎的なことかもしれませんが、何か心当たりあればお願いします。

    • こもね より:

      >yupさん

      問題は解決しましたでしょうか?

      • yup より:

        ご無沙汰しております。
        やはりあまりにもlinuxのことがわかっていなかったので一から勉強しながらやっております。
        もう少し理解が深まってから挑戦させていただきたいと思います。
        おさわがせしてすいませんでした。

        • こもね より:

          >yupさん

          返信ありがとうございます。
          この記事を参考にしてうまく行っている方は多くいらっしゃるので、yupさんもきっとできると思います。
          分からないところをここで質問するのは、私は問題ないと思っています。
          状況を詳細に(どこで詰まっていて、どんな状態なのか、どうしようとしたのか等)示してもらえれば、私含め答えられる方が答えてくれると思いますよ。
          頑張ってください:)

  4. つよぽん より:

    Plex PX-MLT8PE(8ch チューナー)を使用して
    本記事を参考にさせて頂き、デバイスに関わる部分の変更のみで
    無事構築することができました。
    ありがとうございました。

    • こもね より:

      >つよぽんさん
      嬉しいご報告ありがとうございます!

      そのように言って頂けると、自分の記事がお役に立てたようで私も嬉しいです:)

  5. すた より:

    本記事を参考にし、PX-Q3U4を使って録画システムを構築することができました。
    ありがとうございます。

    前回も本サイトを参考にDockerを使わない方法で構築していました。
    rivarunを使って録画をしていたのですが、今回の記事での構築でもコマンドをrivarunを使って録画することができるのでしょうか。

    • こもね より:

      >すたさん
      この記事たお役に立てたようで何よりです。

      rivarunはDockerで構築した場合はつかえません。
      コンテナ内にインストールすれば使えると思います、が、、、rivarun必要ですか?

      • すた より:

        こもねさん、返信ありがとうございます。

        使えないんですね…
        現在、rivarunを使って24時間録画をしています。
        Dockerでも同じことができたら他のマシンへの移植が楽になるのではないかと思い現在テストを行っていてこのような質問をさせていただきました。

        Dockerを触るのが初めてなもので変な質問になってしまって申し訳ありません。
        コンテナ内にインストールすれば使えるかも、ということなので作業してみます。

        EPGStationでも時刻指定録画があるということを知ったのでこちらも併せて確認してみたいと思います。

        • すた より:

          コンテナの中に入ってインストールコマンドを叩いてみましたがエラーになってしまいました。何か根本的に間違っているような気がしています。

          docker exec -i -t 649a237e4af0 /bin/bash

          rivarunインストール
          root@649a237e4af0:/app# npm install rivarun -g
          root@649a237e4af0:/app# npm install -g npm

          確認
          root@649a237e4af0:/app# rivarun –list
          Error: connect ENOENT /var/run/mirakurun.sock

          EPGStationで時刻指定の録画できました。
          設定等まだまだ不明な点が多いですがこちらを利用したほうが後々便利そうですね。

          • こもね より:

            >すたさん
            リコメントありがとうございます。
            私がすたさんのrivarun活用法を理解していないので何とも言えませんが、EPGStation(MirakurunのAPI経由)で録画できるならその方がいいような気がします。

            また、rivarunのインストールについて、想像でコメントしますが、
            epgstationのコンテナにインストールしようとしていませんか?

            Mirakurunのコンテナならうまく行きそうな気がしなくもないです。
            docker exec -it mirakurun-3.5.0 npm install rivarun -g

            取り急ぎ。

          • すた より:

            こもねさん、返信ありがとうございます。
            (コメントに返信できなかったのでこちらで)

            > epgstationのコンテナにインストールしようとしていませんか?
            仰る通りでした。お恥ずかしい。

            docker exec -it mirakurun-3.5.0 npm install rivarun -g

            このコマンドでコンテナ内にインストールすることができ、ホストマシンから録画コマンドが使用可能となりました。

            本当にありがとうございました。

          • こもね より:

            >すたさん
            どういたしまして、うまく行ってよかったです

            差し支えなければすたさんのrivarun活用法を共有してもらえると嬉しいです

          • すた より:

            >こもねさん
            24時間録画して好きな時に好きな番組を見るというような使い方をしています。
            コマンドはこんな感じです。

            docker exec mirakurun-3.5.0 rivarun –b25 –sid XXXX –ch GR/XX 86400 録画ファイル名

            で、全く関係ないのですが2つのログファイルがコンテナ内に見るけられませんでした。これは別で設定しないと作成されないのでしょうか。
            mirakurun.stderr.log
            mirakurun.stdout.log

            ~$ docker exec -i -t mirakurun-3.5.0 bash
            :/app# find / -name *mirakurun*
            /run/mirakurun.sock
            /app/bin/munin-plugins/mirakurun_status.js

          • すた より:

            >こもねさん
            連投すみません、docker-composeでログファイル取得できました。

            ~/docker/docker-mirakurun-epgstation$ docker-compose logs | grep mirakurun-3.5.0

          • こもね より:

            >すたさん
            返信ありがとうございます。
            rivarunで24時間録画してるんですね。
            録画しっぱなしで良いなら、Mirakurunとチューナを分けてrecpt1を直に叩いても良さそうですね。

            というか、それだと24時間の録画ファイルができませんか・・・?
            EPGStationならキーワードを指定せず放送局だけ指定したルールを作れば、番組毎にファイルを分けて録画できそうです(未検証)。

            私は録画番組が消化不良気味なので、録画番組を増やすとエラいことになりそうです。

            > 連投すみません、docker-composeでログファイル取得できました。
            > ~/docker/docker-mirakurun-epgstation$ docker-compose logs | grep mirakurun-3.5.0
            docker-composeでログを見る場合は、docker-compose logs <サービス名> で見られますよ。   
            $docker-compose logs mirakurun

          • すた より:

            >こもねさん
            いつもありがとうございます。

            > 録画しっぱなしで良いなら、Mirakurunとチューナを分けてrecpt1を直に叩いても良さそうですね。
            そう思って今試していますが、エラーが出てしまって録画ファイルを再生すると、映像が真っ暗で音が出ない状況になっています。
            ワンセグ放送は映るのでデコードの問題なような気はしているのですが設定箇所がわからずつまずいてしまっています。

            $ docker exec mirakurun-3.5.0 recpt1 –device /dev/px4video11 –sid 1024 –b25 27 30 /media/HDD2/TEST/TEST.m2ts
            using device: /dev/px4video11
            recpt1: unrecognized option ‘–b25’
            pid = 4286
            device = /dev/px4video11
            C/N = 33.271662dB
            Recording…
            Available sid = 1024 1025 1408 65520
            Chosen sid = 1024
            Available PMT = 0x1f0 0x3f0 0x1fc8 0x1cf0
            Recorded 30sec

            カードリーダーへのアクセスできないかと思い、コンテナ内で以下コマンドを実行して確認しましたが問題なさそうです。

            :/app# pcsc_scan
            (略)
            Japanese Chijou Digital B-CAS Card (pay TV)

            > docker-composeでログを見る場合は、docker-compose logs <サービス名> で見られますよ。   
            > $docker-compose logs mirakurun
            コマンドありがとうございます。

          • こもね より:

            >すたさん
            返信ありがとうございます。

            おそらく、Mirakurunコンテナ内にarib25ライブラリ(libarib25)がインストールされていないのと、recpt1のb25のオプションが有効になっていないためだと思います。

            以下の記事を参考にしてください。
            https://komone-life.com/2020/05/06/how-to-install-epgstation-bcas/#libarib25
            https://komone-life.com/2020/05/06/how-to-install-epgstation-bcas/#recpt1

          • すた より:

            >こもねさん
            返信ありがとうございます。

            こちらの記事を参考にコマンドが実行できるようになりました。
            https://komone-life.com/2020/05/06/how-to-install-epgstation-bcas/#libarib25
            https://komone-life.com/2020/05/06/how-to-install-epgstation-bcas/#recpt1

            ありがとうございました。
            EPGStation使いたい…

          • こもね より:

            >すたさん
            ご報告ありがとうございます。
            うまくいってよかったです:)

  6. taro より:

    参考にさせていただいております。
    raspberry pi4 raspbianで手順通り実行し、
    docker-compose pull && docker-compose build –no-cache && docker-compose up -d
    Pulling mirakurun … done
    Pulling mysql …
    Pulling epgstation … done

    ERROR: for mysql no matching manifest for unknown in the manifest list entries
    ERROR: no matching manifest for unknown in the manifest list entries

    と出ます。どうすればよろしいでしょうか?

    • こもね より:

      >taroさん
      mariadbのimageがラズパイに対応してなさそうですね。
      私はラズパイ4を持っていないですが、

      私だったら、docker-compose.ymlの40行目
          image: mariadb:10.4

          image: linuxserver/mariadb
      に書き換えて試してみます
      (ヨソのブログでは別のやり方をしているみたいですが)

      試していただいて、結果を教えていただけないでしょうか?

  7. taro より:

    お返事ありがとうございます。
    書き換えてみたところ
    + mirakurun@3.5.0
    added 1 package from 2 contributors in 6.333s
    Removing intermediate container 501aeb632af0
    —> 49f5dd86278b
    Step 7/13 : FROM ${ARCH}node:14.15.4-buster-slim
    ERROR: Service ‘mirakurun’ failed to build: Get https://registry-1.docker.io/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
    となって止まってしまいました

    • こもね より:

      また別のところでエラーが出てるみたいですケド、
      そのエラーは修正を戻したら無くなりますか?

      • taro より:

        Successfully built 14745eaebf31
        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
        Pulling mysql (mariadb:10.4)…
        10.4: Pulling from library/mariadb
        ERROR: no matching manifest for unknown in the manifest list entries

        エラーになります

        • こもね より:


          実行したコマンドくらい書きましょう
          何をどうしたときのログなのか、ログの抜粋なのか全てなのか、何を知りたいのか、情報が少なすぎてサッパリわかりません・・

          エラーの切り分けをして頂きたかったのですが、docker-compose.ymlを修正して同じコマンドを打っただけじゃないですよね?
          imageとvolumeは削除していますでしょうか?

  8. taro より:

    すみません
    docker-compose.ymlを修正して同じコマンドを打っただけです
    適当に試してみます。ありがとうございました。

  9. 龍山 より:

    お世話になります。メルカリでPX-Q3PEを売ってPX-Q3PE4を購入しました。貴サイトを100%コピーさせていただき簡単に構築出来ました。次はCMカットに挑戦しようとtobitti0
    さのサイト「UbuntuのEPGStation_v2でCMカットエンコードする。」を参考して何度かやってみましたがこちらのサイトみたいに解説が親切でないのでうまくいかないのであきらめました。こもねさんの方で是非記事にしていただければありがたいと思います。

    • こもね より:

      >龍山さん
      おめでとうございます、この記事が役に立ててよかったです:)

      記事の執筆依頼については大変ありがたいお言葉です。
      是非ともご要望に応えたいのですが、現状プライベートが忙しくて時間が確保できないので今すぐの対応は難しいです。
      大変心苦しいですが、余裕ができたときにまだ需要がありそうなら検討させて頂きますm_ _m

      せっかくご依頼いただいたのに、ご期待に沿えず本当に申し訳ございません。

  10. sss より:

    PX-MLT8PEを購入し、OpenMediaVault(Debian系NAS用OS)にてMirakurun構築を図っております。

    OMVだと簡単にmergerFS(複数ドライブ内のフォルダを固めて一つの大きなフォルダにし、ドライブが死んでもデータのみが死にプールは使い続けられる)とSnapRAID(複数ドライブのパリティを取得することでその時点のバックアップを取れる。二回目以降は差分のみなので軽量)を構築出来、WebUIから再起動等を行えるため録画サーバに便利そうです。

    PX-MLT8PEはPX-W3U4と同じドライバから行けそうですし、OMVも一応Debian系なのでこちらのサイトを参考に入れてみようと思います。

    最近はQSVやNVENCでのHEVCエンコードも高速みたいですし、そういう記事もあると便利そうです。
    ffmpegのパラメータ解説とか。

  11. sss より:

    何故かOpenMediaVaultだとWindowsにマウントできません。
    メリット(WebUIが充実している、待機時は超軽量、プラグインが多い)もあるので、こもねさんに解説記事を書いてほしいです。

    • こもね より:

      >sssさん
      コメントありがとうございます。
      PX-MLT8PEでのセットアップ、是非やってみて結果を教えてください:)

      Windowsにマウントできません。

      というのは、どういう状態でしょう?
      Dockerを使ったsamba構築方法も記事にしていますので、よかったらそちらも参考にしてみてください(Dockerなので環境を汚すことなく現状復帰も容易です)。
      https://komone-life.com/2020/03/08/how-to-install-samba/

      OpenMediaVaultは需要があれば&気が向いたとき&時間ができたときに記事にしてみますw
      (私はsambaに慣れているのでOpenMediaVaultにあまり必要性を感じていないのですが、これはジェネレーションギャップというやつでしょうか・・)

  12. sss より:

    OMVが良いのは
    ・OS本体の導入が簡単であること
    ・最初からSAMBAが有効であること
    ・WebUIからディスクのマウントやフォーマットが行えること
    ・プラグインが豊富でWebUIから導入可能であること
    ・最初からデスクトップを持っていないため軽量であること
    でしょうか。

    OSの導入に関してはUbuntu Serverと同じく回答するだけですし、
    ラズパイ用もあります。
    WebUIに関しては再起動やCPU使用率ログ等が便利です。
    プラグインはmergerFSやSnapRAID以外に、「OSはSSD/USBメモリから起動してRAMディスクに置いておき、変更は一旦RAMディスクに対して行い、後でまとめてSSD/USBメモリに書き込むことでフラッシュの延命を図る」みたいなのもあります。
    インストール時のOS使用量が2GB、メモリも数百MBほどでした。
    超高速長寿命のOptaneMemory16GBで使えます。

    が、最初から有効なはずのSAMBAがうまくいっておらず、「共有フォルダが見えるものの0x80070032で接続不可」となっております。
    OMVがNTFSの読み書きは可能なもののフォーマットが出来ないため、Windows10でフォーマットしたものをつなげてマウントしたのが悪いかもしれません。WebUIにてext4でフォーマットしてみようと思います。

    OMV(Mirakurun)→ PC(EPGStation/Plex)
    OMV (NAS)     ← PC(EPGStation/Plex)
    を試してみようと思います。

    PCはWindowsにてNVEncでHEVC(2pass)エンコードしていますが、VAAPI経由で同レベルまで綺麗にエンコードできそうならもう全部まとめてしまおうと思います。

    とりあえずext4でのフォーマットと、PX-MLT8PEのインストールやってみます。
    詰まったところ、工夫して解消できたところはここに書いておきます(他の人のために)

  13. sss より:

    EXT4化で読み書きできるようになりました。mergerFSはいったん置いておき、Mirakurunインストールです。

    インストール時に
    /usr/lib/gcc/x86_64-linux-gnu/8/include/stdint.h:9:16: fatal error: stdint.h: そのようなファイルやディレクトリはありません
    # include_next
    というエラーが出ていたため、
    apt install build-essential
    しました。

    流れの中でunzipが必要だったのでapt install unzipしました。

    次はDockerファイルの話になると思います。

タイトルとURLをコピーしました