google ads mobile
google ads

【mirakurun/epgstation 】PT3で録画サーバを構築する

epgrec

epgrec unaを愛用していましたが

下記の記事のように、かれこれ2015年11月から約9年近くepgrec unaを利用しつづけていましたがが何の不満もありませんでした(え

epgrec unaに移行したときの記事

epgrec unaの弱い所

細かい所を言えば以下がunaの弱点でしょうか?

  • モバイル向けにUIが最適化されていない
  • 既に開発が止まっている(個人開発だから仕方ない)

また、録画ストレージは2THDDを使用していましたが、既に90%以上の使用率でディスクの拡張を行いたいという思惑もあり、現在主流だと思われるmirakurun/epgstationで録画サーバを新規構築することにしました。

諸先輩方の記事も多いですが備忘録のために、構築ログを残しておきます。

気づいたらこのサイトの更新するの久しぶりやな・・・(最後は2020年9月19日)

mirakurun/epgstationの構築

mirakurun、epgstationとは

mirakurunは日本の番組向けのDVR(デジタル録画機)サーバであり、epgstationはmirakurunを使用した録画管理ソフトです。

GitHub - Chinachu/Mirakurun: A Modern DVR Tuner Server for Japanese TV.
A Modern DVR Tuner Server for Japanese TV. Contribute to Chinachu/Mirakurun development by creating an account on GitHub.
GitHub - l3tnun/EPGStation: Mirakurun を使用した録画管理ソフト
Mirakurun を使用した録画管理ソフト. Contribute to l3tnun/EPGStation development by creating an account on GitHub.

録画サーバを構築するには両方を導入する必要がありますが、以下のようにdocker-composeでセットで簡単に導入できます。(今はdocker composeが推奨です)

GitHub - l3tnun/docker-mirakurun-epgstation: Mirakurun + EPGStation on Docker
Mirakurun + EPGStation on Docker. Contribute to l3tnun/docker-mirakurun-epgstation development by creating an account on GitHub.

環境

下記のOS、H/Wで構築します

  • Ubuntu 22.04.4 LTS(2024年4月時点で最新のLTS)
  • 富士通 PRIMERGY TX1310 M1
    • CPU:Core i7-4770K CPU(4C/8T)
    • RAM:16GB( DDR3 1600MHz LV-Unbuffered DIMM )
    • DISK1:320GB(WDの青いやつ)
    • DISK2:6TB(WDの赤いやつ。録画データ用)
    • TVチューナー:PT3(既に終売。故障したらPLEXのやつにするかな)
    • ICカードリーダ: SCR3310

既に生産終了となっているPT3を継続するか否か、悩んだのですが、PLEXのチューナは良いお値段するので壊れたら買うこととします。

ざっと調べてみたところ、PLEXのチューナでも動くようなのでPT3をお持ちでない方はチャレンジしてみてください。

PT3の場合、同時録画は最大4ch(地デジ:2、BS/CS:2)だったと思いますのでCPUはそこまで性能要らなそうです。4Cでも行けると思います。

録画データを保存するDISKは予算の都合上6TBとしましたが、余裕がある方はもっと大容量のものでも良いと思います。

Ubuntuのインストール

OSのインストールはメインの話ではないので省略します。

  1. ISOファイルを公式サイトダウンロード(Ubuntu Server 22.04.4 LTS)
  2. EtcherなどのソフトでISOファイルをUBSメモリに書き出す
  3. PCに挿したUBSメモリからUbuntuを起動してインストール
    1. 最小構成
    2. ネットワークはお好みで(DHCPまたは固定)
    3. ストレージはシステムディスクのみ設定(この時点では追加DISKは接続していない)
    4. SSHは設定しておきましょう(セットアップ後にリモートアクセスします)

ちなみに上記OSインストール時はPT3、ICカードリーダ、追加DISKはセットアップしていません。

追加H/WはOSのセットアップが正常に完了してから接続しています。

 A start job is running for wait for network to be configured .

ちなみにUbuntuを新規構築すると必ずと言っていいほど起動するときに悩まされます。

 A start job is running for wait for network to be configured.

今回の場合、原因は2つあるNICのうち、1つは利用しないためネットワークの設定を行おうとしているらしいです(ありがた迷惑w)

再起動するたびに2分ほど待たされるので、以下のように設定変更しておきます。

ExecStartのパラメータに–igonoreを追加して不要なNIC(ここではenp0s25)を無効化します。

$ sudo vi /usr/lib/systemd/system/systemd-networkd-wait-online.service
#省略
[Service]
Type=oneshot
ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=enp0s25
RemainAfterExit=yes
#省略
Linuxサーバ起動時のsystemd-networkd-wait-onlineの待機を解除する - Qiita
概要Ubuntu Server 20.04 LTSをインストールしたワークステーションを起動するとき、Linuxカーネルが「Starting Wait for Network to be Conf…

再起動して同じメッセージが表示されて待たされないか、確認しましょう。

& sudo reboot

OSのインストールが完了したら一度停止し、追加H/Wを接続して再度起動します。

追加DISKの設定

録画データを保存するための追加HDDを設定していきます。

追加DISKを確認します。(今回は/dev/sdb。partedが無かったらaptでインストール)

$ sudo apt install parted
$ sudo parted -l
#省略
 Error: /dev/sdb: unrecognised disk label
 Model: ATA WDC WD60EFPX-68C (scsi)
 Disk /dev/sdb: 6001GB
 Sector size (logical/physical): 512B/4096B
 Partition Table: unknown
 Disk Flags:  

設定していきます。

$ sudo parted /dev/sdb

ラベルを作成

(parted) mklabel gpt

パーティションを作成

(parted) mkpart

パーティション名は空白でOK

Partition name?  []?

ファイルシステムはシステムDISKと同じext4にしました

File system type?  [ext2]? ext4

それぞれ0%と100%を指定します

Start? 0%
End? 100%

確認します。問題無さそうです

(parted) p

 Model: ATA WDC WD60EFPX-68C (scsi)
 Disk /dev/sdb: 6001GB
 Sector size (logical/physical): 512B/4096B
 Partition Table: gpt
 Disk Flags: 
 
 Number  Start   End     Size    File system  Name  Flags
  1      1049kB  6001GB  6001GB  ext4

抜けます

(parted) quit

 Information: You may need to update /etc/fstab.

パーティションの確認。問題無さげ

$ lsblk 
 NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
 sda                         8:0    0 298.1G  0 disk 
 ├─sda1                      8:1    0     1M  0 part 
 ├─sda2                      8:2    0     2G  0 part /boot
 └─sda3                      8:3    0 296.1G  0 part 
   └─ubuntu--vg-ubuntu--lv 253:0    0 296.1G  0 lvm  /
 sdb                         8:16   0   5.5T  0 disk 
 └─sdb1                      8:17   0   5.5T  0 part 
 sr0                        11:0    1  1024M  0 rom

フォーマット。partedで設定しているはずなので、不要な気もする

$ sudo mkfs.ext4 /dev/sdb1

追加DISK用のフォルダを作成

$ sudo mkdir /video3

マウントします

$ sudo mount /dev/sdb1 /video3/

確認

$ df -h
 Filesystem                         Size  Used Avail Use% Mounted on
 tmpfs                              1.6G  1.2M  1.6G   1% /run
 /dev/mapper/ubuntu--vg-ubuntu--lv  291G   11G  266G   4% /
 tmpfs                              7.8G     0  7.8G   0% /dev/shm
 tmpfs                              5.0M     0  5.0M   0% /run/lock
 /dev/sda2                          2.0G  129M  1.7G   8% /boot
 tmpfs                              1.6G  4.0K  1.6G   1% /run/user/1000
 /dev/sdb1                          5.5T   28K  5.2T   1% /video3

再起動するとマウントが外れてしまうのでfstabへ追記

$ sudo vi /etc/fstab 
#省略
/dev/sdb1 /video3 ext4 defaults 0 0

自動更新の無効化

完全ローカルで利用するし、更新は無効でええやろ(え

1から0へ変更します。

$ sudo vi /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";

docker

今回はdockerコンテナで必要ソフトをインストールします。

$ sudo apt -y install docker.io
$ sudo apt install docker-compose
$ sudo docker --version

ユーザでコマンドを実行できるように追加しておきましょう

$ sudo usermod -aG docker $USER

再起動

$ sudo reboot

その他の事前準備

UbuntuにはPT3用のドライバーが標準で入っているらしい

$ sudo ls /dev/dvd

必要そうなパッケージ

$ sudo apt install -y dkms git
$ sudo apt install dvb-tools
$ sudo apt install curl
$ sudo apt install vim

ICカードリーダをインストール

$ sudo apt install -y libpcsclite-dev pcscd pcsc-tools libccid

確認

$ pcsc_scan

ホストOS側のICカードリーダは停止しておく必要がある

$ sudo systemctl stop pcscd.socket
$ sudo systemctl disable pcscd.socket
$ sudo systemctl status pcscd

mirakurun/epgstationのインストール

公式の通りにgithubから持ってくるだけです

$ curl -sf https://raw.githubusercontent.com/l3tnun/docker-mirakurun-epgstation/v2/setup.sh | sh -s 

事前にチャンネル設定をしておきます。ご自宅の環境に合わせて適宜変更してください。

我が家は横浜のケーブルテレビなのでちょっと変則的になっています(BS/CSは見ない)

$ cd docker-mirakurun-epgstation/
$ sudo vi mirakurun/conf/channels.yml

- name: フジテレビ
  type: GR
  channel: '21'

- name: TBS
  type: GR
  channel: '22'

- name: テレビ東京
  type: GR
  channel: '23'

- name: テレビ朝日
  type: GR
  channel: '24'

- name: 日テレ
  type: GR
  channel: '25'

- name: NHKEテレ・東京
  type: GR
  channel: '26'

- name: NHK総合・東京
  type: GR
  channel: '19'

- name: テレビ神奈川
  type: GR
  channel: '18'

追加ディスクを録画データの保存先に変更(volumesの/app/recordedのところ)

$ vi docker-compose.yml

#省略
    epgstation:
        build:
            context: "./epgstation"
            dockerfile: "debian.Dockerfile"
        volumes:
            - ./epgstation/config:/app/config
            - ./epgstation/data:/app/data
            - ./epgstation/thumbnail:/app/thumbnail
            - ./epgstation/logs:/app/logs
            - /video3:/app/recorded
#省略

コンテナを起動。(初回はイメージ作成のため5分~10分くらいかかる)

$ docker-compose up -d

確認

$ docker ps -a
CONTAINER ID   IMAGE                                    COMMAND                  CREATED       STATUS       PORTS                                                                                      NAMES
f44a67e65a37   docker-mirakurun-epgstation_epgstation   "npm start"              4 hours ago   Up 4 hours   0.0.0.0:8888-8889->8888-8889/tcp, :::8888-8889->8888-8889/tcp                              docker-mirakurun-epgstation_epgstation_1
74d11fd71172   mariadb:10.5                             "docker-entrypoint.s…"   4 hours ago   Up 4 hours   3306/tcp                                                                                   docker-mirakurun-epgstation_mysql_1
644ec275f5c9   chinachu/mirakurun                       "docker-entrypoint.s…"   4 hours ago   Up 4 hours   0.0.0.0:9229->9229/tcp, :::9229->9229/tcp, 0.0.0.0:40772->40772/tcp, :::40772->40772/tcp   docker-mirakurun-epgstation_mirakurun_1

mirakurun/epgstation へのアクセス

mirakurun

OS設定時の「IPアドレス:40772」でブラウザでアクセス。

下記のIPは例です。

http://192.168.1.200:40772/

epgstation

OS設定時の「IPアドレス:8888」でブラウザでアクセス。

下記のIPは例です。

http://192.168.1.200:8888/

ひとまず、ほぼデフォルトの設定ですが録画サーバの構築は完了しました。

録画も問題無く可能でした。

使い方やカスタマイズは後日に遊んでみます。

ひとまずの感想

  • スマホから見やすいUIが嬉しい
  • VLCメディアプレーヤなどのアプリを利用せずブラウザでそのまま視聴できるの便利すぎる
  • 字幕がちゃんと表示される(デフォルトのTSファイル)
  • リアルタイム視聴もできる

まとめ

  • 録画システムも進化している
  • docker便利すなぁ
  • epgrec無印から使っているオジサンからすると進化の度合いがえげつない

嫁「もっと早くに入れて欲しかった」

ワイ「(面倒くさかったなんて言えない)」

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